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