]> granicus.if.org Git - icu/commitdiff
ICU-13447 Add test for break iterator getRuleStatus() at end of iteration.
authorAndy Heninger <andy.heninger@gmail.com>
Tue, 27 Feb 2018 22:53:26 +0000 (22:53 +0000)
committerAndy Heninger <andy.heninger@gmail.com>
Tue, 27 Feb 2018 22:53:26 +0000 (22:53 +0000)
X-SVN-Rev: 40998

icu4c/source/test/intltest/rbbitst.cpp
icu4c/source/test/intltest/rbbitst.h
icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITest.java

index 1e0901c427b765c45adcd17a3b9334e9ffeb74db..b0994c28a3e924327b4f93dc9451a97556c5c1c8 100644 (file)
@@ -110,6 +110,7 @@ void RBBITest::runIndexedTest( int32_t index, UBool exec, const char* &name, cha
     TESTCASE_AUTO(TestBug12519);
     TESTCASE_AUTO(TestBug12677);
     TESTCASE_AUTO(TestTableRedundancies);
+    TESTCASE_AUTO(TestBug13447);
     TESTCASE_AUTO_END;
 }
 
@@ -4518,6 +4519,21 @@ void RBBITest::TestTableRedundancies() {
     }
 }
 
+void RBBITest::TestBug13447() {
+    UErrorCode status = U_ZERO_ERROR;
+    LocalPointer<RuleBasedBreakIterator> bi(
+        (RuleBasedBreakIterator *)BreakIterator::createWordInstance(Locale::getEnglish(), status));
+    assertSuccess(WHERE, status);
+    if (U_FAILURE(status)) return;
+    UnicodeString data(u"1234");
+    bi->setText(data);
+    assertEquals(WHERE, UBRK_WORD_NONE, bi->getRuleStatus());
+    assertEquals(WHERE, 4, bi->next());
+    assertEquals(WHERE, UBRK_WORD_NUMBER, bi->getRuleStatus());
+    assertEquals(WHERE, UBRK_DONE, bi->next());
+    assertEquals(WHERE, 4, bi->current());
+    assertEquals(WHERE, UBRK_WORD_NUMBER, bi->getRuleStatus());
+}
 
 //
 //  TestDebug    -  A place-holder test for debugging purposes.
index 0977c98a0fb696aa9f75a2bc5f214801ab8b205a..21fdfb9f01ac5b905dc73943cb15506b235f71cb 100644 (file)
@@ -76,6 +76,7 @@ public:
     void TestBug12519();
     void TestBug12677();
     void TestTableRedundancies();
+    void TestBug13447();
 
     void TestDebug();
     void TestProperties();
index 4151b8146ca30de94b066324dcee6e71dbc3521f..17230632ec443f26fc96062840565a8a06c12d36 100644 (file)
@@ -624,6 +624,21 @@ public class RBBITest extends TestFmwk {
         }
     }
 
+    @Test
+    public void TestBug13447() {
+        // Bug 13447: verify that getRuleStatus() returns the value corresponding to current(),
+        //  even after next() has returned DONE.
+       RuleBasedBreakIterator bi =
+                (RuleBasedBreakIterator)BreakIterator.getWordInstance(Locale.ENGLISH);
+        bi.setText("1234");
+        assertEquals("", BreakIterator.WORD_NONE, bi.getRuleStatus());
+        assertEquals("", 4, bi.next());
+        assertEquals("", BreakIterator.WORD_NUMBER, bi.getRuleStatus());
+        assertEquals("", BreakIterator.DONE, bi.next());
+        assertEquals("", 4, bi.current());
+        assertEquals("", BreakIterator.WORD_NUMBER, bi.getRuleStatus());
+    }
+
     @Test
     public void TestTableRebuild() {
         // Test to verify that rebuilding the state tables from rule source for the standard