1aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* GENERATED SOURCE. DO NOT MODIFY. */ 2f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// © 2016 and later: Unicode, Inc. and others. 3f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 4aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* 5aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ******************************************************************************* 6aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Copyright (C) 2001-2014, International Business Machines Corporation and * 7aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * others. All Rights Reserved. * 8aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ******************************************************************************* 9aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 10aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 11f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert/** 12aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Port From: ICU4C v1.8.1 : rbbi : RBBIAPITest 13aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Source File: $ICU4CRoot/source/test/intltest/rbbiapts.cpp 14aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin **/ 15aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 16aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpackage android.icu.dev.test.rbbi; 17aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 18f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubertimport java.io.ByteArrayOutputStream; 19f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubertimport java.io.PrintStream; 20aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport java.text.CharacterIterator; 21aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport java.text.StringCharacterIterator; 2205fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport java.util.ArrayList; 2305fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport java.util.List; 24aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport java.util.Locale; 25aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 26f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubertimport org.junit.Test; 2705fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport org.junit.runner.RunWith; 2805fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport org.junit.runners.JUnit4; 29f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 30f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubertimport android.icu.dev.test.TestFmwk; 31aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.text.BreakIterator; 32aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.text.RuleBasedBreakIterator; 33aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.util.ULocale; 342e13a2bdade5cd0a635f0bd89805931a6fd710daPete Gillinimport android.icu.testsharding.MainTestShard; 35aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 36aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/** 37aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * API Test the RuleBasedBreakIterator class 38aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 392e13a2bdade5cd0a635f0bd89805931a6fd710daPete Gillin@MainTestShard 4005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert@RunWith(JUnit4.class) 4105fa7802d0874812c234a29745586677ee5837eaFredrik Roubertpublic class RBBIAPITest extends TestFmwk { 42aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /** 43f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert * Tests clone() and equals() methods of RuleBasedBreakIterator 44aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin **/ 45f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 46aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestCloneEquals() { 47f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 48f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator biequal = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 49f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 50f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 51aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 52aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String testString = "Testing word break iterators's clone() and equals()"; 53aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi1.setText(testString); 54aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi2.setText(testString); 55aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin biequal.setText(testString); 56f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 57aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi3.setText("hello"); 58aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Testing equals()"); 59aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Testing == and !="); 60aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!bi1.equals(biequal) || bi1.equals(bi2) || bi1.equals(bi3)) 61aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR:1 RBBI's == and !- operator failed."); 62aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (bi2.equals(biequal) || bi2.equals(bi1) || biequal.equals(bi3)) 63aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR:2 RBBI's == and != operator failed."); 64aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Testing clone()"); 65aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin RuleBasedBreakIterator bi1clone = (RuleBasedBreakIterator) bi1.clone(); 66aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin RuleBasedBreakIterator bi2clone = (RuleBasedBreakIterator) bi2.clone(); 67aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!bi1clone.equals(bi1) 68aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || !bi1clone.equals(biequal) 69aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || bi1clone.equals(bi3) 70aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || bi1clone.equals(bi2)) 71aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR:1 RBBI's clone() method failed"); 72aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 73aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (bi2clone.equals(bi1) 74aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || bi2clone.equals(biequal) 75aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || bi2clone.equals(bi3) 76aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || !bi2clone.equals(bi2)) 77aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR:2 RBBI's clone() method failed"); 78aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 79aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!bi1.getText().equals(bi1clone.getText()) 80aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || !bi2clone.getText().equals(bi2.getText()) 81aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || bi2clone.equals(bi1clone)) 82aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: RBBI's clone() method failed"); 83aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 84f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 85aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /** 86aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Tests toString() method of RuleBasedBreakIterator 87aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin **/ 88f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 89aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestToString() { 90f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 91aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 92aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Testing toString()"); 93aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi1.setText("Hello there"); 94aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) bi1.clone(); 95aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String temp = bi1.toString(); 96aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String temp2 = bi2.toString(); 97aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String temp3 = bi3.toString(); 98aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (temp2.equals(temp3) || temp.equals(temp2) || !temp.equals(temp3)) 99aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: error in toString() method"); 100aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 101f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 102aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /** 103aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Tests the method hashCode() of RuleBasedBreakIterator 104aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin **/ 105f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 106aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestHashCode() { 107f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 108f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 109aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 110aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Testing hashCode()"); 111aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi1.setText("Hash code"); 112aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi2.setText("Hash code"); 113aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi3.setText("Hash code"); 114aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin RuleBasedBreakIterator bi1clone = (RuleBasedBreakIterator) bi1.clone(); 115aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin RuleBasedBreakIterator bi2clone = (RuleBasedBreakIterator) bi2.clone(); 116aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (bi1.hashCode() != bi1clone.hashCode() 117aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || bi1.hashCode() != bi3.hashCode() 118aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || bi1clone.hashCode() != bi3.hashCode() 119aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || bi2.hashCode() != bi2clone.hashCode()) 120aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: identical objects have different hashcodes"); 121f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 122aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (bi1.hashCode() == bi2.hashCode() 123aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || bi2.hashCode() == bi3.hashCode() 124aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || bi1clone.hashCode() == bi2clone.hashCode() 125aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin || bi1clone.hashCode() == bi2.hashCode()) 126aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: different objects have same hashcodes"); 127aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 128f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 129aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /** 130aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Tests the methods getText() and setText() of RuleBasedBreakIterator 131aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin **/ 132f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 133aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestGetSetText() { 134aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Testing getText setText "); 135aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String str1 = "first string."; 136aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String str2 = "Second string."; 137f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert //RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 138f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 139aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin CharacterIterator text1 = new StringCharacterIterator(str1); 140aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin //CharacterIterator text1Clone = (CharacterIterator) text1.clone(); 141aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin //CharacterIterator text2 = new StringCharacterIterator(str2); 142aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin wordIter1.setText(str1); 143aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!wordIter1.getText().equals(text1)) 144aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR:1 error in setText or getText "); 145aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (wordIter1.current() != 0) 146aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR:1 setText did not set the iteration position to the beginning of the text, it is" 147f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert + wordIter1.current() + "\n"); 148aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin wordIter1.next(2); 149aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin wordIter1.setText(str2); 150aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (wordIter1.current() != 0) 151aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR:2 setText did not reset the iteration position to the beginning of the text, it is" 152f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert + wordIter1.current() + "\n"); 153f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 15405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert // Test the CharSequence overload of setText() for a simple case. 15505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert BreakIterator lineIter = BreakIterator.getLineInstance(Locale.ENGLISH); 15605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert CharSequence csText = "Hello, World. "; 15705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert // Expected Line Brks ^ ^ ^ 15805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert // 0123456789012345 15905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert List<Integer> expected = new ArrayList<Integer>(); 16005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert expected.add(0); expected.add(7); expected.add(14); 16105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert lineIter.setText(csText); 16205fa7802d0874812c234a29745586677ee5837eaFredrik Roubert for (int pos = lineIter.first(); pos != BreakIterator.DONE; pos = lineIter.next()) { 16305fa7802d0874812c234a29745586677ee5837eaFredrik Roubert assertTrue("", expected.contains(pos)); 16405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 16505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert assertEquals("", csText.length(), lineIter.current()); 166aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 167f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 168aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /** 169aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Testing the methods first(), next(), next(int) and following() of RuleBasedBreakIterator 170aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * TODO: Most of this test should be retired, rule behavior is much better covered by 171aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * TestExtended, which is also easier to understand and maintain. 172aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin **/ 173f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 174aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestFirstNextFollowing() { 175aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int p, q; 176aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String testString = "This is a word break. Isn't it? 2.25"; 177aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Testing first() and next(), following() with custom rules"); 178aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("testing word iterator - string :- \"" + testString + "\"\n"); 179aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 180aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin wordIter1.setText(testString); 181aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = wordIter1.first(); 182aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != 0) 183aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: first() returned" + p + "instead of 0"); 184aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.next(9); 185aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 20, "This is a word break"); 186aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 187aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.next(); 188aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 21, "."); 189aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 190aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.next(3); 191aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 28, " Isn't "); 192aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 193aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.next(2); 194aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 31, "it?"); 195aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.following(2); 196aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 2, q, 4, "is"); 197aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.following(22); 198aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 22, q, 27, "Isn't"); 199aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin wordIter1.last(); 200aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = wordIter1.next(); 201aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.following(wordIter1.last()); 202aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != BreakIterator.DONE || q != BreakIterator.DONE) 203aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: next()/following() at last position returned #" 204f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert + p + " and " + q + " instead of" + testString.length() + "\n"); 205f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 206f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert testString = "Write hindi here. "; 207aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("testing char iter - string:- \"" + testString + "\""); 208aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin charIter1.setText(testString); 209aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = charIter1.first(); 210aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != 0) 211aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: first() returned" + p + "instead of 0"); 212aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = charIter1.next(); 213aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 1, "W"); 214aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 215aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = charIter1.next(4); 216aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 5, "rite"); 217aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 218aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = charIter1.next(12); 219aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 17, " hindi here."); 220aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 221aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = charIter1.next(-6); 222aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 11, " here."); 223aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 224aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = charIter1.next(6); 225aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 17, " here."); 226aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = charIter1.following(charIter1.last()); 227aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = charIter1.next(charIter1.last()); 228aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != BreakIterator.DONE || q != BreakIterator.DONE) 229aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: following()/next() at last position returned #" 230f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert + p + " and " + q + " instead of" + testString.length()); 231f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This costs $20,00,000."; 232f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator sentIter1 = (RuleBasedBreakIterator) BreakIterator.getSentenceInstance(Locale.getDefault()); 233aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("testing sentence iter - String:- \"" + testString + "\""); 234aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin sentIter1.setText(testString); 235aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = sentIter1.first(); 236aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != 0) 237aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: first() returned" + p + "instead of 0"); 238aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.next(); 239aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 7, "Hello! "); 240aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 241aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.next(2); 242aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 31, "how are you? I'am fine. "); 243aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 244aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.next(-2); 245aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 7, "how are you? I'am fine. "); 246aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 247aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.next(4); 248aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 60, "how are you? I'am fine. Thankyou. How are you doing? "); 249aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 250aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.next(); 251aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 83, "This costs $20,00,000."); 252aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.following(1); 253aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 1, q, 7, "ello! "); 254aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.following(10); 255aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 10, q, 20, " are you? "); 256aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.following(20); 257aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 20, q, 31, "I'am fine. "); 258aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = sentIter1.following(sentIter1.last()); 259aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.next(sentIter1.last()); 260aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != BreakIterator.DONE || q != BreakIterator.DONE) 261aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: following()/next() at last position returned #" 262f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert + p + " and " + q + " instead of" + testString.length()); 263f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert testString = "Hello! how\r\n (are)\r you? I'am fine- Thankyou. foo\u00a0bar How, are, you? This, costs $20,00,000."; 264aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("(UnicodeString)testing line iter - String:- \"" + testString + "\""); 265f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator lineIter1 = (RuleBasedBreakIterator) BreakIterator.getLineInstance(Locale.getDefault()); 266aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin lineIter1.setText(testString); 267aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = lineIter1.first(); 268aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != 0) 269aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: first() returned" + p + "instead of 0"); 270aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.next(); 271aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 7, "Hello! "); 272aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 273aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 274aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.next(4); 275aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 20, "how\r\n (are)\r "); 276aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 277aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.next(-4); 278aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 7, "how\r\n (are)\r "); 279aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 280aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.next(6); 281aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 30, "how\r\n (are)\r you? I'am "); 282aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 283aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.next(); 284aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 36, "fine- "); 285aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 286aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.next(2); 287aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 54, "Thankyou. foo\u00a0bar "); 288aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.following(60); 289aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 60, q, 64, "re, "); 290aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.following(1); 291aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 1, q, 7, "ello! "); 292aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.following(10); 293aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 10, q, 12, "\r\n"); 294aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.following(20); 295aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 20, q, 25, "you? "); 296aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = lineIter1.following(lineIter1.last()); 297aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.next(lineIter1.last()); 298aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != BreakIterator.DONE || q != BreakIterator.DONE) 299aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: following()/next() at last position returned #" 300f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert + p + " and " + q + " instead of" + testString.length()); 301aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 302f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 303aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /** 30405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert * Testing the methods last(), previous(), and preceding() of RuleBasedBreakIterator 305aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin **/ 306f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 307aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestLastPreviousPreceding() { 308aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int p, q; 309aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String testString = "This is a word break. Isn't it? 2.25 dollars"; 310aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Testing last(),previous(), preceding() with custom rules"); 311aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("testing word iteration for string \"" + testString + "\""); 31205fa7802d0874812c234a29745586677ee5837eaFredrik Roubert RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.ENGLISH); 313aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin wordIter1.setText(testString); 314aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = wordIter1.last(); 315aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != testString.length()) { 31605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert errln("ERROR: last() returned" + p + "instead of" + testString.length()); 317aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 318aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.previous(); 319aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 37, "dollars"); 320aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 321aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.previous(); 322aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 36, " "); 323aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.preceding(25); 324aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 25, q, 22, "Isn"); 325aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 326aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.previous(); 327aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 21, " "); 328aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = wordIter1.preceding(20); 329aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 20, q, 15, "break"); 330aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = wordIter1.preceding(wordIter1.first()); 331aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != BreakIterator.DONE) 332aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: preceding() at starting position returned #" + p + " instead of 0"); 333f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This costs $20,00,000."; 334aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("testing sentence iter - String:- \"" + testString + "\""); 335f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator sentIter1 = (RuleBasedBreakIterator) BreakIterator.getSentenceInstance(Locale.getDefault()); 336aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin sentIter1.setText(testString); 337aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = sentIter1.last(); 338aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != testString.length()) 339aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: last() returned" + p + "instead of " + testString.length()); 340aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.previous(); 341aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 60, "This costs $20,00,000."); 342aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 343aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.previous(); 344aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 41, "How are you doing? "); 345aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.preceding(40); 346aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 40, q, 31, "Thankyou."); 347aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.preceding(25); 348aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 25, q, 20, "I'am "); 349aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin sentIter1.first(); 350aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = sentIter1.previous(); 351aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = sentIter1.preceding(sentIter1.first()); 352aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != BreakIterator.DONE || q != BreakIterator.DONE) 353aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: previous()/preceding() at starting position returned #" 354f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert + p + " and " + q + " instead of 0\n"); 355f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This\n costs $20,00,000."; 356aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("testing line iter - String:- \"" + testString + "\""); 357aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin RuleBasedBreakIterator lineIter1 = (RuleBasedBreakIterator) BreakIterator.getLineInstance(Locale.getDefault()); 358aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin lineIter1.setText(testString); 359aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = lineIter1.last(); 360aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != testString.length()) 361aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: last() returned" + p + "instead of " + testString.length()); 362aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.previous(); 363aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 72, "$20,00,000."); 364aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = q; 365aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.previous(); 366aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, p, q, 66, "costs "); 367aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.preceding(40); 368aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 40, q, 31, "Thankyou."); 369aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.preceding(25); 370aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doTest(testString, 25, q, 20, "I'am "); 371aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin lineIter1.first(); 372aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = lineIter1.previous(); 373aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin q = lineIter1.preceding(sentIter1.first()); 374aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p != BreakIterator.DONE || q != BreakIterator.DONE) 375aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR: previous()/preceding() at starting position returned #" 376aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin + p + " and " + q + " instead of 0\n"); 377aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 378f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 379aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /** 380aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Tests the method IsBoundary() of RuleBasedBreakIterator 381aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin **/ 382f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 383aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestIsBoundary() { 384aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String testString1 = "Write here. \u092d\u0301\u0930\u0924 \u0938\u0941\u0902\u0926\u0930 a\u0301u"; 38505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.ENGLISH); 386aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin charIter1.setText(testString1); 387aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 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}; 388aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doBoundaryTest(charIter1, testString1, bounds1); 38905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert RuleBasedBreakIterator wordIter2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.ENGLISH); 390aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin wordIter2.setText(testString1); 391aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int bounds2[] = {0, 5, 6, 10, 11, 12, 16, 17, 22, 23, 26}; 392aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin doBoundaryTest(wordIter2, testString1, bounds2); 393aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 394f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 395aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /** 396aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Tests the rule status return value constants 397aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 398f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 399aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestRuleStatus() { 400aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin BreakIterator bi = BreakIterator.getWordInstance(ULocale.ENGLISH); 401f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 402aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi.setText("# "); 403aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals(null, bi.next(), 1); 404aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(null, bi.getRuleStatus() >= RuleBasedBreakIterator.WORD_NONE); 405aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(null, bi.getRuleStatus() < RuleBasedBreakIterator.WORD_NONE_LIMIT); 406f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 407aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi.setText("3 "); 408aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals(null, bi.next(), 1); 409aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(null, bi.getRuleStatus() >= RuleBasedBreakIterator.WORD_NUMBER); 410aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(null, bi.getRuleStatus() < RuleBasedBreakIterator.WORD_NUMBER_LIMIT); 411f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 412aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi.setText("a "); 413aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals(null, bi.next(), 1); 414aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(null, bi.getRuleStatus() >= RuleBasedBreakIterator.WORD_LETTER ); 415aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(null, bi.getRuleStatus() < RuleBasedBreakIterator.WORD_LETTER_LIMIT); 416aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 417f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 418aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi.setText("イ "); 419aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals(null, bi.next(), 1); 420aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(null, bi.getRuleStatus() >= RuleBasedBreakIterator.WORD_KANA ); 421aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // TODO: ticket #10261, Kana is not returning the correct status. 422aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // assertTrue(null, bi.getRuleStatus() < RuleBasedBreakIterator.WORD_KANA_LIMIT); 423aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // System.out.println("\n" + bi.getRuleStatus()); 424f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 425aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bi.setText("退 "); 426aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals(null, bi.next(), 1); 427aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(null, bi.getRuleStatus() >= RuleBasedBreakIterator.WORD_IDEO ); 428aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(null, bi.getRuleStatus() < RuleBasedBreakIterator.WORD_IDEO_LIMIT); 429aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 430f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 431f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert /** 432f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert * Tests the rule dump debug function. 433f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert */ 434f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 435f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert public void TestRuledump() { 436f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert RuleBasedBreakIterator bi = (RuleBasedBreakIterator)BreakIterator.getCharacterInstance(); 437f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert ByteArrayOutputStream bos = new ByteArrayOutputStream(); 438f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert PrintStream out = new PrintStream(bos); 439f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert bi.dump(out); 440f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert assertTrue(null, bos.size() > 100); 441f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert } 442f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 443aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin //--------------------------------------------- 444aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin //Internal subroutines 445aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin //--------------------------------------------- 446f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 447f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert /* Internal subroutine used by TestIsBoundary() */ 448f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert private void doBoundaryTest(BreakIterator bi, String text, int[] boundaries) { 449aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("testIsBoundary():"); 450aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int p = 0; 451aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin boolean isB; 452aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (int i = 0; i < text.length(); i++) { 453aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin isB = bi.isBoundary(i); 454aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("bi.isBoundary(" + i + ") -> " + isB); 455aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (i == boundaries[p]) { 456aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!isB) 457aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Wrong result from isBoundary() for " + i + ": expected true, got false"); 458aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p++; 459aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else { 460aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (isB) 461aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Wrong result from isBoundary() for " + i + ": expected false, got true"); 462aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 463aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 464aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 465f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 46605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert /*Internal subroutine used for comparison of expected and acquired results */ 467f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert private void doTest(String testString, int start, int gotoffset, int expectedOffset, String expectedString) { 468aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String selected; 469aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String expected = expectedString; 470aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (gotoffset != expectedOffset) 471aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR:****returned #" + gotoffset + " instead of #" + expectedOffset); 472aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (start <= gotoffset) { 473aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin selected = testString.substring(start, gotoffset); 474aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else { 475aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin selected = testString.substring(gotoffset, start); 476aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 477aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!selected.equals(expected)) 478aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ERROR:****selected \"" + selected + "\" instead of \"" + expected + "\""); 479aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin else 480aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("****selected \"" + selected + "\""); 481aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 482f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 483f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 484f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert public void testGetTitleInstance() { 485f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert BreakIterator bi = BreakIterator.getTitleInstance(new Locale("en", "CA")); 486f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert TestFmwk.assertNotEquals("Title instance break iterator not correctly instantiated", bi.first(), null); 487f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert bi.setText("Here is some Text"); 488f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert TestFmwk.assertEquals("Title instance break iterator not correctly instantiated", bi.first(), 0); 489f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert } 490aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin} 491