AlphabetIndexTest.kt
72 lignes · 2773 octets
package fr.ebii.card2vcf.crm import fr.ebii.card2vcf.data.CrmContactEntity import kotlin.test.Test import kotlin.test.assertEquals class AlphabetIndexTest { private fun contact( id: Long, lastName: String? = null, firstName: String? = null, fullName: String? = null, company: String? = null, createdAt: Long = 0L, ) = CrmContactEntity( id = id, lastName = lastName, firstName = firstName, fullName = fullName, company = company, createdAt = createdAt, ) @Test fun sectionLetterAzAndHash() { assertEquals('A', AlphabetIndex.sectionLetter("alice")) assertEquals('Z', AlphabetIndex.sectionLetter(" zebra")) assertEquals('#', AlphabetIndex.sectionLetter("")) assertEquals('#', AlphabetIndex.sectionLetter(" ")) assertEquals('#', AlphabetIndex.sectionLetter("Émile")) assertEquals('#', AlphabetIndex.sectionLetter("9ops")) } @Test fun sortKeyFallbacks() { val withLast = contact(1, lastName = "Dupont", fullName = "Jean Dupont") val onlyFull = contact(2, fullName = "Solo") assertEquals("Dupont", AlphabetIndex.sortKey(withLast, ContactSort.LAST_NAME)) assertEquals("Solo", AlphabetIndex.sortKey(onlyFull, ContactSort.LAST_NAME)) assertEquals("Solo", AlphabetIndex.sortKey(onlyFull, ContactSort.FIRST_NAME)) assertEquals("", AlphabetIndex.sortKey(contact(3), ContactSort.COMPANY)) assertEquals("00000000000000000042", AlphabetIndex.sortKey(contact(4, createdAt = 42), ContactSort.CREATED_AT)) } @Test fun groupByLastNameSections() { val contacts = listOf( contact(1, lastName = "Bernard"), contact(2, lastName = "Adams"), contact(3, lastName = "Dupont"), contact(4, lastName = "123"), ) val grouped = AlphabetIndex.group(contacts, ContactSort.LAST_NAME) assertEquals(listOf('A', 'B', 'D', '#'), grouped.keys.toList()) assertEquals(listOf(2L), grouped['A']!!.map { it.id }) assertEquals(listOf(1L), grouped['B']!!.map { it.id }) assertEquals(listOf(3L), grouped['D']!!.map { it.id }) assertEquals(listOf(4L), grouped['#']!!.map { it.id }) } @Test fun createdAtFlatChronoDescNoAzSections() { val contacts = listOf( contact(1, lastName = "A", createdAt = 10), contact(2, lastName = "B", createdAt = 30), contact(3, lastName = "C", createdAt = 20), ) val grouped = AlphabetIndex.group(contacts, ContactSort.CREATED_AT) assertEquals(1, grouped.size) assertEquals(listOf(2L, 3L, 1L), grouped.values.single().map { it.id }) } }
GitRust