/* ******************************************************************************* * Copyright (C) 2001-2010, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* */ /** * Port From: ICU4C v1.8.1 : format : IntlTestDecimalFormatSymbols * Source File: $ICU4CRoot/source/test/intltest/tsdcfmsy.cpp **/ package com.ibm.icu.dev.test.format; import java.text.FieldPosition; import java.util.Locale; import com.ibm.icu.text.DecimalFormat; import com.ibm.icu.text.DecimalFormatSymbols; /** * Tests for DecimalFormatSymbols **/ public class IntlTestDecimalFormatSymbolsC extends com.ibm.icu.dev.test.TestFmwk { public static void main(String[] args) throws Exception { new IntlTestDecimalFormatSymbolsC().run(args); } /** * Test the API of DecimalFormatSymbols; primarily a simple get/set set. */ public void TestSymbols() { DecimalFormatSymbols fr = new DecimalFormatSymbols(Locale.FRENCH); DecimalFormatSymbols en = new DecimalFormatSymbols(Locale.ENGLISH); if (en.equals(fr)) { errln("ERROR: English DecimalFormatSymbols equal to French"); } // just do some VERY basic tests to make sure that get/set work char zero = en.getZeroDigit(); fr.setZeroDigit(zero); if (fr.getZeroDigit() != en.getZeroDigit()) { errln("ERROR: get/set ZeroDigit failed"); } char group = en.getGroupingSeparator(); fr.setGroupingSeparator(group); if (fr.getGroupingSeparator() != en.getGroupingSeparator()) { errln("ERROR: get/set GroupingSeparator failed"); } char decimal = en.getDecimalSeparator(); fr.setDecimalSeparator(decimal); if (fr.getDecimalSeparator() != en.getDecimalSeparator()) { errln("ERROR: get/set DecimalSeparator failed"); } char perMill = en.getPerMill(); fr.setPerMill(perMill); if (fr.getPerMill() != en.getPerMill()) { errln("ERROR: get/set PerMill failed"); } char percent = en.getPercent(); fr.setPercent(percent); if (fr.getPercent() != en.getPercent()) { errln("ERROR: get/set Percent failed"); } char digit = en.getDigit(); fr.setDigit(digit); if (fr.getPercent() != en.getPercent()) { errln("ERROR: get/set Percent failed"); } char patternSeparator = en.getPatternSeparator(); fr.setPatternSeparator(patternSeparator); if (fr.getPatternSeparator() != en.getPatternSeparator()) { errln("ERROR: get/set PatternSeparator failed"); } String infinity = en.getInfinity(); fr.setInfinity(infinity); String infinity2 = fr.getInfinity(); if (!infinity.equals(infinity2)) { errln("ERROR: get/set Infinity failed"); } String nan = en.getNaN(); fr.setNaN(nan); String nan2 = fr.getNaN(); if (!nan.equals(nan2)) { errln("ERROR: get/set NaN failed"); } char minusSign = en.getMinusSign(); fr.setMinusSign(minusSign); if (fr.getMinusSign() != en.getMinusSign()) { errln("ERROR: get/set MinusSign failed"); } // char exponential = en.getExponentialSymbol(); // fr.setExponentialSymbol(exponential); // if(fr.getExponentialSymbol() != en.getExponentialSymbol()) { // errln("ERROR: get/set Exponential failed"); // } //DecimalFormatSymbols foo = new DecimalFormatSymbols(); //The variable is never used en = (DecimalFormatSymbols) fr.clone(); if (!en.equals(fr)) { errln("ERROR: Clone failed"); } DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US); verify(34.5, "00.00", sym, "34.50"); sym.setDecimalSeparator('S'); verify(34.5, "00.00", sym, "34S50"); sym.setPercent('P'); verify(34.5, "00 %", sym, "3450 P"); sym.setCurrencySymbol("D"); verify(34.5, "\u00a4##.##", sym, "D34.5"); sym.setGroupingSeparator('|'); verify(3456.5, "0,000.##", sym, "3|456S5"); } /** helper functions**/ public void verify(double value, String pattern, DecimalFormatSymbols sym, String expected) { DecimalFormat df = new DecimalFormat(pattern, sym); StringBuffer buffer = new StringBuffer(""); FieldPosition pos = new FieldPosition(-1); buffer = df.format(value, buffer, pos); if(!buffer.toString().equals(expected)){ errln("ERROR: format failed after setSymbols()\n Expected" + expected + ", Got " + buffer); } } }