2 *******************************************************************************
\r
3 * Copyright (C) 2006, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
8 package com.ibm.icu.tests;
\r
10 import java.text.CharacterIterator;
\r
11 import java.text.StringCharacterIterator;
\r
12 import java.util.Locale;
\r
14 import com.ibm.icu.text.BreakIterator;
\r
15 import com.ibm.icu.util.ULocale;
\r
17 public class BreakIteratorTest extends ICUTestCase {
\r
18 // ICU behaves a bit differently with this text, but the tested values aren't
\r
19 // affected. If Java changes behavior they might need to change.
\r
20 private static final String text = "Mr. and Mrs. Mumblety-Peg paid $35.97 for a new 12\" cockatoo. " +
\r
21 "When they got home they both cooed \"Isn't it lovely?\" and sighed softly. " +
\r
22 "\"Let's name it u\u0308\u5098!\" they said with glee.";
\r
23 private static int pos = text.indexOf("sn't");
\r
24 private static BreakIterator cbr;
\r
25 private static BreakIterator wbr;
\r
26 private static BreakIterator lbr;
\r
27 private static BreakIterator sbr;
\r
30 cbr = BreakIterator.getCharacterInstance();
\r
32 wbr = BreakIterator.getWordInstance();
\r
34 lbr = BreakIterator.getLineInstance();
\r
36 sbr = BreakIterator.getSentenceInstance();
\r
46 // private static void dump(BreakIterator bi) {
\r
47 // for (int ix = bi.first(), lim = text.length(); ix != lim;) {
\r
48 // int nx = bi.next();
\r
49 // if (nx < 0) nx = lim;
\r
50 // System.out.println(Integer.toString(ix) + ": " + text.substring(ix, nx));
\r
56 * Test method for 'com.ibm.icu.text.BreakIterator.hashCode()'
\r
58 public void testHashCode() {
\r
59 BreakIterator br = BreakIterator.getWordInstance();
\r
61 BreakIterator brne = BreakIterator.getWordInstance();
\r
62 brne.setText(text + "X");
\r
64 testEHCS(br, wbr, brne);
\r
68 * Test method for 'com.ibm.icu.text.BreakIterator.BreakIterator(BreakIterator)'
\r
70 public void testBreakIterator() {
\r
71 // implicitly tested everywhere
\r
75 * Test method for 'com.ibm.icu.text.BreakIterator.first()'
\r
77 public void testFirst() {
\r
78 assertEquals(0, cbr.first());
\r
79 assertEquals(0, wbr.first());
\r
80 assertEquals(0, lbr.first());
\r
81 assertEquals(0, sbr.first());
\r
85 * Test method for 'com.ibm.icu.text.BreakIterator.last()'
\r
87 public void testLast() {
\r
88 assertEquals(text.length(), cbr.last());
\r
89 assertEquals(text.length(), wbr.last());
\r
90 assertEquals(text.length(), lbr.last());
\r
91 assertEquals(text.length(), sbr.last());
\r
95 * Test method for 'com.ibm.icu.text.BreakIterator.next(int)'
\r
97 public void testNextInt() {
\r
102 assertEquals(2, cbr.next(2));
\r
103 assertEquals(3, wbr.next(2));
\r
104 assertEquals(8, lbr.next(2));
\r
105 assertEquals(62, sbr.next(2));
\r
111 assertEquals(174, cbr.next(-2));
\r
112 assertEquals(171, wbr.next(-2));
\r
113 assertEquals(166, lbr.next(-2));
\r
114 assertEquals(135, sbr.next(-2));
\r
118 * Test method for 'com.ibm.icu.text.BreakIterator.next()'
\r
120 public void testNext() {
\r
125 assertEquals(1, cbr.next());
\r
126 assertEquals(2, wbr.next());
\r
127 assertEquals(4, lbr.next());
\r
128 assertEquals(13, sbr.next());
\r
132 * Test method for 'com.ibm.icu.text.BreakIterator.previous()'
\r
134 public void testPrevious() {
\r
139 assertEquals(175, cbr.previous());
\r
140 assertEquals(175, wbr.previous());
\r
141 assertEquals(171, lbr.previous());
\r
142 assertEquals(156, sbr.previous());
\r
146 * Test method for 'com.ibm.icu.text.BreakIterator.following(int)'
\r
148 public void testFollowing() {
\r
149 assertEquals(100, cbr.following(pos));
\r
150 assertEquals(103, wbr.following(pos));
\r
151 assertEquals(104, lbr.following(pos));
\r
152 assertEquals(116, sbr.following(pos));
\r
156 * Test method for 'com.ibm.icu.text.BreakIterator.preceding(int)'
\r
158 public void testPreceding() {
\r
159 assertEquals(98, cbr.preceding(pos));
\r
160 assertEquals(98, wbr.preceding(pos));
\r
161 assertEquals(97, lbr.preceding(pos));
\r
162 assertEquals(62, sbr.preceding(pos));
\r
166 * Test method for 'com.ibm.icu.text.BreakIterator.isBoundary(int)'
\r
168 public void testIsBoundary() {
\r
169 assertTrue(cbr.isBoundary(pos));
\r
170 assertFalse(wbr.isBoundary(pos));
\r
171 assertFalse(lbr.isBoundary(pos));
\r
172 assertFalse(sbr.isBoundary(pos));
\r
177 * Test method for 'com.ibm.icu.text.BreakIterator.current()'
\r
179 public void testCurrent() {
\r
180 cbr.following(pos);
\r
181 wbr.following(pos);
\r
182 lbr.following(pos);
\r
183 sbr.following(pos);
\r
184 assertEquals(100, cbr.current());
\r
185 assertEquals(103, wbr.current());
\r
186 assertEquals(104, lbr.current());
\r
187 assertEquals(116, sbr.current());
\r
191 * Test method for 'com.ibm.icu.text.BreakIterator.getText()'
\r
193 public void testGetText() {
\r
194 CharacterIterator ci = cbr.getText();
\r
195 StringBuffer buf = new StringBuffer(ci.getEndIndex() - ci.getBeginIndex());
\r
196 for (char c = ci.first(); c != CharacterIterator.DONE; c = ci.next()) {
\r
199 String result = buf.toString();
\r
200 assertEquals(text, result);
\r
204 * Test method for 'com.ibm.icu.text.BreakIterator.setText(String)'
\r
206 public void testSetTextString() {
\r
207 // implicitly tested
\r
211 * Test method for 'com.ibm.icu.text.BreakIterator.setText(CharacterIterator)'
\r
213 public void testSetTextCharacterIterator() {
\r
214 CharacterIterator ci = new StringCharacterIterator(text, pos);
\r
215 BreakIterator bi = BreakIterator.getWordInstance();
\r
217 assertEquals(2, bi.next());
\r
221 * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance()'
\r
223 public void testGetWordInstance() {
\r
224 // implicitly tested
\r
228 * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance(Locale)'
\r
230 public void testGetWordInstanceLocale() {
\r
231 assertNotNull(BreakIterator.getWordInstance(Locale.JAPAN));
\r
235 * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance(ULocale)'
\r
237 public void testGetWordInstanceULocale() {
\r
238 assertNotNull(BreakIterator.getWordInstance(ULocale.JAPAN));
\r
242 * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance()'
\r
244 public void testGetLineInstance() {
\r
245 // implicitly tested
\r
249 * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance(Locale)'
\r
251 public void testGetLineInstanceLocale() {
\r
252 assertNotNull(BreakIterator.getLineInstance(Locale.JAPAN));
\r
256 * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance(ULocale)'
\r
258 public void testGetLineInstanceULocale() {
\r
259 assertNotNull(BreakIterator.getLineInstance(ULocale.JAPAN));
\r
263 * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance()'
\r
265 public void testGetCharacterInstance() {
\r
266 // implicitly tested
\r
270 * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance(Locale)'
\r
272 public void testGetCharacterInstanceLocale() {
\r
273 assertNotNull(BreakIterator.getCharacterInstance(Locale.JAPAN));
\r
277 * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance(ULocale)'
\r
279 public void testGetCharacterInstanceULocale() {
\r
280 assertNotNull(BreakIterator.getCharacterInstance(ULocale.JAPAN));
\r
284 * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance()'
\r
286 public void testGetSentenceInstance() {
\r
287 // implicitly tested
\r
291 * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance(Locale)'
\r
293 public void testGetSentenceInstanceLocale() {
\r
294 assertNotNull(BreakIterator.getSentenceInstance(Locale.JAPAN));
\r
298 * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance(ULocale)'
\r
300 public void testGetSentenceInstanceULocale() {
\r
301 assertNotNull(BreakIterator.getSentenceInstance(ULocale.JAPAN));
\r
305 * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance()'
\r
307 public void testGetTitleInstance() {
\r
312 * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance(Locale)'
\r
314 public void testGetTitleInstanceLocale() {
\r
319 * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance(ULocale)'
\r
321 public void testGetTitleInstanceULocale() {
\r
326 * Test method for 'com.ibm.icu.text.BreakIterator.getAvailableLocales()'
\r
328 public void testGetAvailableLocales() {
\r
329 assertNotNull(BreakIterator.getAvailableLocales());
\r
333 * Test method for 'com.ibm.icu.text.BreakIterator.getAvailableULocales()'
\r
335 public void testGetAvailableULocales() {
\r
336 assertNotNull(BreakIterator.getAvailableULocales());
\r
340 * Test method for 'com.ibm.icu.text.BreakIterator.toString()'
\r
342 public void testToString() {
\r
343 assertNotNull(cbr.toString());
\r
347 * Test method for 'com.ibm.icu.text.BreakIterator.clone()'
\r
349 public void testClone() {
\r
350 // see testHashCode
\r
354 * Test method for 'com.ibm.icu.text.BreakIterator.equals(Object)'
\r
356 public void testEqualsObject() {
\r
357 // see testHashCode
\r