2 *******************************************************************************
\r
3 * Copyright (C) 2001-2010, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
9 * Port From: ICU4C v1.8.1 : format : IntlTestDecimalFormatSymbols
\r
10 * Source File: $ICU4CRoot/source/test/intltest/tsdcfmsy.cpp
\r
13 package com.ibm.icu.dev.test.format;
\r
15 import java.text.FieldPosition;
\r
16 import java.util.Locale;
\r
18 import com.ibm.icu.text.DecimalFormat;
\r
19 import com.ibm.icu.text.DecimalFormatSymbols;
\r
22 * Tests for DecimalFormatSymbols
\r
24 public class IntlTestDecimalFormatSymbolsC extends com.ibm.icu.dev.test.TestFmwk {
\r
26 public static void main(String[] args) throws Exception {
\r
27 new IntlTestDecimalFormatSymbolsC().run(args);
\r
31 * Test the API of DecimalFormatSymbols; primarily a simple get/set set.
\r
33 public void TestSymbols() {
\r
34 DecimalFormatSymbols fr = new DecimalFormatSymbols(Locale.FRENCH);
\r
35 DecimalFormatSymbols en = new DecimalFormatSymbols(Locale.ENGLISH);
\r
37 if (en.equals(fr)) {
\r
38 errln("ERROR: English DecimalFormatSymbols equal to French");
\r
41 // just do some VERY basic tests to make sure that get/set work
\r
43 char zero = en.getZeroDigit();
\r
44 fr.setZeroDigit(zero);
\r
45 if (fr.getZeroDigit() != en.getZeroDigit()) {
\r
46 errln("ERROR: get/set ZeroDigit failed");
\r
49 char group = en.getGroupingSeparator();
\r
50 fr.setGroupingSeparator(group);
\r
51 if (fr.getGroupingSeparator() != en.getGroupingSeparator()) {
\r
52 errln("ERROR: get/set GroupingSeparator failed");
\r
55 char decimal = en.getDecimalSeparator();
\r
56 fr.setDecimalSeparator(decimal);
\r
57 if (fr.getDecimalSeparator() != en.getDecimalSeparator()) {
\r
58 errln("ERROR: get/set DecimalSeparator failed");
\r
61 char perMill = en.getPerMill();
\r
62 fr.setPerMill(perMill);
\r
63 if (fr.getPerMill() != en.getPerMill()) {
\r
64 errln("ERROR: get/set PerMill failed");
\r
67 char percent = en.getPercent();
\r
68 fr.setPercent(percent);
\r
69 if (fr.getPercent() != en.getPercent()) {
\r
70 errln("ERROR: get/set Percent failed");
\r
73 char digit = en.getDigit();
\r
75 if (fr.getPercent() != en.getPercent()) {
\r
76 errln("ERROR: get/set Percent failed");
\r
79 char patternSeparator = en.getPatternSeparator();
\r
80 fr.setPatternSeparator(patternSeparator);
\r
81 if (fr.getPatternSeparator() != en.getPatternSeparator()) {
\r
82 errln("ERROR: get/set PatternSeparator failed");
\r
85 String infinity = en.getInfinity();
\r
86 fr.setInfinity(infinity);
\r
87 String infinity2 = fr.getInfinity();
\r
88 if (!infinity.equals(infinity2)) {
\r
89 errln("ERROR: get/set Infinity failed");
\r
92 String nan = en.getNaN();
\r
94 String nan2 = fr.getNaN();
\r
95 if (!nan.equals(nan2)) {
\r
96 errln("ERROR: get/set NaN failed");
\r
99 char minusSign = en.getMinusSign();
\r
100 fr.setMinusSign(minusSign);
\r
101 if (fr.getMinusSign() != en.getMinusSign()) {
\r
102 errln("ERROR: get/set MinusSign failed");
\r
105 // char exponential = en.getExponentialSymbol();
\r
106 // fr.setExponentialSymbol(exponential);
\r
107 // if(fr.getExponentialSymbol() != en.getExponentialSymbol()) {
\r
108 // errln("ERROR: get/set Exponential failed");
\r
111 //DecimalFormatSymbols foo = new DecimalFormatSymbols(); //The variable is never used
\r
113 en = (DecimalFormatSymbols) fr.clone();
\r
115 if (!en.equals(fr)) {
\r
116 errln("ERROR: Clone failed");
\r
119 DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
\r
121 verify(34.5, "00.00", sym, "34.50");
\r
122 sym.setDecimalSeparator('S');
\r
123 verify(34.5, "00.00", sym, "34S50");
\r
124 sym.setPercent('P');
\r
125 verify(34.5, "00 %", sym, "3450 P");
\r
126 sym.setCurrencySymbol("D");
\r
127 verify(34.5, "\u00a4##.##", sym, "D34.5");
\r
128 sym.setGroupingSeparator('|');
\r
129 verify(3456.5, "0,000.##", sym, "3|456S5");
\r
132 /** helper functions**/
\r
133 public void verify(double value, String pattern, DecimalFormatSymbols sym, String expected) {
\r
134 DecimalFormat df = new DecimalFormat(pattern, sym);
\r
135 StringBuffer buffer = new StringBuffer("");
\r
136 FieldPosition pos = new FieldPosition(-1);
\r
137 buffer = df.format(value, buffer, pos);
\r
138 if(!buffer.toString().equals(expected)){
\r
139 errln("ERROR: format failed after setSymbols()\n Expected" +
\r
140 expected + ", Got " + buffer);
\r