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