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