VCardParserTest.kt
84 lignes · 2727 octets
package fr.ebii.card2vcf.contact import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertTrue class VCardParserTest { private fun loadFixture(name: String): String = checkNotNull(javaClass.classLoader!!.getResourceAsStream("vcf/$name")) .bufferedReader() .use { it.readText() } @Test fun parseSample3() { val cards = VCardParser.parse(loadFixture("sample3.vcf")) assertEquals(2, cards.size) val alice = cards[0] assertEquals("Alice Martin", alice.fullName) assertEquals("Alice", alice.firstName) assertEquals("Martin", alice.lastName) assertEquals("Acme", alice.company) assertEquals(listOf("alice@acme.test"), alice.emails) assertEquals(listOf("+33601020304"), alice.phones) assertEquals("salon Lyon", alice.note) val bob = cards[1] assertEquals("Bob", bob.fullName) assertEquals(listOf("bob@unique.test"), bob.emails) } @Test fun parseSample4() { val cards = VCardParser.parse(loadFixture("sample4.vcf")) assertEquals(1, cards.size) val alice = cards[0] assertEquals("Alice V4", alice.fullName) assertEquals(listOf("alice@acme.test"), alice.emails) assertEquals(listOf("+33601020304"), alice.phones) } @Test fun unfoldFoldedLine() { // Leading space/tab of continuation is the fold marker (dropped); extra space stays in value. val folded = "BEGIN:VCARD\n" + "VERSION:3.0\n" + "FN:Alice\n" + " Martin\n" + "NOTE:hello\n" + "\t world\n" + "END:VCARD" val cards = VCardParser.parse(folded) assertEquals(1, cards.size) assertEquals("Alice Martin", cards[0].fullName) assertEquals("hello world", cards[0].note) } @Test fun ignorePhoto() { val text = """ BEGIN:VCARD VERSION:3.0 FN:Photo Person PHOTO;ENCODING=b;TYPE=JPEG:/9j/4AAQ EMAIL:photo@test.example END:VCARD """.trimIndent() val cards = VCardParser.parse(text) assertEquals(1, cards.size) assertEquals("Photo Person", cards[0].fullName) assertEquals(listOf("photo@test.example"), cards[0].emails) assertTrue(cards[0].note == null) } @Test fun exportRoundtripVersion30() { val cards = VCardParser.parse(loadFixture("sample3.vcf")) val vcf = VCardSerializer.toVCard3(cards[0]) assertTrue(vcf.contains("VERSION:3.0")) assertTrue(vcf.contains("FN:Alice Martin")) assertTrue(vcf.contains("ORG:Acme")) } }
GitRust