17935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 27935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2001-2014, International Business Machines Corporation and * 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved. * 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Port From: ICU4C v1.8.1 : rbbi : RBBIAPITest 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Source File: $ICU4CRoot/source/test/intltest/rbbiapts.cpp 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/ 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.dev.test.rbbi; 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.text.CharacterIterator; 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.text.StringCharacterIterator; 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Locale; 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.BreakIterator; 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.RuleBasedBreakIterator; 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.util.ULocale; 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * API Test the RuleBasedBreakIterator class 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class RBBIAPITest extends com.ibm.icu.dev.test.TestFmwk { 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static void main(String[] args) throws Exception { 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new RBBIAPITest().run(args); 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Tests clone() and equals() methods of RuleBasedBreakIterator 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/ 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestCloneEquals() { 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator biequal = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String testString = "Testing word break iterators's clone() and equals()"; 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi1.setText(testString); 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi2.setText(testString); 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert biequal.setText(testString); 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi3.setText("hello"); 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Testing equals()"); 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Testing == and !="); 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!bi1.equals(biequal) || bi1.equals(bi2) || bi1.equals(bi3)) 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR:1 RBBI's == and !- operator failed."); 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (bi2.equals(biequal) || bi2.equals(bi1) || biequal.equals(bi3)) 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR:2 RBBI's == and != operator failed."); 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Testing clone()"); 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi1clone = (RuleBasedBreakIterator) bi1.clone(); 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi2clone = (RuleBasedBreakIterator) bi2.clone(); 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!bi1clone.equals(bi1) 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || !bi1clone.equals(biequal) 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || bi1clone.equals(bi3) 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || bi1clone.equals(bi2)) 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR:1 RBBI's clone() method failed"); 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (bi2clone.equals(bi1) 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || bi2clone.equals(biequal) 647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || bi2clone.equals(bi3) 657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || !bi2clone.equals(bi2)) 667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR:2 RBBI's clone() method failed"); 677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!bi1.getText().equals(bi1clone.getText()) 697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || !bi2clone.getText().equals(bi2.getText()) 707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || bi2clone.equals(bi1clone)) 717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: RBBI's clone() method failed"); 727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Tests toString() method of RuleBasedBreakIterator 767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/ 777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestToString() { 787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Testing toString()"); 817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi1.setText("Hello there"); 827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) bi1.clone(); 837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String temp = bi1.toString(); 847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String temp2 = bi2.toString(); 857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String temp3 = bi3.toString(); 867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (temp2.equals(temp3) || temp.equals(temp2) || !temp.equals(temp3)) 877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: error in toString() method"); 887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Tests the method hashCode() of RuleBasedBreakIterator 927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/ 937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestHashCode() { 947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Testing hashCode()"); 987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi1.setText("Hash code"); 997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi2.setText("Hash code"); 1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi3.setText("Hash code"); 1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi1clone = (RuleBasedBreakIterator) bi1.clone(); 1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator bi2clone = (RuleBasedBreakIterator) bi2.clone(); 1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (bi1.hashCode() != bi1clone.hashCode() 1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || bi1.hashCode() != bi3.hashCode() 1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || bi1clone.hashCode() != bi3.hashCode() 1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || bi2.hashCode() != bi2clone.hashCode()) 1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: identical objects have different hashcodes"); 1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (bi1.hashCode() == bi2.hashCode() 1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || bi2.hashCode() == bi3.hashCode() 1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || bi1clone.hashCode() == bi2clone.hashCode() 1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || bi1clone.hashCode() == bi2.hashCode()) 1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: different objects have same hashcodes"); 1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Tests the methods getText() and setText() of RuleBasedBreakIterator 1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/ 1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestGetSetText() { 1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Testing getText setText "); 1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str1 = "first string."; 1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str2 = "Second string."; 1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert //RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert CharacterIterator text1 = new StringCharacterIterator(str1); 1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert //CharacterIterator text1Clone = (CharacterIterator) text1.clone(); 1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert //CharacterIterator text2 = new StringCharacterIterator(str2); 1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert wordIter1.setText(str1); 1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!wordIter1.getText().equals(text1)) 1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR:1 error in setText or getText "); 1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (wordIter1.current() != 0) 1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR:1 setText did not set the iteration position to the beginning of the text, it is" 1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert + wordIter1.current() + "\n"); 1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert wordIter1.next(2); 1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert wordIter1.setText(str2); 1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (wordIter1.current() != 0) 1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR:2 setText did not reset the iteration position to the beginning of the text, it is" 1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert + wordIter1.current() + "\n"); 1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert //ICU4J has remove the method adoptText 1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* 1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert charIter1.adoptText(text1Clone); 1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (wordIter1.getText() == charIter1.getText() 1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || wordIter1.getText() != text2 1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert || charIter1.getText() != text1) 1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln((UnicodeString) "ERROR:2 error is getText or setText()"); 1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator rb = (RuleBasedBreakIterator) wordIter1.clone(); 1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert rb.adoptText(text1); 1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (rb.getText() != text1) 1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln((UnicodeString) "ERROR:1 error in adoptText "); 1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert rb.adoptText(text2); 1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (rb.getText() != text2) 1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln((UnicodeString) "ERROR:2 error in adoptText "); 1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Testing the methods first(), next(), next(int) and following() of RuleBasedBreakIterator 1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * TODO: Most of this test should be retired, rule behavior is much better covered by 1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * TestExtended, which is also easier to understand and maintain. 1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/ 1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestFirstNextFollowing() { 1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int p, q; 1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String testString = "This is a word break. Isn't it? 2.25"; 1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Testing first() and next(), following() with custom rules"); 1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("testing word iterator - string :- \"" + testString + "\"\n"); 1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert wordIter1.setText(testString); 1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = wordIter1.first(); 1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != 0) 1717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: first() returned" + p + "instead of 0"); 1727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.next(9); 1737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 20, "This is a word break"); 1747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 1757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.next(); 1767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 21, "."); 1777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 1787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.next(3); 1797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 28, " Isn't "); 1807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 1817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.next(2); 1827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 31, "it?"); 1837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.following(2); 1847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 2, q, 4, "is"); 1857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.following(22); 1867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 22, q, 27, "Isn't"); 1877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert wordIter1.last(); 1887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = wordIter1.next(); 1897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.following(wordIter1.last()); 1907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != BreakIterator.DONE || q != BreakIterator.DONE) 1917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: next()/following() at last position returned #" 1927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert + p + " and " + q + " instead of" + testString.length() + "\n"); 1937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 1947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testString = "Write hindi here. "; 1957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("testing char iter - string:- \"" + testString + "\""); 1967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert charIter1.setText(testString); 1977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = charIter1.first(); 1987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != 0) 1997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: first() returned" + p + "instead of 0"); 2007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = charIter1.next(); 2017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 1, "W"); 2027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = charIter1.next(4); 2047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 5, "rite"); 2057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = charIter1.next(12); 2077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 17, " hindi here."); 2087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = charIter1.next(-6); 2107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 11, " here."); 2117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = charIter1.next(6); 2137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 17, " here."); 2147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = charIter1.following(charIter1.last()); 2157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = charIter1.next(charIter1.last()); 2167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != BreakIterator.DONE || q != BreakIterator.DONE) 2177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: following()/next() at last position returned #" 2187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert + p + " and " + q + " instead of" + testString.length()); 2197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This costs $20,00,000."; 2207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator sentIter1 = (RuleBasedBreakIterator) BreakIterator.getSentenceInstance(Locale.getDefault()); 2217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("testing sentence iter - String:- \"" + testString + "\""); 2227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sentIter1.setText(testString); 2237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = sentIter1.first(); 2247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != 0) 2257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: first() returned" + p + "instead of 0"); 2267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.next(); 2277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 7, "Hello! "); 2287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.next(2); 2307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 31, "how are you? I'am fine. "); 2317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.next(-2); 2337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 7, "how are you? I'am fine. "); 2347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.next(4); 2367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 60, "how are you? I'am fine. Thankyou. How are you doing? "); 2377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.next(); 2397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 83, "This costs $20,00,000."); 2407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.following(1); 2417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 1, q, 7, "ello! "); 2427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.following(10); 2437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 10, q, 20, " are you? "); 2447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.following(20); 2457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 20, q, 31, "I'am fine. "); 2467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = sentIter1.following(sentIter1.last()); 2477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.next(sentIter1.last()); 2487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != BreakIterator.DONE || q != BreakIterator.DONE) 2497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: following()/next() at last position returned #" 2507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert + p + " and " + q + " instead of" + testString.length()); 2517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testString = "Hello! how\r\n (are)\r you? I'am fine- Thankyou. foo\u00a0bar How, are, you? This, costs $20,00,000."; 2527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("(UnicodeString)testing line iter - String:- \"" + testString + "\""); 2537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator lineIter1 = (RuleBasedBreakIterator) BreakIterator.getLineInstance(Locale.getDefault()); 2547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert lineIter1.setText(testString); 2557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = lineIter1.first(); 2567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != 0) 2577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: first() returned" + p + "instead of 0"); 2587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.next(); 2597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 7, "Hello! "); 2607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.next(4); 2637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 20, "how\r\n (are)\r "); 2647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.next(-4); 2667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 7, "how\r\n (are)\r "); 2677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.next(6); 2697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 30, "how\r\n (are)\r you? I'am "); 2707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.next(); 2727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 36, "fine- "); 2737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 2747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.next(2); 2757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 54, "Thankyou. foo\u00a0bar "); 2767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.following(60); 2777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 60, q, 64, "re, "); 2787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.following(1); 2797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 1, q, 7, "ello! "); 2807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.following(10); 2817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 10, q, 12, "\r\n"); 2827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.following(20); 2837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 20, q, 25, "you? "); 2847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = lineIter1.following(lineIter1.last()); 2857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.next(lineIter1.last()); 2867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != BreakIterator.DONE || q != BreakIterator.DONE) 2877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: following()/next() at last position returned #" 2887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert + p + " and " + q + " instead of" + testString.length()); 2897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 2927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Testing the methods lastt(), previous(), and preceding() of RuleBasedBreakIterator 2937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/ 2947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestLastPreviousPreceding() { 2957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int p, q; 2967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String testString = "This is a word break. Isn't it? 2.25 dollars"; 2977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("Testing last(),previous(), preceding() with custom rules"); 2987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("testing word iteration for string \"" + testString + "\""); 2997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 3007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert wordIter1.setText(testString); 3017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = wordIter1.last(); 3027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != testString.length()) { 3037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: first() returned" + p + "instead of" + testString.length()); 3047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.previous(); 3067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 37, "dollars"); 3077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 3087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.previous(); 3097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 36, " "); 3107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.preceding(25); 3117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 25, q, 22, "Isn"); 3127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 3137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.previous(); 3147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 21, " "); 3157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = wordIter1.preceding(20); 3167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 20, q, 15, "break"); 3177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = wordIter1.preceding(wordIter1.first()); 3187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != BreakIterator.DONE) 3197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: preceding() at starting position returned #" + p + " instead of 0"); 3207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This costs $20,00,000."; 3217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("testing sentence iter - String:- \"" + testString + "\""); 3227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator sentIter1 = (RuleBasedBreakIterator) BreakIterator.getSentenceInstance(Locale.getDefault()); 3237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sentIter1.setText(testString); 3247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = sentIter1.last(); 3257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != testString.length()) 3267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: last() returned" + p + "instead of " + testString.length()); 3277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.previous(); 3287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 60, "This costs $20,00,000."); 3297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 3307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.previous(); 3317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 41, "How are you doing? "); 3327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.preceding(40); 3337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 40, q, 31, "Thankyou."); 3347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.preceding(25); 3357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 25, q, 20, "I'am "); 3367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sentIter1.first(); 3377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = sentIter1.previous(); 3387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = sentIter1.preceding(sentIter1.first()); 3397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != BreakIterator.DONE || q != BreakIterator.DONE) 3407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: previous()/preceding() at starting position returned #" 3417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert + p + " and " + q + " instead of 0\n"); 3427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This\n costs $20,00,000."; 3437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("testing line iter - String:- \"" + testString + "\""); 3447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator lineIter1 = (RuleBasedBreakIterator) BreakIterator.getLineInstance(Locale.getDefault()); 3457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert lineIter1.setText(testString); 3467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = lineIter1.last(); 3477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != testString.length()) 3487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: last() returned" + p + "instead of " + testString.length()); 3497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.previous(); 3507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 72, "$20,00,000."); 3517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = q; 3527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.previous(); 3537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, p, q, 66, "costs "); 3547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.preceding(40); 3557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 40, q, 31, "Thankyou."); 3567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.preceding(25); 3577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testString, 25, q, 20, "I'am "); 3587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert lineIter1.first(); 3597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p = lineIter1.previous(); 3607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert q = lineIter1.preceding(sentIter1.first()); 3617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (p != BreakIterator.DONE || q != BreakIterator.DONE) 3627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR: previous()/preceding() at starting position returned #" 3637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert + p + " and " + q + " instead of 0\n"); 3647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Tests the method IsBoundary() of RuleBasedBreakIterator 3687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/ 3697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestIsBoundary() { 3707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String testString1 = "Write here. \u092d\u0301\u0930\u0924 \u0938\u0941\u0902\u0926\u0930 a\u0301u"; 3717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 3727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert charIter1.setText(testString1); 3737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int bounds1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 20, 21, 22, 23, 25, 26}; 3747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doBoundaryTest(charIter1, testString1, bounds1); 3757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedBreakIterator wordIter2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 3767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert wordIter2.setText(testString1); 3777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int bounds2[] = {0, 5, 6, 10, 11, 12, 16, 17, 22, 23, 26}; 3787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doBoundaryTest(wordIter2, testString1, bounds2); 3797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 3827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Tests the rule status return value constants 3837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 3847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestRuleStatus() { 3857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert BreakIterator bi = BreakIterator.getWordInstance(ULocale.ENGLISH); 3867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi.setText("# "); 3887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, bi.next(), 1); 3897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, bi.getRuleStatus() >= RuleBasedBreakIterator.WORD_NONE); 3907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, bi.getRuleStatus() < RuleBasedBreakIterator.WORD_NONE_LIMIT); 3917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi.setText("3 "); 3937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, bi.next(), 1); 3947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, bi.getRuleStatus() >= RuleBasedBreakIterator.WORD_NUMBER); 3957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, bi.getRuleStatus() < RuleBasedBreakIterator.WORD_NUMBER_LIMIT); 3967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi.setText("a "); 3987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, bi.next(), 1); 3997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, bi.getRuleStatus() >= RuleBasedBreakIterator.WORD_LETTER ); 4007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, bi.getRuleStatus() < RuleBasedBreakIterator.WORD_LETTER_LIMIT); 4017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi.setText("イ "); 4047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, bi.next(), 1); 4057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, bi.getRuleStatus() >= RuleBasedBreakIterator.WORD_KANA ); 4067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // TODO: ticket #10261, Kana is not returning the correct status. 4077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // assertTrue(null, bi.getRuleStatus() < RuleBasedBreakIterator.WORD_KANA_LIMIT); 4087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // System.out.println("\n" + bi.getRuleStatus()); 4097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert bi.setText("退 "); 4117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, bi.next(), 1); 4127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, bi.getRuleStatus() >= RuleBasedBreakIterator.WORD_IDEO ); 4137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, bi.getRuleStatus() < RuleBasedBreakIterator.WORD_IDEO_LIMIT); 4147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert //--------------------------------------------- 4177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert //Internal subroutines 4187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert //--------------------------------------------- 4197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* Internal subroutine used by TestIsBoundary() */ 4217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void doBoundaryTest(BreakIterator bi, String text, int[] boundaries) { 4227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("testIsBoundary():"); 4237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int p = 0; 4247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean isB; 4257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int i = 0; i < text.length(); i++) { 4267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert isB = bi.isBoundary(i); 4277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("bi.isBoundary(" + i + ") -> " + isB); 4287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (i == boundaries[p]) { 4297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!isB) 4307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("Wrong result from isBoundary() for " + i + ": expected true, got false"); 4317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert p++; 4327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 4337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (isB) 4347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("Wrong result from isBoundary() for " + i + ": expected false, got true"); 4357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*Internal subroutine used for comparision of expected and acquired results */ 4407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void doTest(String testString, int start, int gotoffset, int expectedOffset, String expectedString) { 4417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String selected; 4427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String expected = expectedString; 4437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (gotoffset != expectedOffset) 4447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR:****returned #" + gotoffset + " instead of #" + expectedOffset); 4457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (start <= gotoffset) { 4467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert selected = testString.substring(start, gotoffset); 4477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 4487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert selected = testString.substring(gotoffset, start); 4497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!selected.equals(expected)) 4517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("ERROR:****selected \"" + selected + "\" instead of \"" + expected + "\""); 4527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert else 4537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("****selected \"" + selected + "\""); 4547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 456