@@ -10,7 +10,11 @@ import ezvcard.Ezvcard
1010import ezvcard.VCard
1111import ezvcard.VCardVersion
1212import ezvcard.property.Address
13- import org.junit.Assert.*
13+ import org.junit.Assert.assertArrayEquals
14+ import org.junit.Assert.assertEquals
15+ import org.junit.Assert.assertNotNull
16+ import org.junit.Assert.assertNull
17+ import org.junit.Assert.assertTrue
1418import org.junit.Test
1519
1620class EzVCardTest {
@@ -25,6 +29,38 @@ class EzVCardTest {
2529 assertTrue(vCard.kind.isGroup)
2630 }
2731
32+ @Test
33+ fun `Parse PHOTO binary encoding (vCard3)` () {
34+ val vCard = Ezvcard .parse(" BEGIN:VCARD\r\n " +
35+ " VERSION:3.0\r\n " +
36+ " PHOTO;ENCODING=b;TYPE=JPEG:dGVzdA==\r\n " +
37+ " END:VCARD" ).first()
38+ // decodes binary data
39+ assertArrayEquals(" test" .toByteArray(), vCard.photos.first().data)
40+ }
41+
42+ @Test
43+ fun `Parse PHOTO data URI (vCard3)` () {
44+ val vCard = Ezvcard .parse(" BEGIN:VCARD\r\n " +
45+ " VERSION:3.0\r\n " +
46+ " PHOTO;VALUE=uri:data:image/png;base64,dGVzdA==\r\n " +
47+ " END:VCARD" ).first()
48+ val photo = vCard.photos.first()
49+ // Somehow unexpected: returns a data URI and doesn't decode it
50+ assertEquals(" data:image/png;base64,dGVzdA==" , photo.url)
51+ assertNull(photo.data)
52+ }
53+
54+ @Test
55+ fun `Parse PHOTO data URI (vCard4)` () {
56+ val vCard = Ezvcard .parse(" BEGIN:VCARD\r\n " +
57+ " VERSION:4.0\r\n " +
58+ " PHOTO:data:image/png;base64,dGVzdA==\r\n " +
59+ " END:VCARD" ).first()
60+ // decodes data URI
61+ assertArrayEquals(" test" .toByteArray(), vCard.photos.first().data)
62+ }
63+
2864 @Test
2965 fun testREV_UTC () {
3066 val vCard = Ezvcard .parse(" BEGIN:VCARD\r\n " +
0 commit comments