Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Impressum Collection+ContactTests.swift   Sprache: JAVA

 

import ThreemaEssentials
import XCTest

@testable import ThreemaFramework

final class CollectionContactTests: XCTestCase {

    var databasePreparer: TestDatabasePreparer!

    override func setUpWithError() throws {
        AppGroup.setGroupID("group.ch.threema")
        
        let testDatabase = TestDatabase()
        databasePreparer = testDatabase.preparer
    }
    
    func testSortedContacts() {
        
        var contacts = [Contact]()
        
        databasePreparer.save {
            let contact1 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC01"
            )
            contact1.setFirstName(to: "Yeung", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact1))

            let contact2 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC02"
            )
            contact2.publicNickname = "Yeung"
            contacts.append(Contact(contactEntity: contact2))

            let contact3 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC03"
            )
            contact3.setFirstName(to: "Ye", sortOrderFirstName: true)
            contact3.setLastName(to: "ung", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact3))

            let contact4 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC04"
            )
            contacts.append(Contact(contactEntity: contact4))
            
            let contact5 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC05"
            )
            contact5.setLastName(to: "Yeung", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact5))

            let contact6 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC06"
            )
            contacts.append(Contact(contactEntity: contact6))
            
            let contact7 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC07"
            )
            contact7.setFirstName(to: "Ye", sortOrderFirstName: true)
            contact7.setLastName(to: "un", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact7))

            let contact8 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC08"
            )
            contact8.publicNickname = "Yeung"
            contacts.append(Contact(contactEntity: contact8))

            let contact9 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC09"
            )
            contact9.setFirstName(to: "Yeung", sortOrderFirstName: true)
            contact9.setLastName(to: "Yeung", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact9))

            let contact10 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC10"
            )
            contact10.setLastName(to: "Yeung", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact10))

            let contact11 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC11"
            )
            contact11.setFirstName(to: "Yeung", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact11))

            let contact12 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC12"
            )
            contact12.setFirstName(to: "Ye", sortOrderFirstName: true)
            contact12.setLastName(to: "un", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact12))

            let contact13 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC13"
            )
            contact13.setFirstName(to: "Yeung", sortOrderFirstName: true)
            contact13.setLastName(to: "Yeung", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact13))

            let contact14 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC14"
            )
            contact14.setFirstName(to: "Yeu", sortOrderFirstName: true)
            contact14.setLastName(to: "ng", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact14))
        }
        
        let userSettings = UserSettingsMock()
        
        // Run first name order
        
        let sortedContactsFirstName = contacts.sorted(with: userSettings)

        // Validate

        let expectedIDOrderFirstName = [
            "CONTAC07", // Ye un
            "CONTAC12", // Ye un
            "CONTAC03", // Ye ung
            "CONTAC14", // Yeu ng
            "CONTAC01", // Yeung (first)
            "CONTAC11", // Yeung (first)
            "CONTAC05", // Yeung (last)
            "CONTAC10", // Yeung (last)
            "CONTAC02", // Yeung (nick)
            "CONTAC08", // Yeung (nick)
            "CONTAC09", // Yeung Yeung
            "CONTAC13", // Yeung Yeung
            "CONTAC04", // CONTACT4
            "CONTAC06", // CONTACT6
        ]

        XCTAssertEqual(expectedIDOrderFirstName.count, sortedContactsFirstName.count)
        XCTAssertEqual(expectedIDOrderFirstName, sortedContactsFirstName.map(\.identity.rawValue))

        // Run last name order

        userSettings.sortOrderFirstName = false
        let sortedContactsLastName = contacts.sorted(with: userSettings)

        // Validate

        let expectedIDOrderLastName = [
            "CONTAC14", // ng Yeu
            "CONTAC07", // un Ye
            "CONTAC12", // un Ye
            "CONTAC03", // ung Ye
            "CONTAC05", // Yeung (last)
            "CONTAC10", // Yeung (last)
            "CONTAC01", // Yeung (first)
            "CONTAC11", // Yeung (first)
            "CONTAC02", // Yeung (nick)
            "CONTAC08", // Yeung (nick)
            "CONTAC09", // Yeung Yeung
            "CONTAC13", // Yeung Yeung
            "CONTAC04", // CONTACT4
            "CONTAC06", // CONTACT6
        ]

        XCTAssertEqual(expectedIDOrderLastName.count, sortedContactsLastName.count)
        XCTAssertEqual(expectedIDOrderLastName, sortedContactsLastName.map(\.identity.rawValue))
    }
    
    func testSortedContactsWithSpecialCharacters() {
        var contacts = [Contact]()
        
        databasePreparer.save {
            let contact1 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC01"
            )
            contact1.setLastName(to: "Müller", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact1))

            let contact2 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC02"
            )
            contact2.setLastName(to: "Muller", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact2))

            let contact3 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC03"
            )
            contact3.setLastName(to: "ábenā", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact3))

            let contact4 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC04"
            )
            contact4.setLastName(to: "Abena", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact4))

            let contact5 = databasePreparer.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: Int(32))!,
                identity: "CONTAC05"
            )
            contact5.setLastName(to: "Mueller", sortOrderFirstName: true)
            contacts.append(Contact(contactEntity: contact5))
        }
        
        let userSettings = UserSettingsMock()
        
        // Run first name order
        
        let sortedContactsFirstName = contacts.sorted(with: userSettings)

        // Validate

        let expectedIDOrderFirstName = [
            "CONTAC04", // Abena
            "CONTAC03", // ábenā
            "CONTAC05", // Mueller
            "CONTAC02", // Muller
            "CONTAC01", // Müller
        ]

        XCTAssertEqual(expectedIDOrderFirstName.count, sortedContactsFirstName.count)
        XCTAssertEqual(expectedIDOrderFirstName, sortedContactsFirstName.map(\.identity.rawValue))
    }
}

Messung
CHZG
1009610098

¤ Dauer der Verarbeitung: 0.10 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1104842
#Domains=499078