1336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust/* GENERATED SOURCE. DO NOT MODIFY. */
2336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust// © 2016 and later: Unicode, Inc. and others.
3b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust// License & terms of use: http://www.unicode.org/copyright.html#License
4b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust/*
5b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust *******************************************************************************
6b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust * Copyright (C) 2001-2011, International Business Machines Corporation and    *
7b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust * others. All Rights Reserved.                                                *
8336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust *******************************************************************************
9ca520d28e1855f27e7fdab6c85aee4065758c2ebCédric Beust */
102d568355761a9632bf24a87984e241f8a079d724Cédric Beust
112d568355761a9632bf24a87984e241f8a079d724Cédric Beust/**
12c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust * Port From:   ICU4C v1.8.1 : format : IntlTestNumberFormat
130f6db64c011bc71dcdb432d7d27730b04f5ef2c1Cédric Beust * Source File: $ICU4CRoot/source/test/intltest/tsnmfmt.cpp
14b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust **/
15b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust
16b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beustpackage android.icu.dev.test.format;
17b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beustimport java.util.Locale;
18b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beustimport java.util.Random;
19b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust
20b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beustimport org.junit.Test;
21b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust
22b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beustimport android.icu.dev.test.TestFmwk;
23b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beustimport android.icu.text.DecimalFormat;
24b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beustimport android.icu.text.NumberFormat;
25b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust
26b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust/**
2745a161fb7f6ba0937ec480fef1a803524bc07214Cédric Beust * This test does round-trip testing (format -> parse -> format -> parse -> etc.) of
28336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * NumberFormat.
290f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin */
300f7e671c94aeedee2fbc796b3318d44b0297b6cdnullinpublic class IntlTestNumberFormat extends android.icu.dev.test.TestFmwk {
310f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin
320f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin    public NumberFormat fNumberFormat;
33336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust
34336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    /**
35336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust     * Internal use
36336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust     */
37336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    private void _testLocale(Locale locale) {
380f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin        String localeName = locale + " (" + locale.getDisplayName() + ")";
39336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust
40336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        logln("Number test " + localeName);
41336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        fNumberFormat = NumberFormat.getInstance(locale);
42336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        _testFormat();
43336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust
4445a161fb7f6ba0937ec480fef1a803524bc07214Cédric Beust        logln("Currency test " + localeName);
45336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        fNumberFormat = NumberFormat.getCurrencyInstance(locale);
46336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        _testFormat();
470f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin
48aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        logln("Percent test " + localeName);
49aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        fNumberFormat = NumberFormat.getPercentInstance(locale);
50aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        _testFormat();
51aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm
52aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        if (locale.toString().compareTo("en_US_POSIX") != 0 ) {
530f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin           logln("Scientific test " + localeName);
54aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm           fNumberFormat = NumberFormat.getScientificInstance(locale);
550f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin           _testFormat();
56aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        }
57aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm    }
58aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm
59d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust    /**
60d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust     * call _testFormat for currency, percent and plain number instances
6145a161fb7f6ba0937ec480fef1a803524bc07214Cédric Beust     */
6210749d45726849381f4ff7384ef7154cec5299d4Jose Dillet    @Test
63aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm    public void TestLocale() {
64aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        Locale locale = Locale.getDefault();
65aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        String localeName = locale + " (" + locale.getDisplayName() + ")";
660f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin
67336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        logln("Number test " + localeName);
68336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        fNumberFormat = NumberFormat.getInstance(locale);
69336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        _testFormat();
70336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust
71336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        logln("Currency test " + localeName);
720f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin        fNumberFormat = NumberFormat.getCurrencyInstance(locale);
73336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        _testFormat();
74336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust
75336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        logln("Percent test " + localeName);
76336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        fNumberFormat = NumberFormat.getPercentInstance(locale);
77336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        _testFormat();
780f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin    }
79336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust
80336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    /**
810f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin     * call tryIt with many variations, called by testLocale
82336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust     */
830f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin    private void _testFormat() {
840f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin
850f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        if (fNumberFormat == null){
860f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin            errln("**** FAIL: Null format returned by createXxxInstance.");
87b35d5f96bcebbe9f26cb6359101e57b90fcc49bbCédric Beust             return;
880f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin        }
89aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        DecimalFormat s = (DecimalFormat)fNumberFormat;
90aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        logln("pattern :" + s.toPattern());
91aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm
92aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        tryIt(-2.02147304840132e-68);
93aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        tryIt(3.88057859588817e-68);
940f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin        tryIt(-2.64651110485945e+65);
95aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        tryIt(9.29526819488338e+64);
960f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin
97aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        tryIt(-2.02147304840132e-100);
98aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm        tryIt(3.88057859588817e-096);
99d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust        tryIt(-2.64651110485945e+306);
100d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust        tryIt(9.29526819488338e+250);
101aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm
1020f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(-9.18228054496402e+64);
1030f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(-9.69413034454191e+64);
1040f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin
1050f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(-9.18228054496402e+255);
1060f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(-9.69413034454191e+273);
1070f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin
1080f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin
1090f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(1.234e-200);
1100f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(-2.3e-168);
1110f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin
1120f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(Double.NaN);
1130f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(Double.POSITIVE_INFINITY);
1140f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(Double.NEGATIVE_INFINITY);
1150f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin
1160f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(251887531);
1170f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(5e-20 / 9);
1180f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(5e20 / 9);
1190f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        tryIt(1.234e-50);
120d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust        tryIt(9.99999999999996);
121d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust        tryIt(9.999999999999996);
122aec0b211238fc0ecc0095927c67ec4397311e705the.mindstorm
123336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        tryIt(5.06e-27);
124c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust
125c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        tryIt(Integer.MIN_VALUE);
126c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        tryIt(Integer.MAX_VALUE);
127c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        tryIt((double)Integer.MIN_VALUE);
128c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        tryIt((double)Integer.MAX_VALUE);
129c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        tryIt((double)Integer.MIN_VALUE - 1.0);
130c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        tryIt((double)Integer.MAX_VALUE + 1.0);
131c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust
132c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        tryIt(5.0 / 9.0 * 1e-20);
133c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        tryIt(4.0 / 9.0 * 1e-20);
134d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust        tryIt(5.0 / 9.0 * 1e+20);
135d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust        tryIt(4.0 / 9.0 * 1e+20);
136c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust
137c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        tryIt(2147483647.);
138d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt        tryIt(0);
139d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt        tryIt(0.0);
140d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt        tryIt(1);
141d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt        tryIt(10);
142d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt        tryIt(100);
143d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt        tryIt(-1);
144d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt        tryIt(-10);
145d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt        tryIt(-100);
146d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt        tryIt(-1913860352);
147d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt
148d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt        Random random = createRandom(); // use test framework's random seed
149d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt        for (int j = 0; j < 10; j++) {
150d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt            double d = random.nextDouble()*2e10 - 1e10;
151d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt            tryIt(d);
152d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt
1530f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin        }
154c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust    }
155c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust
156c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust    /**
157c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust     * Perform tests using aNumber and fNumberFormat, called in many variations
158c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust     */
159d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust    public void tryIt(double aNumber) {
160c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        final int DEPTH = 10;
161c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        double[] number = new double[DEPTH];
162c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        String[] string = new String[DEPTH];
163c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        int numberMatch = 0;
164c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        int stringMatch = 0;
165c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        boolean dump = false;
166c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        int i;
167c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust
168c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        for (i = 0; i < DEPTH; i++) {
169c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            if (i == 0) {
170d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust                number[i] = aNumber;
171d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust            } else {
172336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                try {
173336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                    number[i - 1] = fNumberFormat.parse(string[i - 1]).doubleValue();
174336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                } catch(java.text.ParseException pe) {
175d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust                    errln("**** FAIL: Parse of " + string[i-1] + " failed.");
1760f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin                    dump = true;
1770f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin                    break;
1780f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin                }
1790f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin            }
1800f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin
1810f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin            string[i] = fNumberFormat.format(number[i]);
1820f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin            if (i > 0)
1830f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin            {
1840f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin                if (numberMatch == 0 && number[i] == number[i-1])
1850f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin                    numberMatch = i;
1860f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin                else if (numberMatch > 0 && number[i] != number[i-1])
1870f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin                {
188336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                    errln("**** FAIL: Numeric mismatch after match.");
189336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                    dump = true;
190336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                    break;
191d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust                }
192c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                if (stringMatch == 0 && string[i] == string[i-1])
193c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                    stringMatch = i;
194c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                else if (stringMatch > 0 && string[i] != string[i-1])
195c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                {
196c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                    errln("**** FAIL: String mismatch after match.");
197c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                    dump = true;
198c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                    break;
199c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                }
200c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            }
201c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            if (numberMatch > 0 && stringMatch > 0)
202d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust                break;
203d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust
204336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust            if (i == DEPTH)
2050f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin            --i;
2060f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin
207d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust        if (stringMatch > 2 || numberMatch > 2)
208336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        {
209336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust            errln("**** FAIL: No string and/or number match within 2 iterations.");
210336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust            dump = true;
2110f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin        }
212c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust
213c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        if (dump)
214c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        {
215c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            for (int k=0; k<=i; ++k)
216c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            {
217c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                logln(k + ": " + number[k] + " F> " +
218c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                      string[k] + " P> ");
219c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            }
220c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        }
221c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        }
222d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust    }
223d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust
224336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    /**
2250f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin     *  perform tests using aNumber and fNumberFormat, called in many variations
226336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust     **/
227336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    public void tryIt(int aNumber) {
228336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        long number;
2290f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin
230d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust        String stringNum = fNumberFormat.format(aNumber);
231336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        try {
232336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust            number = fNumberFormat.parse(stringNum).longValue();
233336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        } catch (java.text.ParseException pe) {
2340f4cf7bdb6fa5515ebc62e29ee7f88d5410e0326Vladislav Rassokhin            errln("**** FAIL: Parse of " + stringNum + " failed.");
235c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            return;
236c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        }
237c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust
238c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        if (number != aNumber) {
239c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            errln("**** FAIL: Parse of " + stringNum + " failed. Got:" + number
240c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                + " Expected:" + aNumber);
241c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        }
242c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust
243c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust    }
244c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust
245d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust    /**
246d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust     *  test NumberFormat::getAvailableLocales
247336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust     **/
2480f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin    @Test
249336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    public void TestAvailableLocales() {
250336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        final Locale[] locales = NumberFormat.getAvailableLocales();
2510f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin        int count = locales.length;
252336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        logln(count + " available locales");
253d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust        if (count != 0)
254c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        {
255c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            String all = "";
256c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            for (int i = 0; i< count; ++i)
257c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            {
258c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                if (i!=0)
259c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                    all += ", ";
260c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust                all += locales[i].getDisplayName();
261c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            }
262c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust            logln(all);
263c2f269c2c123407058d36416782b081a39c3f4b4Cédric Beust        }
264d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust        else
265d2cb0ebdfecac643c380d1e84f273f5ba92374a4Cédric Beust            errln("**** FAIL: Zero available locales or null array pointer");
266336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    }
2670f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin
268336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    /**
269336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust     *  call testLocale for all locales
270336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust     **/
271336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    @Test
272336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    public void TestMonster() {
273336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        final String SEP = "============================================================\n";
274336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        int count;
275336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        final Locale[] allLocales = NumberFormat.getAvailableLocales();
276336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        Locale[] locales = allLocales;
277336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        count = locales.length;
278336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        if (count != 0)
279336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        {
280336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust            if (TestFmwk.getExhaustiveness() < 10 && count > 6) {
281336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                count = 6;
282336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                locales = new Locale[6];
283336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                locales[0] = allLocales[0];
284336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                locales[1] = allLocales[1];
285336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                locales[2] = allLocales[2];
286336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                // In a quick test, make sure we test locales that use
287336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                // currency prefix, currency suffix, and choice currency
288336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                // logic.  Otherwise bugs in these areas can slip through.
289336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                locales[3] = new Locale("ar", "AE", "");
290336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                locales[4] = new Locale("cs", "CZ", "");
291336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                locales[5] = new Locale("en", "IN", "");
292336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust            }
293336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust            for (int i=0; i<count; ++i)
294336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust            {
295336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust                logln(SEP);
2960f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin                _testLocale(locales[i]);
297336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust            }
298336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        }
299336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust
300336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust        logln(SEP);
301336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    }
302336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust}
303336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust