1/* GENERATED SOURCE. DO NOT MODIFY. */
2// © 2016 and later: Unicode, Inc. and others.
3// License & terms of use: http://www.unicode.org/copyright.html#License
4/*
5 *******************************************************************************
6 * Copyright (C) 2001-2010, International Business Machines Corporation and    *
7 * others. All Rights Reserved.                                                *
8 *******************************************************************************
9 */
10
11/**
12 * Port From:   ICU4C v1.8.1 : format : IntlTestDecimalFormatSymbols
13 * Source File: $ICU4CRoot/source/test/intltest/tsdcfmsy.cpp
14 **/
15
16package android.icu.dev.test.format;
17
18import java.text.FieldPosition;
19import java.util.Locale;
20
21import org.junit.Test;
22
23import android.icu.text.DecimalFormat;
24import android.icu.text.DecimalFormatSymbols;
25
26/**
27 * Tests for DecimalFormatSymbols
28 **/
29public class IntlTestDecimalFormatSymbolsC extends android.icu.dev.test.TestFmwk {
30    /**
31     * Test the API of DecimalFormatSymbols; primarily a simple get/set set.
32     */
33    @Test
34    public void TestSymbols() {
35        DecimalFormatSymbols fr = new DecimalFormatSymbols(Locale.FRENCH);
36        DecimalFormatSymbols en = new DecimalFormatSymbols(Locale.ENGLISH);
37
38        if (en.equals(fr)) {
39            errln("ERROR: English DecimalFormatSymbols equal to French");
40        }
41
42        // just do some VERY basic tests to make sure that get/set work
43
44        char zero = en.getZeroDigit();
45        fr.setZeroDigit(zero);
46        if (fr.getZeroDigit() != en.getZeroDigit()) {
47            errln("ERROR: get/set ZeroDigit failed");
48        }
49
50        char group = en.getGroupingSeparator();
51        fr.setGroupingSeparator(group);
52        if (fr.getGroupingSeparator() != en.getGroupingSeparator()) {
53            errln("ERROR: get/set GroupingSeparator failed");
54        }
55
56        char decimal = en.getDecimalSeparator();
57        fr.setDecimalSeparator(decimal);
58        if (fr.getDecimalSeparator() != en.getDecimalSeparator()) {
59            errln("ERROR: get/set DecimalSeparator failed");
60        }
61
62        char perMill = en.getPerMill();
63        fr.setPerMill(perMill);
64        if (fr.getPerMill() != en.getPerMill()) {
65            errln("ERROR: get/set PerMill failed");
66        }
67
68        char percent = en.getPercent();
69        fr.setPercent(percent);
70        if (fr.getPercent() != en.getPercent()) {
71            errln("ERROR: get/set Percent failed");
72        }
73
74        char digit = en.getDigit();
75        fr.setDigit(digit);
76        if (fr.getPercent() != en.getPercent()) {
77            errln("ERROR: get/set Percent failed");
78        }
79
80        char patternSeparator = en.getPatternSeparator();
81        fr.setPatternSeparator(patternSeparator);
82        if (fr.getPatternSeparator() != en.getPatternSeparator()) {
83            errln("ERROR: get/set PatternSeparator failed");
84        }
85
86        String infinity = en.getInfinity();
87        fr.setInfinity(infinity);
88        String infinity2 = fr.getInfinity();
89        if (!infinity.equals(infinity2)) {
90            errln("ERROR: get/set Infinity failed");
91        }
92
93        String nan = en.getNaN();
94        fr.setNaN(nan);
95        String nan2 = fr.getNaN();
96        if (!nan.equals(nan2)) {
97            errln("ERROR: get/set NaN failed");
98        }
99
100        char minusSign = en.getMinusSign();
101        fr.setMinusSign(minusSign);
102        if (fr.getMinusSign() != en.getMinusSign()) {
103            errln("ERROR: get/set MinusSign failed");
104        }
105
106        //        char exponential = en.getExponentialSymbol();
107        //        fr.setExponentialSymbol(exponential);
108        //        if(fr.getExponentialSymbol() != en.getExponentialSymbol()) {
109        //            errln("ERROR: get/set Exponential failed");
110        //        }
111
112        //DecimalFormatSymbols foo = new DecimalFormatSymbols(); //The variable is never used
113
114        en = (DecimalFormatSymbols) fr.clone();
115
116        if (!en.equals(fr)) {
117            errln("ERROR: Clone failed");
118        }
119
120        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
121
122        verify(34.5, "00.00", sym, "34.50");
123        sym.setDecimalSeparator('S');
124        verify(34.5, "00.00", sym, "34S50");
125        sym.setPercent('P');
126        verify(34.5, "00 %", sym, "3450 P");
127        sym.setCurrencySymbol("D");
128        verify(34.5, "\u00a4##.##", sym, "D34.5");
129        sym.setGroupingSeparator('|');
130        verify(3456.5, "0,000.##", sym, "3|456S5");
131    }
132
133    /** helper functions**/
134    public void verify(double value, String pattern, DecimalFormatSymbols sym, String expected) {
135        DecimalFormat df = new DecimalFormat(pattern, sym);
136        StringBuffer buffer = new StringBuffer("");
137        FieldPosition pos = new FieldPosition(-1);
138        buffer = df.format(value, buffer, pos);
139        if(!buffer.toString().equals(expected)){
140            errln("ERROR: format failed after setSymbols()\n Expected" +
141                expected + ", Got " + buffer);
142        }
143    }
144}