| 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();
|
| +}
|
|
|