169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin/* GENERATED SOURCE. DO NOT MODIFY. */ 2f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// © 2016 and later: Unicode, Inc. and others. 3f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin/* 569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin ******************************************************************************* 61c8a530973739aafa823d758240d2cd5dad96fe3Fredrik Roubert * Copyright (C) 2001-2016, International Business Machines Corporation and 71c8a530973739aafa823d758240d2cd5dad96fe3Fredrik Roubert * others. All Rights Reserved. 869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin ******************************************************************************* 969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin */ 1069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 11f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert/** 1269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin * Port From: ICU4C v1.8.1 : format : IntlTestDecimalFormatAPI 1369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin * Source File: $ICU4CRoot/source/test/intltest/dcfmapts.cpp 1469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin **/ 1569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 1669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinpackage android.icu.dev.test.format; 1769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 1869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinimport java.text.AttributedCharacterIterator; 1969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinimport java.text.FieldPosition; 2069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinimport java.text.Format; 2169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinimport java.text.ParsePosition; 2269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinimport java.util.ArrayList; 2369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinimport java.util.Iterator; 2469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinimport java.util.List; 2569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinimport java.util.Locale; 2669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 27f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubertimport org.junit.Test; 2805fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport org.junit.runner.RunWith; 2905fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport org.junit.runners.JUnit4; 30f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 3105fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport android.icu.dev.test.TestFmwk; 3231fc099bf012524568ddeffd7fd4c9326411156bPaul Duffinimport android.icu.text.CurrencyPluralInfo; 3369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinimport android.icu.text.DecimalFormat; 3469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinimport android.icu.text.DecimalFormatSymbols; 3569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffinimport android.icu.text.NumberFormat; 3631fc099bf012524568ddeffd7fd4c9326411156bPaul Duffinimport android.icu.util.ULocale; 372e13a2bdade5cd0a635f0bd89805931a6fd710daPete Gillinimport android.icu.testsharding.MainTestShard; 3869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 3969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// This is an API test, not a unit test. It doesn't test very many cases, and doesn't 4069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// try to test the full functionality. It just calls each function in the class and 4169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// verifies that it works on a basic level. 422e13a2bdade5cd0a635f0bd89805931a6fd710daPete Gillin@MainTestShard 4305fa7802d0874812c234a29745586677ee5837eaFredrik Roubert@RunWith(JUnit4.class) 4405fa7802d0874812c234a29745586677ee5837eaFredrik Roubertpublic class IntlTestDecimalFormatAPIC extends TestFmwk { 4569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 4669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage. 47f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 4869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin public void TestAPI() { 4969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 5069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("DecimalFormat API test---"); 5169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln(""); 5269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin Locale.setDefault(Locale.ENGLISH); 5369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 5469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // ======= Test constructors 5569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 5669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Testing DecimalFormat constructors"); 5769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 5869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin DecimalFormat def = new DecimalFormat(); 5969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 6069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin final String pattern = new String("#,##0.# FF"); 6131fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin final DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.FRENCH); 6231fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin final CurrencyPluralInfo infoInput = new CurrencyPluralInfo(ULocale.FRENCH); 63f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 6469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin DecimalFormat pat = null; 6569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin try { 6669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat = new DecimalFormat(pattern); 6769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } catch (IllegalArgumentException e) { 6869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin errln("ERROR: Could not create DecimalFormat (pattern)"); 6969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 7069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 7131fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin DecimalFormat cust1 = null; 7231fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin try { 7331fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin cust1 = new DecimalFormat(pattern, symbols); 7431fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin } catch (IllegalArgumentException e) { 7531fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin errln("ERROR: Could not create DecimalFormat (pattern, symbols)"); 7631fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin } 77f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 78f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @SuppressWarnings("unused") 7931fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin DecimalFormat cust2 = null; 8031fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin try { 8131fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin cust2 = new DecimalFormat(pattern, symbols, infoInput, NumberFormat.PLURALCURRENCYSTYLE); 8231fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin } catch (IllegalArgumentException e) { 8331fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin errln("ERROR: Could not create DecimalFormat (pattern, symbols, infoInput, style)"); 8431fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin } 8569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 8669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 8769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // ======= Test clone(), assignment, and equality 8869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 8969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Testing clone() and equality operators"); 9069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 9169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin Format clone = (Format) def.clone(); 9269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin if (!def.equals(clone)) { 9369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin errln("ERROR: Clone() failed"); 9469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 9569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 9669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // ======= Test various format() methods 9769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 9869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Testing various format() methods"); 9969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 10069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // final double d = -10456.0037; // this appears as -10456.003700000001 on NT 10169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // final double d = -1.04560037e-4; // this appears as -1.0456003700000002E-4 on NT 10269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin final double d = -10456.00370000000000; // this works! 10369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin final long l = 100000000; 10469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("" + Double.toString(d) + " is the double value"); 10569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 10669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin StringBuffer res1 = new StringBuffer(); 10769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin StringBuffer res2 = new StringBuffer(); 10869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin StringBuffer res3 = new StringBuffer(); 10969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin StringBuffer res4 = new StringBuffer(); 11069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin FieldPosition pos1 = new FieldPosition(0); 11169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin FieldPosition pos2 = new FieldPosition(0); 11269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin FieldPosition pos3 = new FieldPosition(0); 11369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin FieldPosition pos4 = new FieldPosition(0); 11469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 11569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin res1 = def.format(d, res1, pos1); 11669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("" + Double.toString(d) + " formatted to " + res1); 11769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 11869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin res2 = pat.format(l, res2, pos2); 11969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("" + l + " formatted to " + res2); 12069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 12169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin res3 = cust1.format(d, res3, pos3); 12269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("" + Double.toString(d) + " formatted to " + res3); 12369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 12469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin res4 = cust1.format(l, res4, pos4); 12569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("" + l + " formatted to " + res4); 12669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 12769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // ======= Test parse() 12869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 12969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Testing parse()"); 13069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 13169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String text = new String("-10,456.0037"); 13269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin ParsePosition pos = new ParsePosition(0); 13369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String patt = new String("#,##0.#"); 13469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat.applyPattern(patt); 13569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin double d2 = pat.parse(text, pos).doubleValue(); 13669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin if (d2 != d) { 13769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin errln( 138f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert "ERROR: Roundtrip failed (via parse(" + Double.toString(d2) + " != " + Double.toString(d) + ")) for " + text); 13969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 14069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln(text + " parsed into " + (long) d2); 14169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 14269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // ======= Test getters and setters 14369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 14469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Testing getters and setters"); 14569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 14669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin final DecimalFormatSymbols syms = pat.getDecimalFormatSymbols(); 14769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin def.setDecimalFormatSymbols(syms); 14869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin if (!pat.getDecimalFormatSymbols().equals(def.getDecimalFormatSymbols())) { 14969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin errln("ERROR: set DecimalFormatSymbols() failed"); 15069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 15169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 15269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String posPrefix; 15369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat.setPositivePrefix("+"); 15469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin posPrefix = pat.getPositivePrefix(); 15569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Positive prefix (should be +): " + posPrefix); 156495cb271e305cfb399d463f32210a371198f0abfFredrik Roubert assertEquals("ERROR: setPositivePrefix() failed", "+", posPrefix); 15769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 15869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String negPrefix; 15969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat.setNegativePrefix("-"); 16069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin negPrefix = pat.getNegativePrefix(); 16169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Negative prefix (should be -): " + negPrefix); 162495cb271e305cfb399d463f32210a371198f0abfFredrik Roubert assertEquals("ERROR: setNegativePrefix() failed", "-", negPrefix); 16369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 16469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String posSuffix; 16569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat.setPositiveSuffix("_"); 16669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin posSuffix = pat.getPositiveSuffix(); 16769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Positive suffix (should be _): " + posSuffix); 168495cb271e305cfb399d463f32210a371198f0abfFredrik Roubert assertEquals("ERROR: setPositiveSuffix() failed", "_", posSuffix); 16969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 17069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String negSuffix; 17169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat.setNegativeSuffix("~"); 17269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin negSuffix = pat.getNegativeSuffix(); 17369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Negative suffix (should be ~): " + negSuffix); 174495cb271e305cfb399d463f32210a371198f0abfFredrik Roubert assertEquals("ERROR: setNegativeSuffix() failed", "~", negSuffix); 17569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 17669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin long multiplier = 0; 17769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat.setMultiplier(8); 17869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin multiplier = pat.getMultiplier(); 17969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Multiplier (should be 8): " + multiplier); 18069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin if (multiplier != 8) { 18169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin errln("ERROR: setMultiplier() failed"); 18269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 18369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 18469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin int groupingSize = 0; 18569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat.setGroupingSize(2); 18669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin groupingSize = pat.getGroupingSize(); 18769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Grouping size (should be 2): " + (long) groupingSize); 18869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin if (groupingSize != 2) { 18969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin errln("ERROR: setGroupingSize() failed"); 19069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 19169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 19269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat.setDecimalSeparatorAlwaysShown(true); 19369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin boolean tf = pat.isDecimalSeparatorAlwaysShown(); 19469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln( 195f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert "DecimalSeparatorIsAlwaysShown (should be true) is " + (tf ? "true" : "false")); 19669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin if (tf != true) { 19769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin errln("ERROR: setDecimalSeparatorAlwaysShown() failed"); 19869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 19969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 20069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String funkyPat; 20169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin funkyPat = pat.toPattern(); 20269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Pattern is " + funkyPat); 20369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 20469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String locPat; 20569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin locPat = pat.toLocalizedPattern(); 20669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Localized pattern is " + locPat); 207f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 208f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert pat.setCurrencyPluralInfo(infoInput); 209f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert if(!infoInput.equals(pat.getCurrencyPluralInfo())) { 210f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert errln("ERROR: set/get CurrencyPluralInfo() failed"); 211f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert } 212f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 213f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 21431fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin pat.setCurrencyPluralInfo(infoInput); 21531fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin if(!infoInput.equals(pat.getCurrencyPluralInfo())) { 21631fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin errln("ERROR: set/get CurrencyPluralInfo() failed"); 21731fc099bf012524568ddeffd7fd4c9326411156bPaul Duffin } 21869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 21969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // ======= Test applyPattern() 22069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 22169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Testing applyPattern()"); 22269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 22369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String p1 = new String("#,##0.0#;(#,##0.0#)"); 22469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Applying pattern " + p1); 22569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat.applyPattern(p1); 22669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String s2; 22769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin s2 = pat.toPattern(); 22869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Extracted pattern is " + s2); 22969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin if (!s2.equals(p1)) { 230495cb271e305cfb399d463f32210a371198f0abfFredrik Roubert errln("ERROR: toPattern() result did not match pattern applied: " + p1 + " vs " + s2); 23169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 23269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 23369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String p2 = new String("#,##0.0# FF;(#,##0.0# FF)"); 23469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Applying pattern " + p2); 23569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat.applyLocalizedPattern(p2); 23669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String s3; 23769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin s3 = pat.toLocalizedPattern(); 23869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("Extracted pattern is " + s3); 239495cb271e305cfb399d463f32210a371198f0abfFredrik Roubert assertEquals("ERROR: toLocalizedPattern() result did not match pattern applied", p2, s3); 24069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 24169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // ======= Test getStaticClassID() 24269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 24369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // logln("Testing instanceof()"); 24469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 24569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // try { 24669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // NumberFormat test = new DecimalFormat(); 24769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 24869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // if (! (test instanceof DecimalFormat)) { 24969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // errln("ERROR: instanceof failed"); 25069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // } 25169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // } 25269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // catch (Exception e) { 25369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // errln("ERROR: Couldn't create a DecimalFormat"); 25469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // } 255f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 25669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 25769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 258f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 25969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin public void TestRounding() { 26069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin double Roundingnumber = 2.55; 26169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin double Roundingnumber1 = -2.55; 26269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin //+2.55 results -2.55 results 26369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin double result[] = { 264f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 3, -3, 265f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 2, -2, 266f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 3, -2, 267f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 2, -3, 268f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 3, -3, 269f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 3, -3, 270f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 3, -3 27169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin }; 27269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin DecimalFormat pat = new DecimalFormat(); 27369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String s = ""; 27469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin s = pat.toPattern(); 27569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln("pattern = " + s); 27669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin int mode; 27769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin int i = 0; 27869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String message; 27969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String resultStr; 28069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin for (mode = 0; mode < 7; mode++) { 28169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin pat.setRoundingMode(mode); 28269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin if (pat.getRoundingMode() != mode) { 28369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin errln( 284f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert "SetRoundingMode or GetRoundingMode failed for mode=" + mode); 28569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 28669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 28769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin //for +2.55 with RoundingIncrement=1.0 28805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert pat.setRoundingIncrement(java.math.BigDecimal.ONE); 28969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin resultStr = pat.format(Roundingnumber); 290f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert message = "round(" + Roundingnumber 291f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert + "," + mode + ",FALSE) with RoundingIncrement=1.0==>"; 29269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin verify(message, resultStr, result[i++]); 29369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin message = ""; 29469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin resultStr = ""; 29569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 29669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin //for -2.55 with RoundingIncrement=1.0 29769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin resultStr = pat.format(Roundingnumber1); 298f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert message = "round(" + Roundingnumber1 299f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert + "," + mode + ",FALSE) with RoundingIncrement=1.0==>"; 30069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin verify(message, resultStr, result[i++]); 30169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin message = ""; 30269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin resultStr = ""; 30369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 30469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 30569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 306f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 30769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin public void testFormatToCharacterIterator() { 30869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 30969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin Number number = new Double(350.76); 31069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin Number negativeNumber = new Double(-350.76); 31169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 31269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin Locale us = Locale.US; 31369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 31469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // test number instance 31569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin t_Format(1, number, NumberFormat.getNumberInstance(us), 31669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin getNumberVectorUS()); 31769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 31869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // test percent instance 31969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin t_Format(3, number, NumberFormat.getPercentInstance(us), 32069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin getPercentVectorUS()); 32169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 32269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // test permille pattern 32369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin DecimalFormat format = new DecimalFormat("###0.##\u2030"); 32469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin t_Format(4, number, format, getPermilleVector()); 32569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 32669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // test exponential pattern with positive exponent 32769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin format = new DecimalFormat("00.0#E0"); 32869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin t_Format(5, number, format, getPositiveExponentVector()); 32969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 33069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // test exponential pattern with negative exponent 33169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin format = new DecimalFormat("0000.0#E0"); 33269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin t_Format(6, number, format, getNegativeExponentVector()); 33369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 33469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // test currency instance with US Locale 33569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin t_Format(7, number, NumberFormat.getCurrencyInstance(us), 33669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin getPositiveCurrencyVectorUS()); 33769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 33869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // test negative currency instance with US Locale 33969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin t_Format(8, negativeNumber, NumberFormat.getCurrencyInstance(us), 34069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin getNegativeCurrencyVectorUS()); 34169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 34269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // test multiple grouping separators 34369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin number = new Long(100300400); 34469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin t_Format(11, number, NumberFormat.getNumberInstance(us), 34569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin getNumberVector2US()); 34669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 34769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // test 0 34869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin number = new Long(0); 34969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin t_Format(12, number, NumberFormat.getNumberInstance(us), 35069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin getZeroVector()); 35169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 35269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 35369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private static List<FieldContainer> getNumberVectorUS() { 35469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> v = new ArrayList<FieldContainer>(3); 35569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(0, 3, NumberFormat.Field.INTEGER)); 35669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(3, 4, NumberFormat.Field.DECIMAL_SEPARATOR)); 35769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(4, 6, NumberFormat.Field.FRACTION)); 35869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return v; 35969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 360f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 36169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// private static Vector getPositiveCurrencyVectorTR() { 36269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// Vector v = new Vector(); 36369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// v.add(new FieldContainer(0, 3, NumberFormat.Field.INTEGER)); 36469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// v.add(new FieldContainer(4, 6, NumberFormat.Field.CURRENCY)); 36569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// return v; 36669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// } 36769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// 36869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// private static Vector getNegativeCurrencyVectorTR() { 36969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// Vector v = new Vector(); 37069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// v.add(new FieldContainer(0, 1, NumberFormat.Field.SIGN)); 37169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// v.add(new FieldContainer(1, 4, NumberFormat.Field.INTEGER)); 37269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// v.add(new FieldContainer(5, 7, NumberFormat.Field.CURRENCY)); 37369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// return v; 37469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// } 37569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 37669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private static List<FieldContainer> getPositiveCurrencyVectorUS() { 37769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> v = new ArrayList<FieldContainer>(4); 37869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(0, 1, NumberFormat.Field.CURRENCY)); 37969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(1, 4, NumberFormat.Field.INTEGER)); 38069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(4, 5, NumberFormat.Field.DECIMAL_SEPARATOR)); 38169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(5, 7, NumberFormat.Field.FRACTION)); 38269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return v; 38369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 38469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 38569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private static List<FieldContainer> getNegativeCurrencyVectorUS() { 38669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> v = new ArrayList<FieldContainer>(4); 38769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // SIGN added with fix for issue 11805. 38869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(0, 1, NumberFormat.Field.SIGN)); 38969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(1, 2, NumberFormat.Field.CURRENCY)); 39069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(2, 5, NumberFormat.Field.INTEGER)); 39169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(5, 6, NumberFormat.Field.DECIMAL_SEPARATOR)); 39269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(6, 8, NumberFormat.Field.FRACTION)); 39369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return v; 39469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 39569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 39669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private static List<FieldContainer> getPercentVectorUS() { 39769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> v = new ArrayList<FieldContainer>(5); 39869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(0, 2, NumberFormat.Field.INTEGER)); 39969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(2, 3, NumberFormat.Field.INTEGER)); 40069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(2, 3, NumberFormat.Field.GROUPING_SEPARATOR)); 40169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(3, 6, NumberFormat.Field.INTEGER)); 40269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(6, 7, NumberFormat.Field.PERCENT)); 40369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return v; 40469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 40569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 40669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private static List<FieldContainer> getPermilleVector() { 40769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> v = new ArrayList<FieldContainer>(2); 40869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(0, 6, NumberFormat.Field.INTEGER)); 40969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(6, 7, NumberFormat.Field.PERMILLE)); 41069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return v; 41169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 41269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 41369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private static List<FieldContainer> getNegativeExponentVector() { 41469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> v = new ArrayList<FieldContainer>(6); 41569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(0, 4, NumberFormat.Field.INTEGER)); 41669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(4, 5, NumberFormat.Field.DECIMAL_SEPARATOR)); 41769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(5, 6, NumberFormat.Field.FRACTION)); 41869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(6, 7, NumberFormat.Field.EXPONENT_SYMBOL)); 41969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(7, 8, NumberFormat.Field.EXPONENT_SIGN)); 42069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(8, 9, NumberFormat.Field.EXPONENT)); 42169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return v; 42269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 42369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 42469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private static List<FieldContainer> getPositiveExponentVector() { 42569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> v = new ArrayList<FieldContainer>(5); 42669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(0, 2, NumberFormat.Field.INTEGER)); 42769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(2, 3, NumberFormat.Field.DECIMAL_SEPARATOR)); 42869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(3, 5, NumberFormat.Field.FRACTION)); 42969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(5, 6, NumberFormat.Field.EXPONENT_SYMBOL)); 43069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(6, 7, NumberFormat.Field.EXPONENT)); 43169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return v; 43269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 43369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 43469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private static List<FieldContainer> getNumberVector2US() { 43569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> v = new ArrayList<FieldContainer>(7); 43669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(0, 3, NumberFormat.Field.INTEGER)); 43769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(3, 4, NumberFormat.Field.GROUPING_SEPARATOR)); 43869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(3, 4, NumberFormat.Field.INTEGER)); 43969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(4, 7, NumberFormat.Field.INTEGER)); 44069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(7, 8, NumberFormat.Field.GROUPING_SEPARATOR)); 44169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(7, 8, NumberFormat.Field.INTEGER)); 44269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(8, 11, NumberFormat.Field.INTEGER)); 44369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return v; 44469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 44569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 44669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private static List<FieldContainer> getZeroVector() { 44769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> v = new ArrayList<FieldContainer>(1); 44869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin v.add(new FieldContainer(0, 1, NumberFormat.Field.INTEGER)); 44969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return v; 450f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert } 451f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 45269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private void t_Format(int count, Object object, Format format, 45369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> expectedResults) { 45469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> results = findFields(format.formatToCharacterIterator(object)); 45569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin assertTrue("Test " + count 45669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin + ": Format returned incorrect CharacterIterator for " 45769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin + format.format(object), compare(results, expectedResults)); 45869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 45969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 46069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin /** 46169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin * compares two vectors regardless of the order of their elements 46269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin */ 46369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private static boolean compare(List vector1, List vector2) { 46469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return vector1.size() == vector2.size() && vector1.containsAll(vector2); 46569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 466f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 46769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin /** 46869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin * finds attributes with regards to char index in this 46969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin * AttributedCharacterIterator, and puts them in a vector 470f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert * 47169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin * @param iterator 47269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin * @return a vector, each entry in this vector are of type FieldContainer , 47369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin * which stores start and end indexes and an attribute this range 47469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin * has 47569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin */ 47669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin private static List<FieldContainer> findFields(AttributedCharacterIterator iterator) { 47769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin List<FieldContainer> result = new ArrayList<FieldContainer>(); 47869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin while (iterator.getIndex() != iterator.getEndIndex()) { 47969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin int start = iterator.getRunStart(); 48069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin int end = iterator.getRunLimit(); 48169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 48269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin Iterator it = iterator.getAttributes().keySet().iterator(); 48369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin while (it.hasNext()) { 48469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin AttributedCharacterIterator.Attribute attribute = (AttributedCharacterIterator.Attribute) it 48569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin .next(); 48669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin Object value = iterator.getAttribute(attribute); 48769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin result.add(new FieldContainer(start, end, attribute, value)); 48869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // System.out.println(start + " " + end + ": " + attribute + ", 48969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // " + value ); 49069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // System.out.println("v.add(new FieldContainer(" + start +"," + 49169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin // end +"," + attribute+ "," + value+ "));"); 49269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 49369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin iterator.setIndex(end); 49469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 49569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return result; 49669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 49769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin protected static class FieldContainer { 49869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin int start, end; 49969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 50069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin AttributedCharacterIterator.Attribute attribute; 50169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 50269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin Object value; 50369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 50469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// called from support_decimalformat and support_simpledateformat tests 50569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin public FieldContainer(int start, int end, 50669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin AttributedCharacterIterator.Attribute attribute) { 50769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin this(start, end, attribute, attribute); 50869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 50969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 51069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// called from support_messageformat tests 51169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin public FieldContainer(int start, int end, AttributedCharacterIterator.Attribute attribute, int value) { 51269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin this(start, end, attribute, new Integer(value)); 51369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 51469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 51569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin// called from support_messageformat tests 51669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin public FieldContainer(int start, int end, AttributedCharacterIterator.Attribute attribute, 51769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin Object value) { 51869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin this.start = start; 51969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin this.end = end; 52069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin this.attribute = attribute; 52169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin this.value = value; 52269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 52369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 524f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Override 52569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin public boolean equals(Object obj) { 52669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin if (!(obj instanceof FieldContainer)) 52769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return false; 52869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 52969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin FieldContainer fc = (FieldContainer) obj; 53069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin return (start == fc.start && end == fc.end 53169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin && attribute == fc.attribute && value.equals(fc.value)); 53269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 533f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert } 53469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin 53569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin /*Helper functions */ 53669ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin public void verify(String message, String got, double expected) { 53769ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin logln(message + got + " Expected : " + (long)expected); 53869ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin String expectedStr = ""; 53969ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin expectedStr=expectedStr + (long)expected; 54069ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin if(!got.equals(expectedStr) ) { 54169ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin errln("ERROR: Round() failed: " + message + got + " Expected : " + expectedStr); 54269ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 54369ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin } 54469ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin} 54569ef1baa641465e7474f8646903b8f5fc3125534Paul Duffin//eof 546