12d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// © 2016 and later: Unicode, Inc. and others.
22d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License
37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/*****************************************************************************************
47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert *
5e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer *   Copyright (C) 1996-2016, International Business Machines
67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert *   Corporation and others.  All Rights Reserved.
77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/
87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
92d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert/**
107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDecimalFormatSymbols
117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Source File: java/text/format/IntlTestDecimalFormatSymbols.java
127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/
132d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/*
157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    @test 1.4 98/03/06
167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    @summary test International Decimal Format Symbols
177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert*/
187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.dev.test.format;
217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
222d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertimport java.util.Arrays;
237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Locale;
247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
252d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertimport org.junit.Test;
262d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.DecimalFormatSymbols;
287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.util.Currency;
29e7a7efded856b8959849879938d1cb2e8ccab318Markus Schererimport com.ibm.icu.util.ULocale;
307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class IntlTestDecimalFormatSymbols extends com.ibm.icu.dev.test.TestFmwk
327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert{
337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    // Test the API of DecimalFormatSymbols; primarily a simple get/set set.
342d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    @Test
357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public void TestSymbols()
367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    {
377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        DecimalFormatSymbols fr = new DecimalFormatSymbols(Locale.FRENCH);
387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        DecimalFormatSymbols en = new DecimalFormatSymbols(Locale.ENGLISH);
407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(en.equals(fr)) {
427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: English DecimalFormatSymbols equal to French");
437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // just do some VERY basic tests to make sure that get/set work
462d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
472d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if(!en.getLocale().equals(Locale.ENGLISH)) {
482d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: getLocale failed");
492d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
502d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if(!en.getULocale().equals(ULocale.ENGLISH)) {
512d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: getULocale failed");
522d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
532d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
54e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer        if(!en.getLocale().equals(Locale.ENGLISH)) {
55e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer            errln("ERROR: getLocale failed");
56e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer        }
57e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer        if(!en.getULocale().equals(ULocale.ENGLISH)) {
58e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer            errln("ERROR: getULocale failed");
59e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer        }
607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char zero = en.getZeroDigit();
627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setZeroDigit(zero);
637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getZeroDigit() != en.getZeroDigit()) {
647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set ZeroDigit failed");
657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
672d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        String[] digits = en.getDigitStrings();
682d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        fr.setDigitStrings(digits);
692d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!Arrays.equals(fr.getDigitStrings(), en.getDigitStrings())) {
702d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: get/set DigitStrings failed");
712d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
722d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char sigDigit = en.getSignificantDigit();
742d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        fr.setSignificantDigit(sigDigit);
757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getSignificantDigit() != en.getSignificantDigit()) {
767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set SignificantDigit failed");
777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        Currency currency = Currency.getInstance("USD");
807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setCurrency(currency);
817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if (!fr.getCurrency().equals(currency)){
827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set Currency failed");
837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
842d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char group = en.getGroupingSeparator();
867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setGroupingSeparator(group);
877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getGroupingSeparator() != en.getGroupingSeparator()) {
887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set GroupingSeparator failed");
897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
912d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        String groupStr = en.getGroupingSeparatorString();
922d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        fr.setGroupingSeparatorString(groupStr);
932d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!fr.getGroupingSeparatorString().equals(en.getGroupingSeparatorString())) {
942d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: get/set GroupingSeparatorString failed");
952d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
962d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char decimal = en.getDecimalSeparator();
987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setDecimalSeparator(decimal);
997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getDecimalSeparator() != en.getDecimalSeparator()) {
1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set DecimalSeparator failed");
1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1032d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        String decimalStr = en.getDecimalSeparatorString();
1042d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        fr.setDecimalSeparatorString(decimalStr);
1052d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!fr.getDecimalSeparatorString().equals(en.getDecimalSeparatorString())) {
1062d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: get/set DecimalSeparatorString failed");
1072d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
1082d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char monetaryGroup = en.getMonetaryGroupingSeparator();
1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setMonetaryGroupingSeparator(monetaryGroup);
1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getMonetaryGroupingSeparator() != en.getMonetaryGroupingSeparator()) {
1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set MonetaryGroupingSeparator failed");
1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1152d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        String monetaryGroupStr = en.getMonetaryGroupingSeparatorString();
1162d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        fr.setMonetaryGroupingSeparatorString(monetaryGroupStr);
1172d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!fr.getMonetaryGroupingSeparatorString().equals(en.getMonetaryGroupingSeparatorString())){
1182d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: get/set MonetaryGroupingSeparatorString failed");
1192d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
1202d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char monetaryDecimal = en.getMonetaryDecimalSeparator();
1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setMonetaryDecimalSeparator(monetaryDecimal);
1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getMonetaryDecimalSeparator() != en.getMonetaryDecimalSeparator()) {
1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set MonetaryDecimalSeparator failed");
1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1272d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        String monetaryDecimalStr = en.getMonetaryDecimalSeparatorString();
1282d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        fr.setMonetaryDecimalSeparatorString(monetaryDecimalStr);
1292d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!fr.getMonetaryDecimalSeparatorString().equals(en.getMonetaryDecimalSeparatorString())) {
1302d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: get/set MonetaryDecimalSeparatorString failed");
1312d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
1322d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char perMill = en.getPerMill();
1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setPerMill(perMill);
1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getPerMill() != en.getPerMill()) {
1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set PerMill failed");
1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1392d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        String perMillStr = en.getPerMillString();
1402d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        fr.setPerMillString(perMillStr);
1412d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!fr.getPerMillString().equals(en.getPerMillString())) {
1422d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: get/set PerMillString failed");
1432d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
1442d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char percent = en.getPercent();
1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setPercent(percent);
1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getPercent() != en.getPercent()) {
1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set Percent failed");
1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1512d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        String percentStr = en.getPercentString();
1522d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        fr.setPercentString(percentStr);
1532d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!fr.getPercentString().equals(en.getPercentString())) {
1542d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: get/set PercentString failed");
1552d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
1562d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char digit = en.getDigit();
1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setDigit(digit);
1592d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if(fr.getDigit() != en.getDigit()) {
1602d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: get/set Digit failed");
1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char patternSeparator = en.getPatternSeparator();
1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setPatternSeparator(patternSeparator);
1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getPatternSeparator() != en.getPatternSeparator()) {
1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set PatternSeparator failed");
1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        String infinity = en.getInfinity();
1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setInfinity(infinity);
1717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        String infinity2 = fr.getInfinity();
1727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(! infinity.equals(infinity2)) {
1737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set Infinity failed");
1747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        String nan = en.getNaN();
1777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setNaN(nan);
1787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        String nan2 = fr.getNaN();
1797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(! nan.equals(nan2)) {
1807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set NaN failed");
1817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char minusSign = en.getMinusSign();
1847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setMinusSign(minusSign);
1857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getMinusSign() != en.getMinusSign()) {
1867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set MinusSign failed");
1877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1892d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        String minusSignStr = en.getMinusSignString();
1902d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        fr.setMinusSignString(minusSignStr);
1912d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!fr.getMinusSignString().equals(en.getMinusSignString())) {
1922d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: get/set MinusSignString failed");
1932d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
1942d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
1957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char plusSign = en.getPlusSign();
1967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setPlusSign(plusSign);
1977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getPlusSign() != en.getPlusSign()) {
1987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set PlusSign failed");
1997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
2007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
2012d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        String plusSignStr = en.getPlusSignString();
2022d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        fr.setPlusSignString(plusSignStr);
2032d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!fr.getPlusSignString().equals(en.getPlusSignString())) {
2042d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: get/set PlusSignString failed");
2052d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
2062d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
2077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char padEscape = en.getPadEscape();
2087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setPadEscape(padEscape);
2097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getPadEscape() != en.getPadEscape()) {
2107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set PadEscape failed");
2117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
2127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
2137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        String exponential = en.getExponentSeparator();
2147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        fr.setExponentSeparator(exponential);
2157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(fr.getExponentSeparator() != en.getExponentSeparator()) {
2167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: get/set Exponential failed");
2177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
2182d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
219e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer        String exponentMultiplicationSign = en.getExponentMultiplicationSign();
220e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer        fr.setExponentMultiplicationSign(exponentMultiplicationSign);
221e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer        if(fr.getExponentMultiplicationSign() != en.getExponentMultiplicationSign()) {
222e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer            errln("ERROR: get/set ExponentMultiplicationSign failed");
223e7a7efded856b8959849879938d1cb2e8ccab318Markus Scherer        }
2242d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
2257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // Test CurrencySpacing.
2262d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        // In CLDR 1.7, only root.txt has CurrencySpacing data. This data might
2277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // be different between en and fr in the future.
2287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        for (int i = DecimalFormatSymbols.CURRENCY_SPC_CURRENCY_MATCH; i <= DecimalFormatSymbols.CURRENCY_SPC_INSERT; i++) {
2297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            if (en.getPatternForCurrencySpacing(i, true) !=
2307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                fr.getPatternForCurrencySpacing(i, true)) {
2317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                errln("ERROR: get currency spacing item:"+ i+" before the currency");
2327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                if (en.getPatternForCurrencySpacing(i, false) !=
2337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                    fr.getPatternForCurrencySpacing(i, false)) {
2347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                    errln("ERROR: get currency spacing item:" + i + " after currency");
2357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                }
2367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
2377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
2382d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
2397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        String dash = "-";
2407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        en.setPatternForCurrencySpacing(DecimalFormatSymbols.CURRENCY_SPC_INSERT, true, dash);
2417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if (dash != en.getPatternForCurrencySpacing(DecimalFormatSymbols.CURRENCY_SPC_INSERT, true)) {
2427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: set currency spacing pattern for before currency.");
2437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
2447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
2457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        //DecimalFormatSymbols foo = new DecimalFormatSymbols(); //The variable is never used
2467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
2477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        en = (DecimalFormatSymbols) fr.clone();
2487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
2497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(! en.equals(fr)) {
2507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            errln("ERROR: Clone failed");
2517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
2527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
2532d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
2542d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    @Test
2557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public void testCoverage() {
2567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        DecimalFormatSymbols df = new DecimalFormatSymbols();
2577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        DecimalFormatSymbols df2 = (DecimalFormatSymbols)df.clone();
2587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if (!df.equals(df2) || df.hashCode() != df2.hashCode()) {
2592d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("decimal format symbols clone, equals, or hashCode failed");
2602d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
2612d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    }
2622d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
2632d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    @Test
2642d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public void testDigitSymbols() {
2652d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        final char defZero = '0';
2662d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        final char[] defDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
2672d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        final String[] defDigitStrings = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
2682d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        final String[] osmanyaDigitStrings = {
2692d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            "\uD801\uDCA0", "\uD801\uDCA1", "\uD801\uDCA2", "\uD801\uDCA3", "\uD801\uDCA4",
2702d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            "\uD801\uDCA5", "\uD801\uDCA6", "\uD801\uDCA7", "\uD801\uDCA8", "\uD801\uDCA9"
2712d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        };
2722d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
2732d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.ENGLISH);
2742d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
2752d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        symbols.setDigitStrings(osmanyaDigitStrings);
2762d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!Arrays.equals(symbols.getDigitStrings(), osmanyaDigitStrings)) {
2772d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: Osmanya digits (supplementary) should be set");
2782d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
2792d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (defZero != symbols.getZeroDigit()) {
2802d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: Zero digit should be 0");
2812d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
2822d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!Arrays.equals(symbols.getDigits(), defDigits)) {
2832d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: Char digits should be Latin digits");
2842d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
2852d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
2862d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        // Reset digits to Latin
2872d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        symbols.setZeroDigit(defZero);
2882d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        if (!Arrays.equals(symbols.getDigitStrings(), defDigitStrings)) {
2892d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            errln("ERROR: Latin digits should be set" + symbols.getDigitStrings()[0]);
2907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
2917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
2927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert}
293