OLD | NEW |
| (Empty) |
1 /* | |
2 ******************************************************************************* | |
3 * Copyright (C) 2014-2015, International Business Machines Corporation and * | |
4 * others. All Rights Reserved. * | |
5 ******************************************************************************* | |
6 * | |
7 * File PLURALMAPTEST.CPP | |
8 * | |
9 ******************************************************************************** | |
10 */ | |
11 #include "unicode/unistr.h" | |
12 | |
13 #include "intltest.h" | |
14 #include "pluralmap.h" | |
15 | |
16 class PluralMapForPluralMapTest : public PluralMap<UnicodeString> { | |
17 public: | |
18 UBool operator==(const PluralMapForPluralMapTest &other) { | |
19 return equals(other, strEqual); | |
20 } | |
21 private: | |
22 static UBool strEqual(const UnicodeString &lhs, const UnicodeString &rhs) { | |
23 return lhs == rhs; | |
24 } | |
25 }; | |
26 | |
27 class PluralMapTest : public IntlTest { | |
28 public: | |
29 PluralMapTest() { | |
30 } | |
31 void TestToCategory(); | |
32 void TestGetCategoryName(); | |
33 void TestGet(); | |
34 void TestIterate(); | |
35 void TestEqual(); | |
36 void TestCopyAndAssign(); | |
37 void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=
0); | |
38 void addVariant( | |
39 PluralMapBase::Category v, | |
40 const UnicodeString &value, | |
41 PluralMapForPluralMapTest &map); | |
42 private: | |
43 }; | |
44 | |
45 void PluralMapTest::runIndexedTest(int32_t index, UBool exec, const char* &name,
char* /*par*/) { | |
46 TESTCASE_AUTO_BEGIN; | |
47 TESTCASE_AUTO(TestToCategory); | |
48 TESTCASE_AUTO(TestGetCategoryName); | |
49 TESTCASE_AUTO(TestGet); | |
50 TESTCASE_AUTO(TestIterate); | |
51 TESTCASE_AUTO(TestEqual); | |
52 TESTCASE_AUTO(TestCopyAndAssign); | |
53 TESTCASE_AUTO_END; | |
54 } | |
55 | |
56 void PluralMapTest::TestToCategory() { | |
57 assertEquals("", PluralMapBase::OTHER, PluralMapBase::toCategory("other")); | |
58 assertEquals("", PluralMapBase::ZERO, PluralMapBase::toCategory("zero")); | |
59 assertEquals("", PluralMapBase::ONE, PluralMapBase::toCategory("one")); | |
60 assertEquals("", PluralMapBase::TWO, PluralMapBase::toCategory("two")); | |
61 assertEquals("", PluralMapBase::FEW, PluralMapBase::toCategory("few")); | |
62 assertEquals("", PluralMapBase::MANY, PluralMapBase::toCategory("many")); | |
63 assertEquals("", PluralMapBase::NONE, PluralMapBase::toCategory("Many")); | |
64 assertEquals( | |
65 "", | |
66 PluralMapBase::FEW, | |
67 PluralMapBase::toCategory(UnicodeString("few"))); | |
68 assertEquals( | |
69 "", | |
70 PluralMapBase::MANY, | |
71 PluralMapBase::toCategory(UnicodeString("many"))); | |
72 assertEquals( | |
73 "", | |
74 PluralMapBase::NONE, | |
75 PluralMapBase::toCategory(UnicodeString("Many"))); | |
76 } | |
77 | |
78 void PluralMapTest::TestGetCategoryName() { | |
79 assertTrue("", PluralMapBase::getCategoryName(PluralMapBase::NONE) == NULL); | |
80 assertTrue("", PluralMapBase::getCategoryName(PluralMapBase::CATEGORY_COUNT)
== NULL); | |
81 assertEquals("", "other", PluralMapBase::getCategoryName(PluralMapBase::OTHE
R)); | |
82 assertEquals("", "zero", PluralMapBase::getCategoryName(PluralMapBase::ZERO)
); | |
83 assertEquals("", "one", PluralMapBase::getCategoryName(PluralMapBase::ONE)); | |
84 assertEquals("", "two", PluralMapBase::getCategoryName(PluralMapBase::TWO)); | |
85 assertEquals("", "few", PluralMapBase::getCategoryName(PluralMapBase::FEW)); | |
86 assertEquals("", "many", PluralMapBase::getCategoryName(PluralMapBase::MANY)
); | |
87 } | |
88 | |
89 void PluralMapTest::TestGet() { | |
90 PluralMapForPluralMapTest map; | |
91 addVariant(PluralMapBase::OTHER, "pickles", map); | |
92 addVariant(PluralMapBase::ONE, "pickle", map); | |
93 addVariant(PluralMapBase::FEW, "picklefew", map); | |
94 assertEquals("", "pickles", map.get(PluralMapBase::OTHER)); | |
95 assertEquals("", "pickle", map.get(PluralMapBase::ONE)); | |
96 assertEquals("", "picklefew", map.get(PluralMapBase::FEW)); | |
97 assertEquals("", "pickles", map.get(PluralMapBase::MANY)); | |
98 assertEquals("", "pickles", map.get(PluralMapBase::NONE)); | |
99 assertEquals("", "pickles", map.get(PluralMapBase::CATEGORY_COUNT)); | |
100 assertEquals("", "picklefew", map.get("few")); | |
101 assertEquals("", "pickles", map.get("many")); | |
102 assertEquals("", "pickles", map.get("somebadform")); | |
103 assertEquals("", "pickle", map.get(UnicodeString("one"))); | |
104 assertEquals("", "pickles", map.get(UnicodeString("many"))); | |
105 assertEquals("", "pickles", map.get(UnicodeString("somebadform"))); | |
106 assertEquals("", "pickles", map.getOther()); | |
107 } | |
108 | |
109 void PluralMapTest::TestIterate() { | |
110 PluralMapForPluralMapTest map; | |
111 addVariant(PluralMapBase::OTHER, "pickles", map); | |
112 addVariant(PluralMapBase::ONE, "pickle", map); | |
113 addVariant(PluralMapBase::FEW, "pickleops", map); | |
114 addVariant(PluralMapBase::FEW, "picklefew", map); | |
115 PluralMapBase::Category index = PluralMapBase::NONE; | |
116 const UnicodeString *current = map.next(index); | |
117 assertEquals("", "pickles", *current); | |
118 assertEquals("", PluralMapBase::OTHER, index); | |
119 current = map.next(index); | |
120 assertEquals("", "pickle", *current); | |
121 assertEquals("", PluralMapBase::ONE, index); | |
122 current = map.next(index); | |
123 assertEquals("", "picklefew", *current); | |
124 assertEquals("", PluralMapBase::FEW, index); | |
125 current = map.next(index); | |
126 assertEquals("", PluralMapBase::CATEGORY_COUNT, index); | |
127 assertTrue("", current == NULL); | |
128 | |
129 PluralMapForPluralMapTest map2; | |
130 index = PluralMapBase::NONE; | |
131 current = map2.next(index); | |
132 assertEquals("", "", *current); | |
133 assertEquals("", PluralMapBase::OTHER, index); | |
134 current = map2.next(index); | |
135 assertEquals("", PluralMapBase::CATEGORY_COUNT, index); | |
136 assertTrue("", current == NULL); | |
137 } | |
138 | |
139 void PluralMapTest::TestEqual() { | |
140 PluralMapForPluralMapTest control; | |
141 addVariant(PluralMapBase::OTHER, "pickles", control); | |
142 addVariant(PluralMapBase::ONE, "pickle", control); | |
143 addVariant(PluralMapBase::FEW, "picklefew", control); | |
144 | |
145 { | |
146 PluralMapForPluralMapTest map; | |
147 addVariant(PluralMapBase::FEW, "picklefew", map); | |
148 addVariant(PluralMapBase::OTHER, "pickles", map); | |
149 addVariant(PluralMapBase::ONE, "pickle", map); | |
150 assertTrue("", control == map); | |
151 addVariant(PluralMapBase::ONE, "pickl", map); | |
152 assertFalse("", control == map); | |
153 } | |
154 { | |
155 PluralMapForPluralMapTest map; | |
156 addVariant(PluralMapBase::MANY, "picklemany", map); | |
157 addVariant(PluralMapBase::OTHER, "pickles", map); | |
158 addVariant(PluralMapBase::ONE, "pickle", map); | |
159 assertFalse("", control == map); | |
160 } | |
161 } | |
162 | |
163 void PluralMapTest::TestCopyAndAssign() { | |
164 PluralMapForPluralMapTest control; | |
165 addVariant(PluralMapBase::OTHER, "pickles", control); | |
166 addVariant(PluralMapBase::ONE, "pickle", control); | |
167 addVariant(PluralMapBase::FEW, "picklefew", control); | |
168 { | |
169 PluralMapForPluralMapTest *rhs = new PluralMapForPluralMapTest(); | |
170 if (rhs == NULL) { | |
171 errln("Memory allocation error."); | |
172 return; | |
173 } | |
174 addVariant(PluralMapBase::OTHER, "pickles", *rhs); | |
175 addVariant(PluralMapBase::ONE, "pickle", *rhs); | |
176 addVariant(PluralMapBase::FEW, "picklefew", *rhs); | |
177 PluralMapForPluralMapTest lhs(*rhs); | |
178 delete rhs; | |
179 assertTrue("", lhs == control); | |
180 } | |
181 { | |
182 PluralMapForPluralMapTest *rhs = new PluralMapForPluralMapTest(); | |
183 if (rhs == NULL) { | |
184 errln("Memory allocation error."); | |
185 return; | |
186 } | |
187 addVariant(PluralMapBase::OTHER, "pickles", *rhs); | |
188 addVariant(PluralMapBase::ONE, "pickle", *rhs); | |
189 addVariant(PluralMapBase::FEW, "picklefew", *rhs); | |
190 PluralMapForPluralMapTest lhs; | |
191 addVariant(PluralMapBase::OTHER, "pickles", lhs); | |
192 addVariant(PluralMapBase::TWO, "pickletwo", lhs); | |
193 addVariant(PluralMapBase::MANY, "picklemany", lhs); | |
194 addVariant(PluralMapBase::FEW, "picklefew", lhs); | |
195 lhs = *rhs; | |
196 delete rhs; | |
197 assertTrue("", lhs == control); | |
198 } | |
199 | |
200 } | |
201 | |
202 | |
203 | |
204 void PluralMapTest::addVariant( | |
205 PluralMapBase::Category v, | |
206 const UnicodeString &value, | |
207 PluralMapForPluralMapTest &map) { | |
208 UErrorCode status = U_ZERO_ERROR; | |
209 UnicodeString *current = map.getMutable(v, status); | |
210 if (!assertSuccess("", status)) { | |
211 return; | |
212 } | |
213 (*current) = value; | |
214 } | |
215 | |
216 extern IntlTest *createPluralMapTest() { | |
217 return new PluralMapTest(); | |
218 } | |
OLD | NEW |