| Index: source/test/intltest/quantityformattertest.cpp
|
| diff --git a/source/test/intltest/quantityformattertest.cpp b/source/test/intltest/quantityformattertest.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0167075f5bc5babbd82a2424d0e06b79d44ecf5f
|
| --- /dev/null
|
| +++ b/source/test/intltest/quantityformattertest.cpp
|
| @@ -0,0 +1,150 @@
|
| +/*
|
| +*******************************************************************************
|
| +* Copyright (C) 2014, International Business Machines Corporation and *
|
| +* others. All Rights Reserved. *
|
| +*******************************************************************************
|
| +*
|
| +* File QUANTITYFORMATTERTEST.CPP
|
| +*
|
| +********************************************************************************
|
| +*/
|
| +#include "cstring.h"
|
| +#include "intltest.h"
|
| +#include "quantityformatter.h"
|
| +#include "simplepatternformatter.h"
|
| +#include "unicode/numfmt.h"
|
| +#include "unicode/plurrule.h"
|
| +
|
| +
|
| +class QuantityFormatterTest : public IntlTest {
|
| +public:
|
| + QuantityFormatterTest() {
|
| + }
|
| + void TestBasic();
|
| + void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
|
| +private:
|
| +};
|
| +
|
| +void QuantityFormatterTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par*/) {
|
| + TESTCASE_AUTO_BEGIN;
|
| + TESTCASE_AUTO(TestBasic);
|
| + TESTCASE_AUTO_END;
|
| +}
|
| +
|
| +void QuantityFormatterTest::TestBasic() {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| +#if !UCONFIG_NO_FORMATTING
|
| + QuantityFormatter fmt;
|
| + assertFalse(
|
| + "adding bad variant",
|
| + fmt.add("a bad variant", "{0} pounds", status));
|
| + assertEquals("adding bad variant status", U_ILLEGAL_ARGUMENT_ERROR, status);
|
| + status = U_ZERO_ERROR;
|
| + assertFalse(
|
| + "Adding bad pattern",
|
| + fmt.add("other", "{0} {1} too many placeholders", status));
|
| + assertEquals("adding bad pattern status", U_ILLEGAL_ARGUMENT_ERROR, status);
|
| + status = U_ZERO_ERROR;
|
| + assertFalse("isValid with no patterns", fmt.isValid());
|
| + assertTrue(
|
| + "Adding good pattern with no placeholders",
|
| + fmt.add("other", "no placeholder", status));
|
| + assertTrue(
|
| + "Adding good pattern",
|
| + fmt.add("other", "{0} pounds", status));
|
| + assertTrue("isValid with other", fmt.isValid());
|
| + assertTrue(
|
| + "Adding good pattern",
|
| + fmt.add("one", "{0} pound", status));
|
| +
|
| + assertEquals(
|
| + "getByVariant",
|
| + fmt.getByVariant("bad variant")->getPatternWithNoPlaceholders(),
|
| + " pounds");
|
| + assertEquals(
|
| + "getByVariant",
|
| + fmt.getByVariant("other")->getPatternWithNoPlaceholders(),
|
| + " pounds");
|
| + assertEquals(
|
| + "getByVariant",
|
| + fmt.getByVariant("one")->getPatternWithNoPlaceholders(),
|
| + " pound");
|
| + assertEquals(
|
| + "getByVariant",
|
| + fmt.getByVariant("few")->getPatternWithNoPlaceholders(),
|
| + " pounds");
|
| +
|
| + // Test copy constructor
|
| + {
|
| + QuantityFormatter copied(fmt);
|
| + assertEquals(
|
| + "copied getByVariant",
|
| + copied.getByVariant("other")->getPatternWithNoPlaceholders(),
|
| + " pounds");
|
| + assertEquals(
|
| + "copied getByVariant",
|
| + copied.getByVariant("one")->getPatternWithNoPlaceholders(),
|
| + " pound");
|
| + assertEquals(
|
| + "copied getByVariant",
|
| + copied.getByVariant("few")->getPatternWithNoPlaceholders(),
|
| + " pounds");
|
| + }
|
| +
|
| + // Test assignment
|
| + {
|
| + QuantityFormatter assigned;
|
| + assigned = fmt;
|
| + assertEquals(
|
| + "assigned getByVariant",
|
| + assigned.getByVariant("other")->getPatternWithNoPlaceholders(),
|
| + " pounds");
|
| + assertEquals(
|
| + "assigned getByVariant",
|
| + assigned.getByVariant("one")->getPatternWithNoPlaceholders(),
|
| + " pound");
|
| + assertEquals(
|
| + "assigned getByVariant",
|
| + assigned.getByVariant("few")->getPatternWithNoPlaceholders(),
|
| + " pounds");
|
| + }
|
| +
|
| + // Test format.
|
| + {
|
| + LocalPointer<NumberFormat> numfmt(
|
| + NumberFormat::createInstance(Locale::getEnglish(), status));
|
| + LocalPointer<PluralRules> plurrule(
|
| + PluralRules::forLocale("en", status));
|
| + FieldPosition pos(FieldPosition::DONT_CARE);
|
| + UnicodeString appendTo;
|
| + assertEquals(
|
| + "format singular",
|
| + "1 pound",
|
| + fmt.format(
|
| + 1,
|
| + *numfmt,
|
| + *plurrule,
|
| + appendTo,
|
| + pos,
|
| + status), TRUE);
|
| + appendTo.remove();
|
| + assertEquals(
|
| + "format plural",
|
| + "2 pounds",
|
| + fmt.format(
|
| + 2,
|
| + *numfmt,
|
| + *plurrule,
|
| + appendTo,
|
| + pos,
|
| + status), TRUE);
|
| + }
|
| + fmt.reset();
|
| + assertFalse("isValid after reset", fmt.isValid());
|
| +#endif
|
| + assertSuccess("", status);
|
| +}
|
| +
|
| +extern IntlTest *createQuantityFormatterTest() {
|
| + return new QuantityFormatterTest();
|
| +}
|
|
|