2 ******************************************************************************
\r
3 * Copyright (C) 2007, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 ******************************************************************************
\r
8 // Copyright 2006 Google Inc. All Rights Reserved.
\r
10 package com.ibm.icu.dev.test.duration;
\r
12 import com.ibm.icu.dev.test.TestFmwk;
\r
14 import com.ibm.icu.impl.duration.impl.XMLRecordReader;
\r
15 import com.ibm.icu.impl.duration.impl.XMLRecordWriter;
\r
17 import java.io.StringReader;
\r
18 import java.io.StringWriter;
\r
20 public class DataReadWriteTest extends TestFmwk {
\r
25 public static void main(String[] args) {
\r
26 new DataReadWriteTest().run(args);
\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
45 return sb.toString();
\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
54 String str = sw.toString();
\r
55 assertEquals(null, "<Test></Test>", normalize(str));
\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
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
69 String str = sw.toString();
\r
70 assertEquals(null, "<x>true</x><y>false</y>", normalize(str));
\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
78 public void testBoolArray() {
\r
79 boolean[][] datas = {
\r
83 { true, false, true },
\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
94 for (int j = 0; j < datas.length; ++j) {
\r
95 boolean[] data = datas[j];
\r
96 String target = targets[j];
\r
98 StringWriter sw = new StringWriter();
\r
99 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
100 xrw.boolArray("test", data);
\r
102 String str = sw.toString();
\r
103 assertEquals("" + j, target, normalize(str));
\r
105 StringReader sr = new StringReader(str);
\r
106 XMLRecordReader xrr = new XMLRecordReader(sr);
\r
107 boolean[] out = xrr.boolArray("test");
\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
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
123 String str = sw.toString();
\r
124 assertEquals(null, "<x>a</x><y>b</y>", normalize(str));
\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
132 public void testCharacterArray() {
\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
148 for (int j = 0; j < datas.length; ++j) {
\r
149 char[] data = datas[j];
\r
150 String target = targets[j];
\r
152 StringWriter sw = new StringWriter();
\r
153 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
154 xrw.characterArray("test", data);
\r
156 String str = sw.toString();
\r
157 assertEquals("" + j, target, normalize(str));
\r
159 StringReader sr = new StringReader(str);
\r
160 XMLRecordReader xrr = new XMLRecordReader(sr);
\r
161 char[] out = xrr.characterArray("test");
\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
171 public void testNamedIndex() {
\r
172 StringWriter sw = new StringWriter();
\r
173 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
174 String[] names = { "zero", "one" };
\r
176 xrw.namedIndex("x", names, 0);
\r
177 xrw.namedIndex("y", names, 1);
\r
179 String str = sw.toString();
\r
180 assertEquals(null, "<x>zero</x><y>one</y>", normalize(str));
\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
188 public void testNamedIndexArray() {
\r
189 String[] names = { "zero", "one" };
\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
205 for (int j = 0; j < datas.length; ++j) {
\r
206 byte[] data = datas[j];
\r
207 String target = targets[j];
\r
209 StringWriter sw = new StringWriter();
\r
210 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
211 xrw.namedIndexArray("test", names, data);
\r
213 String str = sw.toString();
\r
214 assertEquals("" + j, target, normalize(str));
\r
216 StringReader sr = new StringReader(str);
\r
217 XMLRecordReader xrr = new XMLRecordReader(sr);
\r
218 byte[] out = xrr.namedIndexArray("test", names);
\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
228 public void testString() {
\r
229 StringWriter sw = new StringWriter();
\r
230 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
232 String s = " This is <a> &&\t test. ";
\r
233 String s1 = " This is <a> && test. ";
\r
234 String t = " This is <a> && test. ";
\r
235 xrw.string("x", s);
\r
237 String str = sw.toString();
\r
238 assertEquals("\n'" + normalize(str) + "' = \n'<x>" + t + "</x>", "<x>"
\r
239 + t + "</x>", normalize(str));
\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
247 public void testStringArray() {
\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
254 String[][] datas = {
\r
259 { s3, null, s1, null },
\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
275 for (int j = 0; j < datas.length; ++j) {
\r
276 String[] data = datas[j];
\r
277 String target = targets[j];
\r
279 StringWriter sw = new StringWriter();
\r
280 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
281 xrw.stringArray("test", data);
\r
283 String str = sw.toString();
\r
284 assertEquals("" + j + " '" + str + "'", target, normalize(str));
\r
286 StringReader sr = new StringReader(str);
\r
287 XMLRecordReader xrr = new XMLRecordReader(sr);
\r
288 String[] out = xrr.stringArray("test");
\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
297 assertEquals("" + j + "/" + i + " '" + out[i] + "'", standin,
\r
303 public void testStringTable() {
\r
306 String s3 = "This is a test";
\r
307 String s4 = "It is only a test";
\r
309 String[][] table = {
\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
329 StringWriter sw = new StringWriter();
\r
330 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
331 xrw.stringTable("test", table);
\r
333 String str = sw.toString();
\r
334 assertEquals("'" + str + "'", target, normalize(str));
\r
337 public void testOmittedFields() {
\r
338 StringWriter sw = new StringWriter();
\r
339 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
341 xrw.bool("x", true);
\r
342 xrw.bool("y", false);
\r
345 String str = sw.toString();
\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