]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-52_1/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java
Clean up imports.
[Dictionary.git] / jars / icu4j-52_1 / main / tests / core / src / com / ibm / icu / dev / test / rbbi / BreakIteratorRegTest.java
1 /*
2  *******************************************************************************
3  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
4  * others. All Rights Reserved.                                                *
5  *******************************************************************************
6  */
7 package com.ibm.icu.dev.test.rbbi;
8
9 import java.text.CharacterIterator;
10 import java.util.Arrays;
11 import java.util.Locale;
12
13 import com.ibm.icu.dev.test.TestFmwk;
14 import com.ibm.icu.text.BreakIterator;
15
16 public class BreakIteratorRegTest extends TestFmwk
17 {
18     public static void main(String[] args) throws Exception {
19         new BreakIteratorRegTest().run(args);
20     }
21
22     public void TestRegUnreg() {
23     Locale thailand_locale = new Locale("th", "TH", "");
24     Locale foo_locale = new Locale("fu", "FU", "FOO");
25     BreakIterator jwbi = BreakIterator.getWordInstance(Locale.JAPAN);
26     BreakIterator uwbi = BreakIterator.getWordInstance(Locale.US);
27     BreakIterator usbi = BreakIterator.getSentenceInstance(Locale.US);
28     BreakIterator twbi = BreakIterator.getWordInstance(thailand_locale);
29     BreakIterator rwbi = BreakIterator.getWordInstance(new Locale("", "", ""));
30
31     BreakIterator sbi = (BreakIterator)usbi.clone();
32     // todo: this will cause the test to fail, no way to set a breakiterator to null text so can't fix yet.
33     // String text = "This is some test, by golly. Boy, they don't make tests like they used to, do they?  This here test ain't worth $2.50.  Nope.";
34     // sbi.setText(text);
35
36     assertTrue(!BreakIterator.unregister(""), "unregister before register"); // coverage
37
38     Object key0 = BreakIterator.registerInstance((BreakIterator)twbi.clone(), foo_locale, BreakIterator.KIND_WORD);
39     Object key1 = BreakIterator.registerInstance(sbi, Locale.US, BreakIterator.KIND_WORD);
40     Object key2 = BreakIterator.registerInstance((BreakIterator)twbi.clone(), Locale.US, BreakIterator.KIND_WORD);
41     
42     {
43         BreakIterator test0 = BreakIterator.getWordInstance(Locale.JAPAN);
44         BreakIterator test1 = BreakIterator.getWordInstance(Locale.US);
45         BreakIterator test2 = BreakIterator.getSentenceInstance(Locale.US);
46         BreakIterator test3 = BreakIterator.getWordInstance(thailand_locale);
47         BreakIterator test4 = BreakIterator.getWordInstance(foo_locale);
48
49         assertEqual(test0, jwbi, "japan word == japan word");
50         assertEqual(test1, twbi, "us word == thai word");
51         assertEqual(test2, usbi, "us sentence == us sentence");
52         assertEqual(test3, twbi, "thai word == thai word");
53         assertEqual(test4, twbi, "foo word == thai word");
54     }
55
56     //Locale[] locales = BreakIterator.getAvailableLocales();
57     
58     assertTrue(BreakIterator.unregister(key2), "unregister us word (thai word)");
59     assertTrue(!BreakIterator.unregister(key2), "unregister second time");
60     boolean error = false;
61     try {
62         BreakIterator.unregister(null);
63     }
64     catch (IllegalArgumentException e) {
65         error = true;
66     }
67
68     assertTrue(error, "unregister null");
69
70     {
71         CharacterIterator sci = BreakIterator.getWordInstance(Locale.US).getText();
72         int len = sci.getEndIndex() - sci.getBeginIndex();
73         assertEqual(len, 0, "us word text: " + getString(sci));
74     }
75
76     assertTrue(Arrays.asList(BreakIterator.getAvailableLocales()).contains(foo_locale), "foo_locale");
77     assertTrue(BreakIterator.unregister(key0), "unregister foo word (thai word)");
78     assertTrue(!Arrays.asList(BreakIterator.getAvailableLocales()).contains(foo_locale), "no foo_locale");
79     assertEqual(BreakIterator.getWordInstance(Locale.US), usbi, "us word == us sentence");
80     
81     assertTrue(BreakIterator.unregister(key1), "unregister us word (us sentence)");
82     {
83         BreakIterator test0 = BreakIterator.getWordInstance(Locale.JAPAN);
84         BreakIterator test1 = BreakIterator.getWordInstance(Locale.US);
85         BreakIterator test2 = BreakIterator.getSentenceInstance(Locale.US);
86         BreakIterator test3 = BreakIterator.getWordInstance(thailand_locale);
87         BreakIterator test4 = BreakIterator.getWordInstance(foo_locale);
88
89         assertEqual(test0, jwbi, "japanese word break");
90         assertEqual(test1, uwbi, "us sentence-word break");
91         assertEqual(test2, usbi, "us sentence break");
92         assertEqual(test3, twbi, "thai word break");
93         assertEqual(test4, rwbi, "root word break");
94
95         CharacterIterator sci = test1.getText();
96         int len = sci.getEndIndex() - sci.getBeginIndex();
97         assertEqual(len, 0, "us sentence-word break text: " + getString(sci));
98     }
99     }
100
101     private void assertEqual(Object lhs, Object rhs, String msg) {
102     msg(msg, lhs.equals(rhs) ? LOG : ERR, true, true);
103     }
104
105     private void assertEqual(int lhs, int rhs, String msg) {
106     msg(msg, lhs == rhs ? LOG : ERR, true, true);
107     }
108
109     private void assertTrue(boolean arg, String msg) {
110     msg(msg, arg ? LOG : ERR, true, true);
111     }
112
113     private static String getString(CharacterIterator ci) {
114     StringBuffer buf = new StringBuffer(ci.getEndIndex() - ci.getBeginIndex() + 2);
115     buf.append("'");
116     for (char c = ci.first(); c != CharacterIterator.DONE; c = ci.next()) {
117         buf.append(c);
118     }
119     buf.append("'");
120     return buf.toString();
121     }
122 }