2 ******************************************************************************
\r
3 * Copyright (C) 2007-2010, 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 java.io.StringReader;
\r
13 import java.io.StringWriter;
\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
19 public class DataReadWriteTest extends TestFmwk {
\r
24 public static void main(String[] args) {
\r
25 new DataReadWriteTest().run(args);
\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
44 return sb.toString();
\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
53 String str = sw.toString();
\r
54 assertEquals(null, "<Test></Test>", normalize(str));
\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
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
68 String str = sw.toString();
\r
69 assertEquals(null, "<x>true</x><y>false</y>", normalize(str));
\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
77 public void testBoolArray() {
\r
78 boolean[][] datas = {
\r
82 { true, false, true },
\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
93 for (int j = 0; j < datas.length; ++j) {
\r
94 boolean[] data = datas[j];
\r
95 String target = targets[j];
\r
97 StringWriter sw = new StringWriter();
\r
98 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
99 xrw.boolArray("test", data);
\r
101 String str = sw.toString();
\r
102 assertEquals("" + j, target, normalize(str));
\r
104 StringReader sr = new StringReader(str);
\r
105 XMLRecordReader xrr = new XMLRecordReader(sr);
\r
106 boolean[] out = xrr.boolArray("test");
\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
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
122 String str = sw.toString();
\r
123 assertEquals(null, "<x>a</x><y>b</y>", normalize(str));
\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
131 public void testCharacterArray() {
\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
147 for (int j = 0; j < datas.length; ++j) {
\r
148 char[] data = datas[j];
\r
149 String target = targets[j];
\r
151 StringWriter sw = new StringWriter();
\r
152 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
153 xrw.characterArray("test", data);
\r
155 String str = sw.toString();
\r
156 assertEquals("" + j, target, normalize(str));
\r
158 StringReader sr = new StringReader(str);
\r
159 XMLRecordReader xrr = new XMLRecordReader(sr);
\r
160 char[] out = xrr.characterArray("test");
\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
170 public void testNamedIndex() {
\r
171 StringWriter sw = new StringWriter();
\r
172 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
173 String[] names = { "zero", "one" };
\r
175 xrw.namedIndex("x", names, 0);
\r
176 xrw.namedIndex("y", names, 1);
\r
178 String str = sw.toString();
\r
179 assertEquals(null, "<x>zero</x><y>one</y>", normalize(str));
\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
187 public void testNamedIndexArray() {
\r
188 String[] names = { "zero", "one" };
\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
204 for (int j = 0; j < datas.length; ++j) {
\r
205 byte[] data = datas[j];
\r
206 String target = targets[j];
\r
208 StringWriter sw = new StringWriter();
\r
209 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
210 xrw.namedIndexArray("test", names, data);
\r
212 String str = sw.toString();
\r
213 assertEquals("" + j, target, normalize(str));
\r
215 StringReader sr = new StringReader(str);
\r
216 XMLRecordReader xrr = new XMLRecordReader(sr);
\r
217 byte[] out = xrr.namedIndexArray("test", names);
\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
227 public void testString() {
\r
228 StringWriter sw = new StringWriter();
\r
229 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
231 String s = " This is <a> &&\t test. ";
\r
232 String s1 = " This is <a> && test. ";
\r
233 String t = " This is <a> && test. ";
\r
234 xrw.string("x", s);
\r
236 String str = sw.toString();
\r
237 assertEquals("\n'" + normalize(str) + "' = \n'<x>" + t + "</x>", "<x>"
\r
238 + t + "</x>", normalize(str));
\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
246 public void testStringArray() {
\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
253 String[][] datas = {
\r
258 { s3, null, s1, null },
\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
274 for (int j = 0; j < datas.length; ++j) {
\r
275 String[] data = datas[j];
\r
276 String target = targets[j];
\r
278 StringWriter sw = new StringWriter();
\r
279 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
280 xrw.stringArray("test", data);
\r
282 String str = sw.toString();
\r
283 assertEquals("" + j + " '" + str + "'", target, normalize(str));
\r
285 StringReader sr = new StringReader(str);
\r
286 XMLRecordReader xrr = new XMLRecordReader(sr);
\r
287 String[] out = xrr.stringArray("test");
\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
296 assertEquals("" + j + "/" + i + " '" + out[i] + "'", standin,
\r
302 public void testStringTable() {
\r
305 String s3 = "This is a test";
\r
306 String s4 = "It is only a test";
\r
308 String[][] table = {
\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
328 StringWriter sw = new StringWriter();
\r
329 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
330 xrw.stringTable("test", table);
\r
332 String str = sw.toString();
\r
333 assertEquals("'" + str + "'", target, normalize(str));
\r
336 public void testOmittedFields() {
\r
337 StringWriter sw = new StringWriter();
\r
338 XMLRecordWriter xrw = new XMLRecordWriter(sw);
\r
340 xrw.bool("x", true);
\r
341 xrw.bool("y", false);
\r
344 String str = sw.toString();
\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