1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.io; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.CharArrayReader; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class CharArrayReaderTest extends junit.framework.TestCase { 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] hw = { 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' }; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes CharArrayReader cr; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.CharArrayReader#CharArrayReader(char[]) 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_Constructor$C() throws IOException { 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(hw); 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Failed to create reader", cr.ready()); 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.CharArrayReader#CharArrayReader(char[], int, int) 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_Constructor$CII() throws IOException { 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(hw, 5, 5); 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Failed to create reader", cr.ready()); 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int c = cr.read(); 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Created incorrect reader--returned '" + (char) c 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "' intsead of 'W'", c == 'W'); 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.CharArrayReader#close() 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_close() { 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(hw); 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.close(); 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.read(); 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Failed to throw exception on read from closed stream"); 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // No-op 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.close(); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.CharArrayReader#mark(int) 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_markI() throws IOException { 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(hw); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.skip(5L); 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.mark(100); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.read(); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.reset(); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Failed to mark correct position", 'W', cr.read()); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.CharArrayReader#markSupported() 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_markSupported() { 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(hw); 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("markSupported returned false", cr.markSupported()); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.CharArrayReader#read() 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_read() throws IOException { 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(hw); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Read returned incorrect char", 'H', cr.read()); 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(new char[] { '\u8765' }); 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect double byte char", cr.read() == '\u8765'); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.CharArrayReader#read(char[], int, int) 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_read$CII() throws IOException { 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] c = new char[11]; 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(hw); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.read(c, 1, 10); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Read returned incorrect chars", new String(c, 1, 10) 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(new String(hw, 0, 10))); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.CharArrayReader#ready() 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ready() throws IOException { 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(hw); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("ready returned false", cr.ready()); 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.skip(1000); 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("ready returned true", !cr.ready()); 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.close(); 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.ready(); 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No exception 1"); 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(hw); 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.close(); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.ready(); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No exception 2"); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.CharArrayReader#reset() 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_reset() throws IOException { 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(hw); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.skip(5L); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.mark(100); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.read(); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.reset(); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Reset failed to return to marker position", 'W', cr 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .read()); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-4357 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String str = "offsetHello world!"; 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] data = new char[str.length()]; 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes str.getChars(0, str.length(), data, 0); 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int offsetLength = 6; 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int length = data.length - offsetLength; 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes CharArrayReader reader = new CharArrayReader(data, offsetLength, length); 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes reader.reset(); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < length; i++) { 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(data[offsetLength + i], (char) reader.read()); 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.CharArrayReader#skip(long) 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_skipJ() throws IOException { 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr = new CharArrayReader(hw); 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long skipped = cr.skip(5L); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Failed to skip correct number of chars", 5L, skipped); 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Skip skipped wrong chars", 'W', cr.read()); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tears down the fixture, for example, close a network connection. This 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * method is called after a test is executed. 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() { 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (cr != null) 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cr.close(); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 179