]> git.saurik.com Git - apple/icu.git/blame - icuSources/test/intltest/quantityformattertest.cpp
ICU-551.41.tar.gz
[apple/icu.git] / icuSources / test / intltest / quantityformattertest.cpp
CommitLineData
b331163b
A
1/*
2*******************************************************************************
3* Copyright (C) 2014, International Business Machines Corporation and *
4* others. All Rights Reserved. *
5*******************************************************************************
6*
7* File QUANTITYFORMATTERTEST.CPP
8*
9********************************************************************************
10*/
11#include "cstring.h"
12#include "intltest.h"
13#include "quantityformatter.h"
14#include "simplepatternformatter.h"
15#include "unicode/numfmt.h"
16#include "unicode/plurrule.h"
17
18
19class QuantityFormatterTest : public IntlTest {
20public:
21 QuantityFormatterTest() {
22 }
23 void TestBasic();
24 void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
25private:
26};
27
28void QuantityFormatterTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par*/) {
29 TESTCASE_AUTO_BEGIN;
30 TESTCASE_AUTO(TestBasic);
31 TESTCASE_AUTO_END;
32}
33
34void QuantityFormatterTest::TestBasic() {
35 UErrorCode status = U_ZERO_ERROR;
36#if !UCONFIG_NO_FORMATTING
37 QuantityFormatter fmt;
38 assertFalse(
39 "adding bad variant",
40 fmt.add("a bad variant", "{0} pounds", status));
41 assertEquals("adding bad variant status", U_ILLEGAL_ARGUMENT_ERROR, status);
42 status = U_ZERO_ERROR;
43 assertFalse(
44 "Adding bad pattern",
45 fmt.add("other", "{0} {1} too many placeholders", status));
46 assertEquals("adding bad pattern status", U_ILLEGAL_ARGUMENT_ERROR, status);
47 status = U_ZERO_ERROR;
48 assertFalse("isValid with no patterns", fmt.isValid());
49 assertTrue(
50 "Adding good pattern with no placeholders",
51 fmt.add("other", "no placeholder", status));
52 assertTrue(
53 "Adding good pattern",
54 fmt.add("other", "{0} pounds", status));
55 assertTrue("isValid with other", fmt.isValid());
56 assertTrue(
57 "Adding good pattern",
58 fmt.add("one", "{0} pound", status));
59
60 assertEquals(
61 "getByVariant",
62 fmt.getByVariant("bad variant")->getPatternWithNoPlaceholders(),
63 " pounds");
64 assertEquals(
65 "getByVariant",
66 fmt.getByVariant("other")->getPatternWithNoPlaceholders(),
67 " pounds");
68 assertEquals(
69 "getByVariant",
70 fmt.getByVariant("one")->getPatternWithNoPlaceholders(),
71 " pound");
72 assertEquals(
73 "getByVariant",
74 fmt.getByVariant("few")->getPatternWithNoPlaceholders(),
75 " pounds");
76
77 // Test copy constructor
78 {
79 QuantityFormatter copied(fmt);
80 assertEquals(
81 "copied getByVariant",
82 copied.getByVariant("other")->getPatternWithNoPlaceholders(),
83 " pounds");
84 assertEquals(
85 "copied getByVariant",
86 copied.getByVariant("one")->getPatternWithNoPlaceholders(),
87 " pound");
88 assertEquals(
89 "copied getByVariant",
90 copied.getByVariant("few")->getPatternWithNoPlaceholders(),
91 " pounds");
92 }
93
94 // Test assignment
95 {
96 QuantityFormatter assigned;
97 assigned = fmt;
98 assertEquals(
99 "assigned getByVariant",
100 assigned.getByVariant("other")->getPatternWithNoPlaceholders(),
101 " pounds");
102 assertEquals(
103 "assigned getByVariant",
104 assigned.getByVariant("one")->getPatternWithNoPlaceholders(),
105 " pound");
106 assertEquals(
107 "assigned getByVariant",
108 assigned.getByVariant("few")->getPatternWithNoPlaceholders(),
109 " pounds");
110 }
111
112 // Test format.
113 {
114 LocalPointer<NumberFormat> numfmt(
115 NumberFormat::createInstance(Locale::getEnglish(), status));
116 LocalPointer<PluralRules> plurrule(
117 PluralRules::forLocale("en", status));
118 FieldPosition pos(FieldPosition::DONT_CARE);
119 UnicodeString appendTo;
120 assertEquals(
121 "format singular",
122 "1 pound",
123 fmt.format(
124 1,
125 *numfmt,
126 *plurrule,
127 appendTo,
128 pos,
129 status), TRUE);
130 appendTo.remove();
131 assertEquals(
132 "format plural",
133 "2 pounds",
134 fmt.format(
135 2,
136 *numfmt,
137 *plurrule,
138 appendTo,
139 pos,
140 status), TRUE);
141 }
142 fmt.reset();
143 assertFalse("isValid after reset", fmt.isValid());
144#endif
145 assertSuccess("", status);
146}
147
148extern IntlTest *createQuantityFormatterTest() {
149 return new QuantityFormatterTest();
150}