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