diff options
author | Ricki Hirner <hirner@bitfire.at> | 2020-10-26 19:50:51 +0300 |
---|---|---|
committer | Ricki Hirner <hirner@bitfire.at> | 2020-10-26 19:59:24 +0300 |
commit | aab5201325daa199b1298329aee6cbbb3c2f9e6b (patch) | |
tree | a393d222a7d87f60d08d742fa5f300890cfe2d33 | |
parent | df9935b0fec1057ddeebba27fb7ceba783722d0d (diff) |
Make sure Western digits are used where Western digits are required; tests (see https://github.com/mangstadt/ez-vcard/issues/113)
4 files changed, 52 insertions, 3 deletions
diff --git a/src/androidTest/java/at/bitfire/vcard4android/LocaleNonWesternDigitsTest.kt b/src/androidTest/java/at/bitfire/vcard4android/LocaleNonWesternDigitsTest.kt new file mode 100644 index 0000000..823f5db --- /dev/null +++ b/src/androidTest/java/at/bitfire/vcard4android/LocaleNonWesternDigitsTest.kt @@ -0,0 +1,46 @@ +package at.bitfire.vcard4android + +import ezvcard.Ezvcard +import ezvcard.VCard +import ezvcard.VCardVersion +import ezvcard.property.Geo +import org.junit.Assert.assertEquals +import org.junit.Before +import org.junit.ComparisonFailure +import org.junit.Test +import java.util.* + +class LocaleNonWesternDigitsTest { + + companion object { + val locale = Locale("fa", "ir", "u-un-arabext") + } + + @Before + fun verifyLocale() { + assertEquals("Persian (Iran) locale not available", "fa", locale.language) + Locale.setDefault(locale) + } + + @Test + fun testLocale_StringFormat() { + assertEquals("۲۰۲۰", String.format("%d", 2020)) + } + + @Test + fun testLocale_StringFormat_Root() { + assertEquals("2020", String.format(Locale.ROOT, "%d", 2020)) + } + + @Test(expected = ComparisonFailure::class) // should not fail in future + fun testLocale_ezVCard() { + val vCard = VCard(VCardVersion.V4_0) + vCard.geo = Geo(1.0, 2.0) + assertEquals("BEGIN:VCARD\r\n" + + "VERSION:4.0\r\n" + + "PRODID:ez-vcard 0.11.1\r\n" + + "GEO:geo:1.0,2.0\r\n" + // fails: is "GEO:geo:۱.۰,۲.۰\r\n" instead + "END:VCARD\r\n", Ezvcard.write(vCard).go()) + } + +}
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/AndroidContact.kt b/src/main/java/at/bitfire/vcard4android/AndroidContact.kt index 8ab9a32..e48e373 100644 --- a/src/main/java/at/bitfire/vcard4android/AndroidContact.kt +++ b/src/main/java/at/bitfire/vcard4android/AndroidContact.kt @@ -457,7 +457,7 @@ open class AndroidContact( val dateStr = row.getAsString(Event.START_DATE) var full: Date? = null var partial: PartialDate? = null - val fullFormat = SimpleDateFormat("yyyy-MM-dd", Locale.US) + val fullFormat = SimpleDateFormat("yyyy-MM-dd", Locale.ROOT) try { full = fullFormat.parse(dateStr) } catch(e: ParseException) { @@ -1069,7 +1069,7 @@ open class AndroidContact( val dateStr: String dateStr = when { dateOrTime.date != null -> { - val format = SimpleDateFormat("yyyy-MM-dd", Locale.US) + val format = SimpleDateFormat("yyyy-MM-dd", Locale.ROOT) format.format(dateOrTime.date) } dateOrTime.partialDate != null -> diff --git a/src/test/java/at/bitfire/vcard4android/ContactTest.kt b/src/test/java/at/bitfire/vcard4android/ContactTest.kt index 42bd5c2..571511b 100644 --- a/src/test/java/at/bitfire/vcard4android/ContactTest.kt +++ b/src/test/java/at/bitfire/vcard4android/ContactTest.kt @@ -320,7 +320,7 @@ class ContactTest { assertTrue(url1 && url2) // BDAY - val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.US) + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.ROOT) assertEquals("1996-04-15", dateFormat.format(c.birthDay!!.date)) // ANNIVERSARY assertEquals("2014-08-12", dateFormat.format(c.anniversary!!.date)) diff --git a/src/test/java/at/bitfire/vcard4android/EzVCardTest.kt b/src/test/java/at/bitfire/vcard4android/EzVCardTest.kt index 554f661..09b7528 100644 --- a/src/test/java/at/bitfire/vcard4android/EzVCardTest.kt +++ b/src/test/java/at/bitfire/vcard4android/EzVCardTest.kt @@ -9,8 +9,11 @@ package at.bitfire.vcard4android import ezvcard.Ezvcard +import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull +import org.junit.Before import org.junit.Test +import java.util.* class EzVCardTest { |