DataReadWriteTest.java revision 7935b1839a081ed19ae0d33029ad3c09632a2caa
17935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 27935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert****************************************************************************** 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert* Copyright (C) 2007-2010, International Business Machines Corporation and * 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert* others. All Rights Reserved. * 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert****************************************************************************** 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert*/ 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert// Copyright 2006 Google Inc. All Rights Reserved. 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.dev.test.duration; 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.io.StringReader; 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.io.StringWriter; 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.dev.test.TestFmwk; 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.impl.duration.impl.XMLRecordReader; 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.impl.duration.impl.XMLRecordWriter; 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class DataReadWriteTest extends TestFmwk { 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Invoke the tests. 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static void main(String[] args) { 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new DataReadWriteTest().run(args); 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // strip line ends and trailing spaces 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private String normalize(String str) { 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringBuffer sb = new StringBuffer(); 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean inLine = true; 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int i = 0; i < str.length(); ++i) { 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert char c = str.charAt(i); 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (inLine && c == ' ') { 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert continue; 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (c == '\n') { 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert inLine = true; 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert continue; 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert inLine = false; 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sb.append("" + c); 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return sb.toString(); 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void testOpenClose() { 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringWriter sw = new StringWriter(); 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordWriter xrw = new XMLRecordWriter(sw); 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, xrw.open("Test")); 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, xrw.close()); 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.flush(); 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str = sw.toString(); 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, "<Test></Test>", normalize(str)); 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringReader sr = new StringReader(str); 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordReader xrr = new XMLRecordReader(sr); 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, xrr.open("Test")); 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, xrr.close()); 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void testBool() { 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringWriter sw = new StringWriter(); 647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordWriter xrw = new XMLRecordWriter(sw); 657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.bool("x", true); 667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.bool("y", false); 677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.flush(); 687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str = sw.toString(); 697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, "<x>true</x><y>false</y>", normalize(str)); 707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringReader sr = new StringReader(str); 727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordReader xrr = new XMLRecordReader(sr); 737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, xrr.bool("x")); 747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertFalse(null, xrr.bool("y")); 757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void testBoolArray() { 787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean[][] datas = { 797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {}, 807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { true }, 817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { true, false }, 827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { true, false, true }, 837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] targets = { 867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList></testList>", 877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>true</test></testList>", 887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>true</test><test>false</test></testList>", 897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>true</test><test>false</test>" + 907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<test>true</test></testList>", 917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int j = 0; j < datas.length; ++j) { 947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean[] data = datas[j]; 957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String target = targets[j]; 967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringWriter sw = new StringWriter(); 987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordWriter xrw = new XMLRecordWriter(sw); 997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.boolArray("test", data); 1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.flush(); 1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str = sw.toString(); 1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j, target, normalize(str)); 1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringReader sr = new StringReader(str); 1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordReader xrr = new XMLRecordReader(sr); 1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean[] out = xrr.boolArray("test"); 1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertNotNull("" + j, out); 1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j, data.length, out.length); 1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int i = 0; i < data.length; ++i) { 1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j + "/" + i, data[i], out[i]); 1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void testCharacter() { 1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringWriter sw = new StringWriter(); 1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordWriter xrw = new XMLRecordWriter(sw); 1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.character("x", 'a'); 1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.character("y", 'b'); 1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.flush(); 1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str = sw.toString(); 1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, "<x>a</x><y>b</y>", normalize(str)); 1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringReader sr = new StringReader(str); 1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordReader xrr = new XMLRecordReader(sr); 1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, 'a', xrr.character("x")); 1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, 'b', xrr.character("y")); 1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void testCharacterArray() { 1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert char[][] datas = { 1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {}, 1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 'a' }, 1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 'a', 'b' }, 1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 'a', 'b', 'c' }, 1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] targets = { 1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList></testList>", 1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>a</test></testList>", 1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>a</test><test>b</test></testList>", 1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>a</test><test>b</test>" + 1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<test>c</test></testList>", 1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int j = 0; j < datas.length; ++j) { 1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert char[] data = datas[j]; 1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String target = targets[j]; 1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringWriter sw = new StringWriter(); 1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordWriter xrw = new XMLRecordWriter(sw); 1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.characterArray("test", data); 1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.flush(); 1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str = sw.toString(); 1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j, target, normalize(str)); 1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringReader sr = new StringReader(str); 1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordReader xrr = new XMLRecordReader(sr); 1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert char[] out = xrr.characterArray("test"); 1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertNotNull("" + j, out); 1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j, data.length, out.length); 1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int i = 0; i < data.length; ++i) { 1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j + "/" + i, data[i], out[i]); 1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void testNamedIndex() { 1717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringWriter sw = new StringWriter(); 1727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordWriter xrw = new XMLRecordWriter(sw); 1737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] names = { "zero", "one" }; 1747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.namedIndex("x", names, 0); 1767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.namedIndex("y", names, 1); 1777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.flush(); 1787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str = sw.toString(); 1797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, "<x>zero</x><y>one</y>", normalize(str)); 1807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringReader sr = new StringReader(str); 1827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordReader xrr = new XMLRecordReader(sr); 1837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, 0, xrr.namedIndex("x", names)); 1847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, 1, xrr.namedIndex("y", names)); 1857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void testNamedIndexArray() { 1887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] names = { "zero", "one" }; 1897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte[][] datas = { 1907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {}, 1917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 0 }, 1927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 1, 0 }, 1937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 0, 1, 0 }, 1947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 1957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] targets = { 1977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList></testList>", 1987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>zero</test></testList>", 1997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>one</test><test>zero</test></testList>", 2007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>zero</test><test>one</test>" + 2017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<test>zero</test></testList>", 2027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 2037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int j = 0; j < datas.length; ++j) { 2057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte[] data = datas[j]; 2067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String target = targets[j]; 2077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringWriter sw = new StringWriter(); 2097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordWriter xrw = new XMLRecordWriter(sw); 2107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.namedIndexArray("test", names, data); 2117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.flush(); 2127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str = sw.toString(); 2137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j, target, normalize(str)); 2147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringReader sr = new StringReader(str); 2167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordReader xrr = new XMLRecordReader(sr); 2177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte[] out = xrr.namedIndexArray("test", names); 2187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertNotNull("" + j, out); 2207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j, data.length, out.length); 2217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int i = 0; i < data.length; ++i) { 2227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j + "/" + i, data[i], out[i]); 2237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void testString() { 2287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringWriter sw = new StringWriter(); 2297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordWriter xrw = new XMLRecordWriter(sw); 2307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s = " This is <a> &&\t test. "; 2327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s1 = " This is <a> && test. "; 2337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String t = " This is <a> && test. "; 2347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.string("x", s); 2357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.flush(); 2367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str = sw.toString(); 2377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("\n'" + normalize(str) + "' = \n'<x>" + t + "</x>", "<x>" 2387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert + t + "</x>", normalize(str)); 2397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringReader sr = new StringReader(str); 2417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordReader xrr = new XMLRecordReader(sr); 2427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String res = xrr.string("x"); 2437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("\n'" + res + "' == \n'" + s1 + "'", s1, res); 2447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void testStringArray() { 2477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s1 = ""; 2487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s2 = " "; 2497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s3 = "This is a test"; 2507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s4 = " It is\n only a test\t "; 2517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s4x = " It is only a test "; 2527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[][] datas = { 2547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {}, 2557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { s1 }, 2567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { s2, s1 }, 2577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { s3, s2, s1 }, 2587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { s3, null, s1, null }, 2597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { s4, s1, s3, s2 } 2607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 2617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] targets = { 2637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList></testList>", 2647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>" + s1 + "</test></testList>", 2657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>" + s2 + "</test><test>" + s1 + "</test></testList>", 2667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>" + s3 + "</test><test>" + s2 + 2677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "</test><test>" + s1 + "</test></testList>", 2687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>" + s3 + "</test><test>Null</test><test>" + s1 + 2697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "</test><test>Null</test></testList>", 2707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>" + s4x + "</test><test>" + s1 + 2717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "</test><test>" + s3 + "</test><test>" + s2 + "</test></testList>", 2727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 2737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int j = 0; j < datas.length; ++j) { 2757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] data = datas[j]; 2767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String target = targets[j]; 2777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringWriter sw = new StringWriter(); 2797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordWriter xrw = new XMLRecordWriter(sw); 2807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.stringArray("test", data); 2817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.flush(); 2827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str = sw.toString(); 2837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j + " '" + str + "'", target, normalize(str)); 2847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringReader sr = new StringReader(str); 2867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordReader xrr = new XMLRecordReader(sr); 2877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] out = xrr.stringArray("test"); 2887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertNotNull("" + j, out); 2907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j, data.length, out.length); 2917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int i = 0; i < data.length; ++i) { 2927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String standin = data[i]; 2937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (s4.equals(standin)) { 2947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert standin = s4x; 2957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("" + j + "/" + i + " '" + out[i] + "'", standin, 2977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out[i]); 2987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void testStringTable() { 3037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s1 = ""; 3047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s2 = " "; 3057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s3 = "This is a test"; 3067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s4 = "It is only a test"; 3077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[][] table = { 3097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {}, 3107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { s1 }, 3117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { s2, s1 }, 3127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { s3, s2, s1 }, 3137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert null, 3147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { s4, s1, s3, s2 } 3157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 3167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String target = "<testTable>" + 3187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList></testList>" + 3197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test></test></testList>" + 3207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test> </test><test></test></testList>" + 3217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>This is a test</test><test> </test>" + 3227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<test></test></testList>" + 3237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList>Null</testList>" + 3247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<testList><test>It is only a test</test><test></test>" + 3257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "<test>This is a test</test><test> </test></testList>" + 3267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "</testTable>"; 3277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringWriter sw = new StringWriter(); 3297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordWriter xrw = new XMLRecordWriter(sw); 3307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.stringTable("test", table); 3317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.flush(); 3327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str = sw.toString(); 3337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("'" + str + "'", target, normalize(str)); 3347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void testOmittedFields() { 3377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringWriter sw = new StringWriter(); 3387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordWriter xrw = new XMLRecordWriter(sw); 3397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.open("omit"); 3407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.bool("x", true); 3417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.bool("y", false); 3427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.close(); 3437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert xrw.flush(); 3447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String str = sw.toString(); 3457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringReader sr = new StringReader(str); 3477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert XMLRecordReader xrr = new XMLRecordReader(sr); 3487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, xrr.open("omit")); 3497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, xrr.bool("x")); 3507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals(null, '\uffff', xrr.character("z")); 3517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertFalse(null, xrr.bool("y")); 3527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertTrue(null, xrr.close()); 3537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 355