Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Threema/ThreemaFrameworkTests/   (Social Medium ©)  Datei vom 26.9.2026 mit Größe 5 kB image not shown  

Quelle  WallpaperStoreTest.swift   Sprache: JAVA

 

import FileUtility
import RemoteSecretProtocolTestHelper
import XCTest
@testable import ThreemaFramework

final class WallpaperStoreTest: XCTestCase {

    // MARK: - Setup

    private let wallpaperStore = WallpaperStore(fileUtility: FileUtility())

    private var conversation1: ConversationEntity!
    private var conversationID1: NSManagedObjectID!

    private var conversation2: ConversationEntity!
    private var conversationID2: NSManagedObjectID!
    
    private var testDatabase: TestDatabase!
    private var entityManager: EntityManager!
    
    private let testImageURL1 = Bundle(for: WallpaperStoreTest.self)
        .url(forResource: "Bild-8", withExtension: "png")!
    private let testImageURL2 = Bundle(for: WallpaperStoreTest.self)
        .url(forResource: "Bild-8", withExtension: "png")!
    private var testImage1: UIImage!
    private var testImage2: UIImage!

    override func setUpWithError() throws {
        AppGroup.setGroupID("group.ch.threema")

        testDatabase = TestDatabase()
        entityManager = testDatabase.entityManager

        // Workaround to ensure remote secret is initialized
        AppLaunchManager.shared.setRemoteSecretManager(testDatabase.remoteSecretManagerMock)

        conversation1 = createConversation(
            id: "abcdefgh",
            unreadMessageCount: 0,
            category: .default,
            visibility: .default
        )
        conversationID1 = conversation1.objectID
        
        conversation2 = createConversation(
            id: "abcdefg2",
            unreadMessageCount: 0,
            category: .default,
            visibility: .default
        )
        conversationID2 = conversation2.objectID
        
        let data1 = try! Data(contentsOf: testImageURL1)
        testImage1 = UIImage(data: data1)!
        let data2 = try! Data(contentsOf: testImageURL2)
        testImage2 = UIImage(data: data2)!
    }

    private func createConversation(
        id: String,
        unreadMessageCount: Int,
        category: ConversationEntity.Category,
        visibility: ConversationEntity.Visibility
    ) -> ConversationEntity {
        var contact: ContactEntity!
        var conversation: ConversationEntity!

        let databasePreparer = testDatabase.preparer
        databasePreparer.save {
            contact = databasePreparer.createContact(publicKey: Data([1]), identity: id)

            conversation = databasePreparer.createConversation(
                typing: false,
                unreadMessageCount: unreadMessageCount,
                category: category,
                visibility: visibility
            ) { conversation in
                conversation.contact = contact
            }
        }

        return conversation
    }

    override func tearDownWithError() throws {
        wallpaperStore.deleteAllCustom()
    }

    // MARK: - Tests
    
    func testSaveDefaultWallpaper() {
        // Arrange & Act
        wallpaperStore.saveDefaultWallpaper(testImage1)
        
        // Assert
        XCTAssertEqual(wallpaperStore.wallpaper(for: conversationID1)?.pngData(), testImage1.pngData())
    }
    
    func testSaveWallpaper() {
        // Arrange
        wallpaperStore.saveDefaultWallpaper(testImage1)
        
        // Act
        wallpaperStore.saveWallpaper(testImage2, for: conversationID1)
        
        // Assert
        XCTAssertEqual(wallpaperStore.wallpaper(for: conversationID2)?.pngData(), testImage1.pngData())
        XCTAssertEqual(wallpaperStore.wallpaper(for: conversationID1)?.pngData(), testImage2.pngData())
    }
    
    func testHasCustomWallpaper() {
        // Arrange & Act
        wallpaperStore.saveDefaultWallpaper(testImage1)
        wallpaperStore.saveWallpaper(testImage2, for: conversationID1)
        
        // Assert
        XCTAssertTrue(wallpaperStore.hasCustomWallpaper(for: conversationID1))
        XCTAssertFalse(wallpaperStore.hasCustomWallpaper(for: conversationID2))
    }
    
    func testDeleteCustomWallpaper() {
        // Arrange
        wallpaperStore.saveDefaultWallpaper(testImage1)
        
        // Act
        wallpaperStore.saveWallpaper(testImage2, for: conversationID1)

        XCTAssertEqual(wallpaperStore.wallpaper(for: conversationID1)?.pngData(), testImage2.pngData())

        wallpaperStore.deleteWallpaper(for: conversationID1)
        
        // Assert
        XCTAssertEqual(wallpaperStore.wallpaper(for: conversationID2)?.pngData(), testImage1.pngData())
        XCTAssertEqual(wallpaperStore.wallpaper(for: conversationID1)?.pngData(), testImage1.pngData())
    }
    
    func testDeleteAllCustomWallpaper() {
        // Arrange
        wallpaperStore.saveDefaultWallpaper(testImage1)
        
        // Act
        wallpaperStore.saveWallpaper(testImage2, for: conversationID1)
        wallpaperStore.saveWallpaper(testImage2, for: conversationID2)

        XCTAssertEqual(wallpaperStore.wallpaper(for: conversationID1)?.pngData(), testImage2.pngData())
        XCTAssertEqual(wallpaperStore.wallpaper(for: conversationID2)?.pngData(), testImage2.pngData())

        wallpaperStore.deleteAllCustom()
        
        // Assert
        XCTAssertEqual(wallpaperStore.wallpaper(for: conversationID1)?.pngData(), testImage1.pngData())
        XCTAssertEqual(wallpaperStore.wallpaper(for: conversationID2)?.pngData(), testImage1.pngData())
    }
}

Messung
CHZG
869410093

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.