Index: source/test/intltest/simplepatternformattertest.cpp |
diff --git a/source/test/intltest/simplepatternformattertest.cpp b/source/test/intltest/simplepatternformattertest.cpp |
deleted file mode 100644 |
index 27d3316425fe1d55630adf6f41676e56ffb6fbec..0000000000000000000000000000000000000000 |
--- a/source/test/intltest/simplepatternformattertest.cpp |
+++ /dev/null |
@@ -1,470 +0,0 @@ |
-/* |
-******************************************************************************* |
-* Copyright (C) 2014, International Business Machines Corporation and * |
-* others. All Rights Reserved. * |
-******************************************************************************* |
-* |
-* File SIMPLEPATTERNFORMATTERTEST.CPP |
-* |
-******************************************************************************** |
-*/ |
-#include "cstring.h" |
-#include "intltest.h" |
-#include "simplepatternformatter.h" |
- |
-class SimplePatternFormatterTest : public IntlTest { |
-public: |
- SimplePatternFormatterTest() { |
- } |
- void TestNoPlaceholders(); |
- void TestOnePlaceholder(); |
- void TestManyPlaceholders(); |
- void TestTooFewPlaceholderValues(); |
- void TestBadArguments(); |
- void TestGetPatternWithNoPlaceholders(); |
- void TestFormatReplaceNoOptimization(); |
- void TestFormatReplaceNoOptimizationLeadingText(); |
- void TestFormatReplaceOptimization(); |
- void TestFormatReplaceNoOptimizationLeadingPlaceholderUsedTwice(); |
- void TestFormatReplaceOptimizationNoOffsets(); |
- void TestFormatReplaceNoOptimizationNoOffsets(); |
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0); |
-private: |
- void verifyOffsets( |
- const int32_t *expected, |
- const int32_t *actual, |
- int32_t count); |
-}; |
- |
-void SimplePatternFormatterTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par*/) { |
- TESTCASE_AUTO_BEGIN; |
- TESTCASE_AUTO(TestNoPlaceholders); |
- TESTCASE_AUTO(TestOnePlaceholder); |
- TESTCASE_AUTO(TestManyPlaceholders); |
- TESTCASE_AUTO(TestTooFewPlaceholderValues); |
- TESTCASE_AUTO(TestBadArguments); |
- TESTCASE_AUTO(TestGetPatternWithNoPlaceholders); |
- TESTCASE_AUTO(TestFormatReplaceNoOptimization); |
- TESTCASE_AUTO(TestFormatReplaceNoOptimizationLeadingText); |
- TESTCASE_AUTO(TestFormatReplaceOptimization); |
- TESTCASE_AUTO(TestFormatReplaceNoOptimizationLeadingPlaceholderUsedTwice); |
- TESTCASE_AUTO(TestFormatReplaceOptimizationNoOffsets); |
- TESTCASE_AUTO(TestFormatReplaceNoOptimizationNoOffsets); |
- TESTCASE_AUTO_END; |
-} |
- |
-void SimplePatternFormatterTest::TestNoPlaceholders() { |
- UErrorCode status = U_ZERO_ERROR; |
- SimplePatternFormatter fmt("This doesn''t have templates '{0}"); |
- assertEquals("PlaceholderCount", 0, fmt.getPlaceholderCount()); |
- UnicodeString appendTo; |
- assertEquals( |
- "format", |
- "This doesn't have templates {0}", |
- fmt.format("unused", appendTo, status)); |
- fmt.compile("This has {} bad {012d placeholders", status); |
- assertEquals("PlaceholderCount", 0, fmt.getPlaceholderCount()); |
- appendTo.remove(); |
- assertEquals( |
- "format", |
- "This has {} bad {012d placeholders", |
- fmt.format("unused", appendTo, status)); |
- assertSuccess("Status", status); |
-} |
- |
-void SimplePatternFormatterTest::TestOnePlaceholder() { |
- UErrorCode status = U_ZERO_ERROR; |
- SimplePatternFormatter fmt; |
- fmt.compile("{0} meter", status); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- assertEquals("PlaceholderCount", 1, fmt.getPlaceholderCount()); |
- UnicodeString appendTo; |
- assertEquals( |
- "format", |
- "1 meter", |
- fmt.format("1", appendTo, status)); |
- |
- // assignment |
- SimplePatternFormatter s; |
- s = fmt; |
- appendTo.remove(); |
- assertEquals( |
- "Assignment", |
- "1 meter", |
- s.format("1", appendTo, status)); |
- |
- // Copy constructor |
- SimplePatternFormatter r(fmt); |
- appendTo.remove(); |
- assertEquals( |
- "Copy constructor", |
- "1 meter", |
- r.format("1", appendTo, status)); |
- assertSuccess("Status", status); |
-} |
- |
-void SimplePatternFormatterTest::TestManyPlaceholders() { |
- UErrorCode status = U_ZERO_ERROR; |
- SimplePatternFormatter fmt; |
- fmt.compile( |
- "Templates {2}{1}{5} and {4} are out of order.", status); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- assertEquals("PlaceholderCount", 6, fmt.getPlaceholderCount()); |
- UnicodeString values[] = { |
- "freddy", "tommy", "frog", "billy", "leg", "{0}"}; |
- UnicodeString *params[] = { |
- &values[0], &values[1], &values[2], &values[3], &values[4], &values[5]}; |
- int32_t offsets[6]; |
- int32_t expectedOffsets[6] = {-1, 22, 18, -1, 35, 27}; |
- UnicodeString appendTo("Prefix: "); |
- assertEquals( |
- "format", |
- "Prefix: Templates frogtommy{0} and leg are out of order.", |
- fmt.formatAndAppend( |
- params, |
- UPRV_LENGTHOF(params), |
- appendTo, |
- offsets, |
- UPRV_LENGTHOF(offsets), |
- status)); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- verifyOffsets(expectedOffsets, offsets, UPRV_LENGTHOF(expectedOffsets)); |
- appendTo.remove(); |
- |
- // Ensure we don't write to offsets array beyond its length. |
- status = U_ZERO_ERROR; |
- offsets[UPRV_LENGTHOF(offsets) - 1] = 289; |
- appendTo.remove(); |
- fmt.formatAndAppend( |
- params, |
- UPRV_LENGTHOF(params), |
- appendTo, |
- offsets, |
- UPRV_LENGTHOF(offsets) - 1, |
- status); |
- assertEquals("Offsets buffer length", 289, offsets[UPRV_LENGTHOF(offsets) - 1]); |
- |
- // Test assignment |
- SimplePatternFormatter s; |
- s = fmt; |
- appendTo.remove(); |
- assertEquals( |
- "Assignment", |
- "Templates frogtommy{0} and leg are out of order.", |
- s.formatAndAppend( |
- params, |
- UPRV_LENGTHOF(params), |
- appendTo, |
- NULL, |
- 0, |
- status)); |
- |
- // Copy constructor |
- SimplePatternFormatter r(fmt); |
- appendTo.remove(); |
- assertEquals( |
- "Copy constructor", |
- "Templates frogtommy{0} and leg are out of order.", |
- r.formatAndAppend( |
- params, |
- UPRV_LENGTHOF(params), |
- appendTo, |
- NULL, |
- 0, |
- status)); |
- r.compile("{0} meter", status); |
- assertEquals("PlaceholderCount", 1, r.getPlaceholderCount()); |
- appendTo.remove(); |
- assertEquals( |
- "Replace with new compile", |
- "freddy meter", |
- r.format("freddy", appendTo, status)); |
- r.compile("{0}, {1}", status); |
- assertEquals("PlaceholderCount", 2, r.getPlaceholderCount()); |
- appendTo.remove(); |
- assertEquals( |
- "2 arg", |
- "foo, bar", |
- r.format("foo", "bar", appendTo, status)); |
- r.compile("{0}, {1} and {2}", status); |
- assertEquals("PlaceholderCount", 3, r.getPlaceholderCount()); |
- appendTo.remove(); |
- assertEquals( |
- "3 arg", |
- "foo, bar and baz", |
- r.format("foo", "bar", "baz", appendTo, status)); |
- assertSuccess("Status", status); |
-} |
- |
-void SimplePatternFormatterTest::TestTooFewPlaceholderValues() { |
- SimplePatternFormatter fmt("{0} and {1}"); |
- UnicodeString appendTo; |
- UnicodeString firstValue; |
- UnicodeString *params[] = {&firstValue}; |
- |
- UErrorCode status = U_ZERO_ERROR; |
- fmt.format( |
- firstValue, appendTo, status); |
- if (status != U_ILLEGAL_ARGUMENT_ERROR) { |
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR"); |
- } |
- |
- status = U_ZERO_ERROR; |
- fmt.formatAndAppend( |
- params, UPRV_LENGTHOF(params), appendTo, NULL, 0, status); |
- if (status != U_ILLEGAL_ARGUMENT_ERROR) { |
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR"); |
- } |
- |
- status = U_ZERO_ERROR; |
- fmt.formatAndReplace( |
- params, UPRV_LENGTHOF(params), appendTo, NULL, 0, status); |
- if (status != U_ILLEGAL_ARGUMENT_ERROR) { |
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR"); |
- } |
-} |
- |
-void SimplePatternFormatterTest::TestBadArguments() { |
- SimplePatternFormatter fmt("pickle"); |
- UnicodeString appendTo; |
- UErrorCode status = U_ZERO_ERROR; |
- |
- // These succeed |
- fmt.formatAndAppend( |
- NULL, 0, appendTo, NULL, 0, status); |
- fmt.formatAndReplace( |
- NULL, 0, appendTo, NULL, 0, status); |
- assertSuccess("", status); |
- status = U_ZERO_ERROR; |
- |
- // fails |
- fmt.formatAndAppend( |
- NULL, 1, appendTo, NULL, 0, status); |
- if (status != U_ILLEGAL_ARGUMENT_ERROR) { |
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR"); |
- } |
- status = U_ZERO_ERROR; |
- |
- // fails |
- fmt.formatAndAppend( |
- NULL, 0, appendTo, NULL, 1, status); |
- if (status != U_ILLEGAL_ARGUMENT_ERROR) { |
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR"); |
- } |
- status = U_ZERO_ERROR; |
- |
- // fails because appendTo used as a parameter value |
- const UnicodeString *params[] = {&appendTo}; |
- fmt.formatAndAppend( |
- params, UPRV_LENGTHOF(params), appendTo, NULL, 0, status); |
- if (status != U_ILLEGAL_ARGUMENT_ERROR) { |
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR"); |
- } |
- status = U_ZERO_ERROR; |
- |
- |
- // fails |
- fmt.formatAndReplace( |
- NULL, 1, appendTo, NULL, 0, status); |
- if (status != U_ILLEGAL_ARGUMENT_ERROR) { |
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR"); |
- } |
- status = U_ZERO_ERROR; |
- |
- // fails |
- fmt.formatAndReplace( |
- NULL, 0, appendTo, NULL, 1, status); |
- if (status != U_ILLEGAL_ARGUMENT_ERROR) { |
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR"); |
- } |
-} |
- |
-void SimplePatternFormatterTest::TestGetPatternWithNoPlaceholders() { |
- SimplePatternFormatter fmt("{0} has no {1} placeholders."); |
- assertEquals( |
- "", " has no placeholders.", fmt.getPatternWithNoPlaceholders()); |
-} |
- |
-void SimplePatternFormatterTest::TestFormatReplaceNoOptimization() { |
- UErrorCode status = U_ZERO_ERROR; |
- SimplePatternFormatter fmt; |
- fmt.compile("{2}, {0}, {1} and {3}", status); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- UnicodeString result("original"); |
- int offsets[4]; |
- UnicodeString freddy("freddy"); |
- UnicodeString frog("frog"); |
- UnicodeString by("by"); |
- const UnicodeString *params[] = {&result, &freddy, &frog, &by}; |
- assertEquals( |
- "", |
- "frog, original, freddy and by", |
- fmt.formatAndReplace( |
- params, |
- UPRV_LENGTHOF(params), |
- result, |
- offsets, |
- UPRV_LENGTHOF(offsets), |
- status)); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- int32_t expectedOffsets[] = {6, 16, 0, 27}; |
- verifyOffsets(expectedOffsets, offsets, UPRV_LENGTHOF(expectedOffsets)); |
-} |
- |
-void SimplePatternFormatterTest::TestFormatReplaceNoOptimizationLeadingText() { |
- UErrorCode status = U_ZERO_ERROR; |
- SimplePatternFormatter fmt; |
- fmt.compile("boo {2}, {0}, {1} and {3}", status); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- UnicodeString result("original"); |
- int offsets[4]; |
- UnicodeString freddy("freddy"); |
- UnicodeString frog("frog"); |
- UnicodeString by("by"); |
- const UnicodeString *params[] = {&freddy, &frog, &result, &by}; |
- assertEquals( |
- "", |
- "boo original, freddy, frog and by", |
- fmt.formatAndReplace( |
- params, |
- UPRV_LENGTHOF(params), |
- result, |
- offsets, |
- UPRV_LENGTHOF(offsets), |
- status)); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- int32_t expectedOffsets[] = {14, 22, 4, 31}; |
- verifyOffsets(expectedOffsets, offsets, UPRV_LENGTHOF(expectedOffsets)); |
-} |
- |
-void SimplePatternFormatterTest::TestFormatReplaceOptimization() { |
- UErrorCode status = U_ZERO_ERROR; |
- SimplePatternFormatter fmt; |
- fmt.compile("{2}, {0}, {1} and {3}", status); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- UnicodeString result("original"); |
- int offsets[4]; |
- UnicodeString freddy("freddy"); |
- UnicodeString frog("frog"); |
- UnicodeString by("by"); |
- const UnicodeString *params[] = {&freddy, &frog, &result, &by}; |
- assertEquals( |
- "", |
- "original, freddy, frog and by", |
- fmt.formatAndReplace( |
- params, |
- UPRV_LENGTHOF(params), |
- result, |
- offsets, |
- UPRV_LENGTHOF(offsets), |
- status)); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- int32_t expectedOffsets[] = {10, 18, 0, 27}; |
- verifyOffsets(expectedOffsets, offsets, UPRV_LENGTHOF(expectedOffsets)); |
-} |
- |
-void SimplePatternFormatterTest::TestFormatReplaceNoOptimizationLeadingPlaceholderUsedTwice() { |
- UErrorCode status = U_ZERO_ERROR; |
- SimplePatternFormatter fmt; |
- fmt.compile("{2}, {0}, {1} and {3} {2}", status); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- UnicodeString result("original"); |
- int offsets[4]; |
- UnicodeString freddy("freddy"); |
- UnicodeString frog("frog"); |
- UnicodeString by("by"); |
- const UnicodeString *params[] = {&freddy, &frog, &result, &by}; |
- assertEquals( |
- "", |
- "original, freddy, frog and by original", |
- fmt.formatAndReplace( |
- params, |
- UPRV_LENGTHOF(params), |
- result, |
- offsets, |
- UPRV_LENGTHOF(offsets), |
- status)); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- int32_t expectedOffsets[] = {10, 18, 30, 27}; |
- verifyOffsets(expectedOffsets, offsets, UPRV_LENGTHOF(expectedOffsets)); |
-} |
- |
-void SimplePatternFormatterTest::TestFormatReplaceOptimizationNoOffsets() { |
- UErrorCode status = U_ZERO_ERROR; |
- SimplePatternFormatter fmt; |
- fmt.compile("{2}, {0}, {1} and {3}", status); |
- if (!assertSuccess("Status", status)) { |
- return; |
- } |
- UnicodeString result("original"); |
- UnicodeString freddy("freddy"); |
- UnicodeString frog("frog"); |
- UnicodeString by("by"); |
- const UnicodeString *params[] = {&freddy, &frog, &result, &by}; |
- assertEquals( |
- "", |
- "original, freddy, frog and by", |
- fmt.formatAndReplace( |
- params, |
- UPRV_LENGTHOF(params), |
- result, |
- NULL, |
- 0, |
- status)); |
- assertSuccess("Status", status); |
-} |
- |
-void SimplePatternFormatterTest::TestFormatReplaceNoOptimizationNoOffsets() { |
- UErrorCode status = U_ZERO_ERROR; |
- SimplePatternFormatter fmt("Placeholders {0} and {1}"); |
- UnicodeString result("previous:"); |
- UnicodeString frog("frog"); |
- const UnicodeString *params[] = {&result, &frog}; |
- assertEquals( |
- "", |
- "Placeholders previous: and frog", |
- fmt.formatAndReplace( |
- params, |
- UPRV_LENGTHOF(params), |
- result, |
- NULL, |
- 0, |
- status)); |
- assertSuccess("Status", status); |
-} |
- |
-void SimplePatternFormatterTest::verifyOffsets( |
- const int32_t *expected, const int32_t *actual, int32_t count) { |
- for (int32_t i = 0; i < count; ++i) { |
- if (expected[i] != actual[i]) { |
- errln("Expected %d, got %d", expected[i], actual[i]); |
- } |
- } |
-} |
- |
-extern IntlTest *createSimplePatternFormatterTest() { |
- return new SimplePatternFormatterTest(); |
-} |
- |