| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 ******************************************************************************* | |
| 3 * Copyright (C) 2014-2015, 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 | |
| 19 class QuantityFormatterTest : public IntlTest { | |
| 20 public: | |
| 21 QuantityFormatterTest() { | |
| 22 } | |
| 23 void TestBasic(); | |
| 24 void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=
0); | |
| 25 private: | |
| 26 }; | |
| 27 | |
| 28 void 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 | |
| 34 void QuantityFormatterTest::TestBasic() { | |
| 35 UErrorCode status = U_ZERO_ERROR; | |
| 36 #if !UCONFIG_NO_FORMATTING | |
| 37 QuantityFormatter fmt; | |
| 38 assertFalse( | |
| 39 "adding bad variant", | |
| 40 fmt.addIfAbsent("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.addIfAbsent("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.addIfAbsent("zero", "no placeholder", status)); | |
| 52 assertTrue( | |
| 53 "Adding good pattern", | |
| 54 fmt.addIfAbsent("other", "{0} pounds", status)); | |
| 55 assertTrue("isValid with other", fmt.isValid()); | |
| 56 assertTrue( | |
| 57 "Adding good pattern", | |
| 58 fmt.addIfAbsent("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 | |
| 148 extern IntlTest *createQuantityFormatterTest() { | |
| 149 return new QuantityFormatterTest(); | |
| 150 } | |
| OLD | NEW |