]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/icu/dev/test/util/CompactArrayTest.java
go
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / icu / dev / test / util / CompactArrayTest.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2002-2004, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 package com.ibm.icu.dev.test.util;\r
8 \r
9 import com.ibm.icu.dev.test.TestFmwk;\r
10 \r
11 import com.ibm.icu.impl.Utility;\r
12 import com.ibm.icu.util.CompactByteArray;\r
13 import com.ibm.icu.util.CompactCharArray;\r
14 \r
15 /**\r
16  * @since release 2.2\r
17  */\r
18 public final class CompactArrayTest extends TestFmwk \r
19\r
20     public static void main(String[] args) throws Exception\r
21     {\r
22         new CompactArrayTest().run(args);\r
23     }\r
24     \r
25     public void TestByteArrayCoverage() {\r
26     CompactByteArray cba = new CompactByteArray();\r
27     cba.setElementAt((char)0x5, (byte)0xdf);\r
28     cba.setElementAt((char)0x105, (byte)0xdf);\r
29     cba.setElementAt((char)0x205, (byte)0xdf);\r
30     cba.setElementAt((char)0x305, (byte)0xdf);\r
31     CompactByteArray cba2 = new CompactByteArray((byte)0xdf);\r
32     if (cba.equals(cba2)) {\r
33         errln("unequal byte arrays compare equal");\r
34     }\r
35     CompactByteArray cba3 = (CompactByteArray)cba.clone();\r
36 \r
37     logln("equals null: " + cba.equals(null));\r
38     logln("equals self: " + cba.equals(cba));\r
39     logln("equals clone: " + cba.equals(cba3));\r
40     logln("equals bogus: " + cba.equals(new Object()));\r
41     logln("hash: " + cba.hashCode());\r
42 \r
43     cba.compact(true);\r
44     cba.compact(true);\r
45 \r
46     char[] xa = cba.getIndexArray();\r
47     byte[] va = cba.getValueArray();\r
48     CompactByteArray cba4 = new CompactByteArray(xa, va);\r
49 \r
50     String xs = Utility.arrayToRLEString(xa);\r
51     String vs = Utility.arrayToRLEString(va);\r
52     CompactByteArray cba5 = new CompactByteArray(xs, vs);\r
53 \r
54     logln("equals: " + cba4.equals(cba5));\r
55     logln("equals: " + cba.equals(cba4));\r
56     \r
57       cba4.compact(false);\r
58     logln("equals: " + cba4.equals(cba5));\r
59 \r
60     cba5.compact(true);\r
61     logln("equals: " + cba4.equals(cba5));\r
62 \r
63     cba.setElementAt((char)0x405, (byte)0xdf); // force expand\r
64     logln("modified equals clone: " + cba.equals(cba3));\r
65 \r
66     cba3.setElementAt((char)0x405, (byte)0xdf); // equivalent modification\r
67     logln("modified equals modified clone: " + cba.equals(cba3));\r
68 \r
69     cba3.setElementAt((char)0x405, (byte)0xee); // different modification\r
70     logln("different mod equals: " + cba.equals(cba3));\r
71 \r
72     cba.compact();\r
73     CompactByteArray cba6 = (CompactByteArray)cba.clone();\r
74     logln("cloned compact equals: " + cba.equals(cba6));\r
75 \r
76     cba6.setElementAt((char)0x405, (byte)0xee);\r
77     logln("modified clone: " + cba3.equals(cba6));\r
78 \r
79     cba6.setElementAt((char)0x100, (char)0x104, (byte)0xfe);\r
80     for (int i = 0x100; i < 0x105; ++i) {\r
81         cba3.setElementAt((char)i, (byte)0xfe);\r
82     }\r
83     logln("double modified: " + cba3.equals(cba6));\r
84     }\r
85 \r
86     public void TestCharArrayCoverage() {\r
87     // v1.8 fails with extensive compaction, so set to false\r
88     final boolean EXTENSIVE = false;\r
89 \r
90     CompactCharArray cca = new CompactCharArray();\r
91     cca.setElementAt((char)0x5, (char)0xdf);\r
92     cca.setElementAt((char)0x105, (char)0xdf);\r
93     cca.setElementAt((char)0x205, (char)0xdf);\r
94     cca.setElementAt((char)0x305, (char)0xdf);\r
95     CompactCharArray cca2 = new CompactCharArray((char)0xdf);\r
96     if (cca.equals(cca2)) {\r
97         errln("unequal char arrays compare equal");\r
98     }\r
99     CompactCharArray cca3 = (CompactCharArray)cca.clone();\r
100 \r
101     logln("equals null: " + cca.equals(null));\r
102     logln("equals self: " + cca.equals(cca));\r
103     logln("equals clone: " + cca.equals(cca3));\r
104     logln("equals bogus: " + cca.equals(new Object()));\r
105     logln("hash: " + cca.hashCode());\r
106 \r
107     cca.compact(EXTENSIVE);\r
108     cca.compact(EXTENSIVE);\r
109 \r
110     char[] xa = cca.getIndexArray();\r
111     char[] va = cca.getValueArray();\r
112     CompactCharArray cca4 = new CompactCharArray(xa, va);\r
113 \r
114     String xs = Utility.arrayToRLEString(xa);\r
115     String vs = Utility.arrayToRLEString(va);\r
116     CompactCharArray cca5 = new CompactCharArray(xs, vs);\r
117 \r
118     logln("equals: " + cca4.equals(cca5));\r
119     logln("equals: " + cca.equals(cca4));\r
120 \r
121     cca4.compact(false);\r
122     logln("equals: " + cca4.equals(cca5));\r
123 \r
124     cca5.compact(EXTENSIVE);\r
125     logln("equals: " + cca4.equals(cca5));\r
126 \r
127     cca.setElementAt((char)0x405, (char)0xdf); // force expand\r
128     logln("modified equals clone: " + cca.equals(cca3));\r
129 \r
130     cca3.setElementAt((char)0x405, (char)0xdf); // equivalent modification\r
131     logln("modified equals modified clone: " + cca.equals(cca3));\r
132 \r
133     cca3.setElementAt((char)0x405, (char)0xee); // different modification\r
134     logln("different mod equals: " + cca.equals(cca3));\r
135     \r
136     // after setElementAt isCompact is set to false\r
137     cca3.compact(true);\r
138     logln("different mod equals: " + cca.equals(cca3));\r
139     \r
140     cca3.setElementAt((char)0x405, (char)0xee); // different modification\r
141     logln("different mod equals: " + cca.equals(cca3));\r
142         // after setElementAt isCompact is set to false\r
143     cca3.compact();\r
144     logln("different mod equals: " + cca.equals(cca3));\r
145     \r
146     // v1.8 fails with extensive compaction, and defaults extensive, so don't compact\r
147     // cca.compact();\r
148     CompactCharArray cca6 = (CompactCharArray)cca.clone();\r
149     logln("cloned compact equals: " + cca.equals(cca6));\r
150 \r
151     cca6.setElementAt((char)0x405, (char)0xee);\r
152     logln("modified clone: " + cca3.equals(cca6));\r
153 \r
154     cca6.setElementAt((char)0x100, (char)0x104, (char)0xfe);\r
155     for (int i = 0x100; i < 0x105; ++i) {\r
156         cca3.setElementAt((char)i, (char)0xfe);\r
157     }\r
158     logln("double modified: " + cca3.equals(cca6));\r
159     }\r
160 }\r