AlphabetIndexTest.swift
67 lignes · 2800 octets
import XCTest @testable import Card2vcf final class AlphabetIndexTest: XCTestCase { private func contact( _ id: Int64, lastName: String? = nil, firstName: String? = nil, fullName: String? = nil, company: String? = nil, createdAt: Int64 = 0 ) -> CrmContactEntity { CrmContactEntity( id: id, fullName: fullName, firstName: firstName, lastName: lastName, company: company, createdAt: createdAt ) } func testSectionLetterAzAndHash() { XCTAssertEqual("A", AlphabetIndex.sectionLetter("alice")) XCTAssertEqual("Z", AlphabetIndex.sectionLetter(" zebra")) XCTAssertEqual("#", AlphabetIndex.sectionLetter("")) XCTAssertEqual("#", AlphabetIndex.sectionLetter(" ")) XCTAssertEqual("#", AlphabetIndex.sectionLetter("Émile")) XCTAssertEqual("#", AlphabetIndex.sectionLetter("9ops")) } func testSortKeyFallbacks() { let withLast = contact(1, lastName: "Dupont", fullName: "Jean Dupont") let onlyFull = contact(2, fullName: "Solo") XCTAssertEqual("Dupont", AlphabetIndex.sortKey(withLast, sort: .lastName)) XCTAssertEqual("Solo", AlphabetIndex.sortKey(onlyFull, sort: .lastName)) XCTAssertEqual("Solo", AlphabetIndex.sortKey(onlyFull, sort: .firstName)) XCTAssertEqual("", AlphabetIndex.sortKey(contact(3), sort: .company)) XCTAssertEqual("00000000000000000042", AlphabetIndex.sortKey(contact(4, createdAt: 42), sort: .createdAt)) } func testGroupByLastNameSections() { let contacts = [ contact(1, lastName: "Bernard"), contact(2, lastName: "Adams"), contact(3, lastName: "Dupont"), contact(4, lastName: "123"), ] let grouped = AlphabetIndex.group(contacts: contacts, sort: .lastName) XCTAssertEqual(["A", "B", "D", "#"], grouped.map { $0.letter }) XCTAssertEqual([2], grouped.first { $0.letter == "A" }?.contacts.map { $0.id }) XCTAssertEqual([1], grouped.first { $0.letter == "B" }?.contacts.map { $0.id }) XCTAssertEqual([3], grouped.first { $0.letter == "D" }?.contacts.map { $0.id }) XCTAssertEqual([4], grouped.first { $0.letter == "#" }?.contacts.map { $0.id }) } func testCreatedAtFlatChronoDescNoAzSections() { let contacts = [ contact(1, lastName: "A", createdAt: 10), contact(2, lastName: "B", createdAt: 30), contact(3, lastName: "C", createdAt: 20), ] let grouped = AlphabetIndex.group(contacts: contacts, sort: .createdAt) XCTAssertEqual(1, grouped.count) XCTAssertEqual([2, 3, 1], grouped[0].contacts.map { $0.id }) } }
GitRust