Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: source/test/intltest/pluralmaptest.cpp

Issue 1621843002: ICU 56 update step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@561
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/test/intltest/numrgts.cpp ('k') | source/test/intltest/plurults.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/test/intltest/pluralmaptest.cpp
diff --git a/source/test/intltest/pluralmaptest.cpp b/source/test/intltest/pluralmaptest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..49246834c8075a7366f66aac351d06598ad55464
--- /dev/null
+++ b/source/test/intltest/pluralmaptest.cpp
@@ -0,0 +1,218 @@
+/*
+*******************************************************************************
+* Copyright (C) 2014-2015, International Business Machines Corporation and *
+* others. All Rights Reserved. *
+*******************************************************************************
+*
+* File PLURALMAPTEST.CPP
+*
+********************************************************************************
+*/
+#include "unicode/unistr.h"
+
+#include "intltest.h"
+#include "pluralmap.h"
+
+class PluralMapForPluralMapTest : public PluralMap<UnicodeString> {
+public:
+ UBool operator==(const PluralMapForPluralMapTest &other) {
+ return equals(other, strEqual);
+ }
+private:
+ static UBool strEqual(const UnicodeString &lhs, const UnicodeString &rhs) {
+ return lhs == rhs;
+ }
+};
+
+class PluralMapTest : public IntlTest {
+public:
+ PluralMapTest() {
+ }
+ void TestToCategory();
+ void TestGetCategoryName();
+ void TestGet();
+ void TestIterate();
+ void TestEqual();
+ void TestCopyAndAssign();
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
+ void addVariant(
+ PluralMapBase::Category v,
+ const UnicodeString &value,
+ PluralMapForPluralMapTest &map);
+private:
+};
+
+void PluralMapTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par*/) {
+ TESTCASE_AUTO_BEGIN;
+ TESTCASE_AUTO(TestToCategory);
+ TESTCASE_AUTO(TestGetCategoryName);
+ TESTCASE_AUTO(TestGet);
+ TESTCASE_AUTO(TestIterate);
+ TESTCASE_AUTO(TestEqual);
+ TESTCASE_AUTO(TestCopyAndAssign);
+ TESTCASE_AUTO_END;
+}
+
+void PluralMapTest::TestToCategory() {
+ assertEquals("", PluralMapBase::OTHER, PluralMapBase::toCategory("other"));
+ assertEquals("", PluralMapBase::ZERO, PluralMapBase::toCategory("zero"));
+ assertEquals("", PluralMapBase::ONE, PluralMapBase::toCategory("one"));
+ assertEquals("", PluralMapBase::TWO, PluralMapBase::toCategory("two"));
+ assertEquals("", PluralMapBase::FEW, PluralMapBase::toCategory("few"));
+ assertEquals("", PluralMapBase::MANY, PluralMapBase::toCategory("many"));
+ assertEquals("", PluralMapBase::NONE, PluralMapBase::toCategory("Many"));
+ assertEquals(
+ "",
+ PluralMapBase::FEW,
+ PluralMapBase::toCategory(UnicodeString("few")));
+ assertEquals(
+ "",
+ PluralMapBase::MANY,
+ PluralMapBase::toCategory(UnicodeString("many")));
+ assertEquals(
+ "",
+ PluralMapBase::NONE,
+ PluralMapBase::toCategory(UnicodeString("Many")));
+}
+
+void PluralMapTest::TestGetCategoryName() {
+ assertTrue("", PluralMapBase::getCategoryName(PluralMapBase::NONE) == NULL);
+ assertTrue("", PluralMapBase::getCategoryName(PluralMapBase::CATEGORY_COUNT) == NULL);
+ assertEquals("", "other", PluralMapBase::getCategoryName(PluralMapBase::OTHER));
+ assertEquals("", "zero", PluralMapBase::getCategoryName(PluralMapBase::ZERO));
+ assertEquals("", "one", PluralMapBase::getCategoryName(PluralMapBase::ONE));
+ assertEquals("", "two", PluralMapBase::getCategoryName(PluralMapBase::TWO));
+ assertEquals("", "few", PluralMapBase::getCategoryName(PluralMapBase::FEW));
+ assertEquals("", "many", PluralMapBase::getCategoryName(PluralMapBase::MANY));
+}
+
+void PluralMapTest::TestGet() {
+ PluralMapForPluralMapTest map;
+ addVariant(PluralMapBase::OTHER, "pickles", map);
+ addVariant(PluralMapBase::ONE, "pickle", map);
+ addVariant(PluralMapBase::FEW, "picklefew", map);
+ assertEquals("", "pickles", map.get(PluralMapBase::OTHER));
+ assertEquals("", "pickle", map.get(PluralMapBase::ONE));
+ assertEquals("", "picklefew", map.get(PluralMapBase::FEW));
+ assertEquals("", "pickles", map.get(PluralMapBase::MANY));
+ assertEquals("", "pickles", map.get(PluralMapBase::NONE));
+ assertEquals("", "pickles", map.get(PluralMapBase::CATEGORY_COUNT));
+ assertEquals("", "picklefew", map.get("few"));
+ assertEquals("", "pickles", map.get("many"));
+ assertEquals("", "pickles", map.get("somebadform"));
+ assertEquals("", "pickle", map.get(UnicodeString("one")));
+ assertEquals("", "pickles", map.get(UnicodeString("many")));
+ assertEquals("", "pickles", map.get(UnicodeString("somebadform")));
+ assertEquals("", "pickles", map.getOther());
+}
+
+void PluralMapTest::TestIterate() {
+ PluralMapForPluralMapTest map;
+ addVariant(PluralMapBase::OTHER, "pickles", map);
+ addVariant(PluralMapBase::ONE, "pickle", map);
+ addVariant(PluralMapBase::FEW, "pickleops", map);
+ addVariant(PluralMapBase::FEW, "picklefew", map);
+ PluralMapBase::Category index = PluralMapBase::NONE;
+ const UnicodeString *current = map.next(index);
+ assertEquals("", "pickles", *current);
+ assertEquals("", PluralMapBase::OTHER, index);
+ current = map.next(index);
+ assertEquals("", "pickle", *current);
+ assertEquals("", PluralMapBase::ONE, index);
+ current = map.next(index);
+ assertEquals("", "picklefew", *current);
+ assertEquals("", PluralMapBase::FEW, index);
+ current = map.next(index);
+ assertEquals("", PluralMapBase::CATEGORY_COUNT, index);
+ assertTrue("", current == NULL);
+
+ PluralMapForPluralMapTest map2;
+ index = PluralMapBase::NONE;
+ current = map2.next(index);
+ assertEquals("", "", *current);
+ assertEquals("", PluralMapBase::OTHER, index);
+ current = map2.next(index);
+ assertEquals("", PluralMapBase::CATEGORY_COUNT, index);
+ assertTrue("", current == NULL);
+}
+
+void PluralMapTest::TestEqual() {
+ PluralMapForPluralMapTest control;
+ addVariant(PluralMapBase::OTHER, "pickles", control);
+ addVariant(PluralMapBase::ONE, "pickle", control);
+ addVariant(PluralMapBase::FEW, "picklefew", control);
+
+ {
+ PluralMapForPluralMapTest map;
+ addVariant(PluralMapBase::FEW, "picklefew", map);
+ addVariant(PluralMapBase::OTHER, "pickles", map);
+ addVariant(PluralMapBase::ONE, "pickle", map);
+ assertTrue("", control == map);
+ addVariant(PluralMapBase::ONE, "pickl", map);
+ assertFalse("", control == map);
+ }
+ {
+ PluralMapForPluralMapTest map;
+ addVariant(PluralMapBase::MANY, "picklemany", map);
+ addVariant(PluralMapBase::OTHER, "pickles", map);
+ addVariant(PluralMapBase::ONE, "pickle", map);
+ assertFalse("", control == map);
+ }
+}
+
+void PluralMapTest::TestCopyAndAssign() {
+ PluralMapForPluralMapTest control;
+ addVariant(PluralMapBase::OTHER, "pickles", control);
+ addVariant(PluralMapBase::ONE, "pickle", control);
+ addVariant(PluralMapBase::FEW, "picklefew", control);
+ {
+ PluralMapForPluralMapTest *rhs = new PluralMapForPluralMapTest();
+ if (rhs == NULL) {
+ errln("Memory allocation error.");
+ return;
+ }
+ addVariant(PluralMapBase::OTHER, "pickles", *rhs);
+ addVariant(PluralMapBase::ONE, "pickle", *rhs);
+ addVariant(PluralMapBase::FEW, "picklefew", *rhs);
+ PluralMapForPluralMapTest lhs(*rhs);
+ delete rhs;
+ assertTrue("", lhs == control);
+ }
+ {
+ PluralMapForPluralMapTest *rhs = new PluralMapForPluralMapTest();
+ if (rhs == NULL) {
+ errln("Memory allocation error.");
+ return;
+ }
+ addVariant(PluralMapBase::OTHER, "pickles", *rhs);
+ addVariant(PluralMapBase::ONE, "pickle", *rhs);
+ addVariant(PluralMapBase::FEW, "picklefew", *rhs);
+ PluralMapForPluralMapTest lhs;
+ addVariant(PluralMapBase::OTHER, "pickles", lhs);
+ addVariant(PluralMapBase::TWO, "pickletwo", lhs);
+ addVariant(PluralMapBase::MANY, "picklemany", lhs);
+ addVariant(PluralMapBase::FEW, "picklefew", lhs);
+ lhs = *rhs;
+ delete rhs;
+ assertTrue("", lhs == control);
+ }
+
+}
+
+
+
+void PluralMapTest::addVariant(
+ PluralMapBase::Category v,
+ const UnicodeString &value,
+ PluralMapForPluralMapTest &map) {
+ UErrorCode status = U_ZERO_ERROR;
+ UnicodeString *current = map.getMutable(v, status);
+ if (!assertSuccess("", status)) {
+ return;
+ }
+ (*current) = value;
+}
+
+extern IntlTest *createPluralMapTest() {
+ return new PluralMapTest();
+}
« no previous file with comments | « source/test/intltest/numrgts.cpp ('k') | source/test/intltest/plurults.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698