]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / icu / dev / test / duration / DataReadWriteTest.java
1 /*\r
2 ******************************************************************************\r
3 * Copyright (C) 2007, International Business Machines Corporation and        *\r
4 * others. All Rights Reserved.                                               *\r
5 ******************************************************************************\r
6 */\r
7 \r
8 // Copyright 2006 Google Inc.  All Rights Reserved.\r
9 \r
10 package com.ibm.icu.dev.test.duration;\r
11 \r
12 import com.ibm.icu.dev.test.TestFmwk;\r
13 \r
14 import com.ibm.icu.impl.duration.impl.XMLRecordReader;\r
15 import com.ibm.icu.impl.duration.impl.XMLRecordWriter;\r
16 \r
17 import java.io.StringReader;\r
18 import java.io.StringWriter;\r
19 \r
20 public class DataReadWriteTest extends TestFmwk {\r
21 \r
22     /**\r
23      * Invoke the tests.\r
24      */\r
25     public static void main(String[] args) {\r
26         new DataReadWriteTest().run(args);\r
27     }\r
28 \r
29     // strip line ends and trailing spaces\r
30     private String normalize(String str) {\r
31         StringBuffer sb = new StringBuffer();\r
32         boolean inLine = true;\r
33         for (int i = 0; i < str.length(); ++i) {\r
34             char c = str.charAt(i);\r
35             if (inLine && c == ' ') {\r
36                 continue;\r
37             }\r
38             if (c == '\n') {\r
39                 inLine = true;\r
40                 continue;\r
41             }\r
42             inLine = false;\r
43             sb.append("" + c);\r
44         }\r
45         return sb.toString();\r
46     }\r
47 \r
48     public void testOpenClose() {\r
49         StringWriter sw = new StringWriter();\r
50         XMLRecordWriter xrw = new XMLRecordWriter(sw);\r
51         assertTrue(null, xrw.open("Test"));\r
52         assertTrue(null, xrw.close());\r
53         xrw.flush();\r
54         String str = sw.toString();\r
55         assertEquals(null, "<Test></Test>", normalize(str));\r
56 \r
57         StringReader sr = new StringReader(str);\r
58         XMLRecordReader xrr = new XMLRecordReader(sr);\r
59         assertTrue(null, xrr.open("Test"));\r
60         assertTrue(null, xrr.close());\r
61     }\r
62 \r
63     public void testBool() {\r
64         StringWriter sw = new StringWriter();\r
65         XMLRecordWriter xrw = new XMLRecordWriter(sw);\r
66         xrw.bool("x", true);\r
67         xrw.bool("y", false);\r
68         xrw.flush();\r
69         String str = sw.toString();\r
70         assertEquals(null, "<x>true</x><y>false</y>", normalize(str));\r
71 \r
72         StringReader sr = new StringReader(str);\r
73         XMLRecordReader xrr = new XMLRecordReader(sr);\r
74         assertTrue(null, xrr.bool("x"));\r
75         assertFalse(null, xrr.bool("y"));\r
76     }\r
77 \r
78     public void testBoolArray() {\r
79         boolean[][] datas = {\r
80             {},\r
81             { true },\r
82             { true, false },\r
83             { true, false, true },\r
84         };\r
85     \r
86         String[] targets = {\r
87             "<testList></testList>",\r
88             "<testList><test>true</test></testList>",\r
89             "<testList><test>true</test><test>false</test></testList>",\r
90             "<testList><test>true</test><test>false</test>" +\r
91             "<test>true</test></testList>",\r
92         };\r
93 \r
94         for (int j = 0; j < datas.length; ++j) {\r
95             boolean[] data = datas[j];\r
96             String target = targets[j];\r
97 \r
98             StringWriter sw = new StringWriter();\r
99             XMLRecordWriter xrw = new XMLRecordWriter(sw);\r
100             xrw.boolArray("test", data);\r
101             xrw.flush();\r
102             String str = sw.toString();\r
103             assertEquals("" + j, target, normalize(str));\r
104 \r
105             StringReader sr = new StringReader(str);\r
106             XMLRecordReader xrr = new XMLRecordReader(sr);\r
107             boolean[] out = xrr.boolArray("test");\r
108 \r
109             assertNotNull("" + j, out);\r
110             assertEquals("" + j, data.length, out.length);\r
111             for (int i = 0; i < data.length; ++i) {\r
112                 assertEquals("" + j + "/" + i, data[i], out[i]);\r
113             }\r
114         }\r
115     }\r
116 \r
117     public void testCharacter() {\r
118         StringWriter sw = new StringWriter();\r
119         XMLRecordWriter xrw = new XMLRecordWriter(sw);\r
120         xrw.character("x", 'a');\r
121         xrw.character("y", 'b');\r
122         xrw.flush();\r
123         String str = sw.toString();\r
124         assertEquals(null, "<x>a</x><y>b</y>", normalize(str));\r
125 \r
126         StringReader sr = new StringReader(str);\r
127         XMLRecordReader xrr = new XMLRecordReader(sr);\r
128         assertEquals(null, 'a', xrr.character("x"));\r
129         assertEquals(null, 'b', xrr.character("y"));\r
130     }\r
131 \r
132     public void testCharacterArray() {\r
133         char[][] datas = {\r
134             {},\r
135             { 'a' },\r
136             { 'a', 'b' },\r
137             { 'a', 'b', 'c' },\r
138         };\r
139 \r
140         String[] targets = {\r
141             "<testList></testList>",\r
142             "<testList><test>a</test></testList>",\r
143             "<testList><test>a</test><test>b</test></testList>",\r
144             "<testList><test>a</test><test>b</test>" +\r
145             "<test>c</test></testList>",\r
146         };\r
147 \r
148         for (int j = 0; j < datas.length; ++j) {\r
149             char[] data = datas[j];\r
150             String target = targets[j];\r
151 \r
152             StringWriter sw = new StringWriter();\r
153             XMLRecordWriter xrw = new XMLRecordWriter(sw);\r
154             xrw.characterArray("test", data);\r
155             xrw.flush();\r
156             String str = sw.toString();\r
157             assertEquals("" + j, target, normalize(str));\r
158 \r
159             StringReader sr = new StringReader(str);\r
160             XMLRecordReader xrr = new XMLRecordReader(sr);\r
161             char[] out = xrr.characterArray("test");\r
162 \r
163             assertNotNull("" + j, out);\r
164             assertEquals("" + j, data.length, out.length);\r
165             for (int i = 0; i < data.length; ++i) {\r
166                 assertEquals("" + j + "/" + i, data[i], out[i]);\r
167             }\r
168         }\r
169     }\r
170 \r
171     public void testNamedIndex() {\r
172         StringWriter sw = new StringWriter();\r
173         XMLRecordWriter xrw = new XMLRecordWriter(sw);\r
174         String[] names = { "zero", "one" };\r
175 \r
176         xrw.namedIndex("x", names, 0);\r
177         xrw.namedIndex("y", names, 1);\r
178         xrw.flush();\r
179         String str = sw.toString();\r
180         assertEquals(null, "<x>zero</x><y>one</y>", normalize(str));\r
181 \r
182         StringReader sr = new StringReader(str);\r
183         XMLRecordReader xrr = new XMLRecordReader(sr);\r
184         assertEquals(null, 0, xrr.namedIndex("x", names));\r
185         assertEquals(null, 1, xrr.namedIndex("y", names));\r
186     }\r
187 \r
188     public void testNamedIndexArray() {\r
189         String[] names = { "zero", "one" };\r
190         byte[][] datas = {\r
191             {},\r
192             { 0 },\r
193             { 1, 0 },\r
194             { 0, 1, 0 },\r
195         };\r
196 \r
197         String[] targets = {\r
198             "<testList></testList>",\r
199             "<testList><test>zero</test></testList>",\r
200             "<testList><test>one</test><test>zero</test></testList>",\r
201             "<testList><test>zero</test><test>one</test>" +\r
202             "<test>zero</test></testList>",\r
203         };\r
204 \r
205         for (int j = 0; j < datas.length; ++j) {\r
206             byte[] data = datas[j];\r
207             String target = targets[j];\r
208 \r
209             StringWriter sw = new StringWriter();\r
210             XMLRecordWriter xrw = new XMLRecordWriter(sw);\r
211             xrw.namedIndexArray("test", names, data);\r
212             xrw.flush();\r
213             String str = sw.toString();\r
214             assertEquals("" + j, target, normalize(str));\r
215 \r
216             StringReader sr = new StringReader(str);\r
217             XMLRecordReader xrr = new XMLRecordReader(sr);\r
218             byte[] out = xrr.namedIndexArray("test", names);\r
219 \r
220             assertNotNull("" + j, out);\r
221             assertEquals("" + j, data.length, out.length);\r
222             for (int i = 0; i < data.length; ++i) {\r
223                 assertEquals("" + j + "/" + i, data[i], out[i]);\r
224             }\r
225         }\r
226     }\r
227 \r
228     public void testString() {\r
229         StringWriter sw = new StringWriter();\r
230         XMLRecordWriter xrw = new XMLRecordWriter(sw);\r
231 \r
232         String s = " This is <a> &&\t test. ";\r
233         String s1 = " This is <a> && test. ";\r
234         String t = " This is &lt;a> &amp;&amp; test. ";\r
235         xrw.string("x", s);\r
236         xrw.flush();\r
237         String str = sw.toString();\r
238         assertEquals("\n'" + normalize(str) + "' = \n'<x>" + t + "</x>", "<x>"\r
239                 + t + "</x>", normalize(str));\r
240 \r
241         StringReader sr = new StringReader(str);\r
242         XMLRecordReader xrr = new XMLRecordReader(sr);\r
243         String res = xrr.string("x");\r
244         assertEquals("\n'" + res + "' == \n'" + s1 + "'", s1, res);\r
245     }\r
246 \r
247     public void testStringArray() {\r
248         String s1 = "";\r
249         String s2 = " ";\r
250         String s3 = "This is a test";\r
251         String s4 = "  It is\n   only  a test\t  ";\r
252         String s4x = " It is only a test ";\r
253 \r
254         String[][] datas = { \r
255             {},\r
256             { s1 },\r
257             { s2, s1 },\r
258             { s3, s2, s1 },\r
259             { s3, null, s1, null },\r
260             { s4, s1, s3, s2 }\r
261         };\r
262 \r
263         String[] targets = {\r
264             "<testList></testList>",\r
265             "<testList><test>" + s1 + "</test></testList>",\r
266             "<testList><test>" + s2 + "</test><test>" + s1 + "</test></testList>",\r
267             "<testList><test>" + s3 + "</test><test>" + s2 + \r
268                 "</test><test>" + s1 + "</test></testList>",\r
269             "<testList><test>" + s3 + "</test><test>Null</test><test>" + s1 + \r
270                 "</test><test>Null</test></testList>",\r
271             "<testList><test>" + s4x + "</test><test>" + s1 + \r
272                 "</test><test>" + s3 + "</test><test>" + s2 + "</test></testList>",\r
273         };\r
274 \r
275         for (int j = 0; j < datas.length; ++j) {\r
276             String[] data = datas[j];\r
277             String target = targets[j];\r
278 \r
279             StringWriter sw = new StringWriter();\r
280             XMLRecordWriter xrw = new XMLRecordWriter(sw);\r
281             xrw.stringArray("test", data);\r
282             xrw.flush();\r
283             String str = sw.toString();\r
284             assertEquals("" + j + " '" + str + "'", target, normalize(str));\r
285 \r
286             StringReader sr = new StringReader(str);\r
287             XMLRecordReader xrr = new XMLRecordReader(sr);\r
288             String[] out = xrr.stringArray("test");\r
289 \r
290             assertNotNull("" + j, out);\r
291             assertEquals("" + j, data.length, out.length);\r
292             for (int i = 0; i < data.length; ++i) {\r
293                 String standin = data[i];\r
294                 if (s4.equals(standin)) {\r
295                     standin = s4x;\r
296                 }\r
297                 assertEquals("" + j + "/" + i + " '" + out[i] + "'", standin,\r
298                         out[i]);\r
299             }\r
300         }\r
301     }\r
302 \r
303     public void testStringTable() {\r
304         String s1 = "";\r
305         String s2 = " ";\r
306         String s3 = "This is a test";\r
307         String s4 = "It is only a test";\r
308 \r
309         String[][] table = { \r
310             {},\r
311             { s1 },\r
312             { s2, s1 },\r
313             { s3, s2, s1 },\r
314             null,\r
315             { s4, s1, s3, s2 }\r
316         };\r
317 \r
318         String target = "<testTable>" +\r
319             "<testList></testList>" +\r
320             "<testList><test></test></testList>" +\r
321             "<testList><test> </test><test></test></testList>" +\r
322             "<testList><test>This is a test</test><test> </test>" + \r
323                 "<test></test></testList>" +\r
324             "<testList>Null</testList>" +\r
325             "<testList><test>It is only a test</test><test></test>" +\r
326                 "<test>This is a test</test><test> </test></testList>" +\r
327             "</testTable>";\r
328 \r
329         StringWriter sw = new StringWriter();\r
330         XMLRecordWriter xrw = new XMLRecordWriter(sw);\r
331         xrw.stringTable("test", table);\r
332         xrw.flush();\r
333         String str = sw.toString();\r
334         assertEquals("'" + str + "'", target, normalize(str));\r
335     }\r
336 \r
337     public void testOmittedFields() {\r
338         StringWriter sw = new StringWriter();\r
339         XMLRecordWriter xrw = new XMLRecordWriter(sw);\r
340         xrw.open("omit");\r
341         xrw.bool("x", true);\r
342         xrw.bool("y", false);\r
343         xrw.close();\r
344         xrw.flush();\r
345         String str = sw.toString();\r
346 \r
347         StringReader sr = new StringReader(str);\r
348         XMLRecordReader xrr = new XMLRecordReader(sr);\r
349         assertTrue(null, xrr.open("omit"));\r
350         assertTrue(null, xrr.bool("x"));\r
351         assertEquals(null, '\uffff', xrr.character("z"));\r
352         assertFalse(null, xrr.bool("y"));\r
353         assertTrue(null, xrr.close());\r
354     }\r
355 }\r