1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* 2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements. See the NOTICE file distributed with 4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership. 5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with 7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License. You may obtain a copy of the License at 8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software 12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and 15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License. 16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.io; 19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException; 21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.StringReader; 22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class StringReaderTest extends junit.framework.TestCase { 24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String testString = "This is a test string"; 26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath StringReader sr; 28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.StringReader#StringReader(java.lang.String) 31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_ConstructorLjava_lang_String() { 33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.io.StringReader(java.lang.String) 34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Used in tests", true); 35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.StringReader#close() 39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_close() throws Exception { 41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.StringReader.close() 42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr = new StringReader(testString); 44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.close(); 45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] buf = new char[10]; 46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.read(buf, 0, 2); 47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Close failed"); 48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (java.io.IOException e) { 49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return; 50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.StringReader#mark(int) 55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_markI() throws Exception { 57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.StringReader.mark(int) 58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr = new StringReader(testString); 59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.skip(5); 60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.mark(0); 61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.skip(5); 62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.reset(); 63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] buf = new char[10]; 64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.read(buf, 0, 2); 65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to return to mark", new String(buf, 0, 2) 66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .equals(testString.substring(5, 7))); 67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.StringReader#markSupported() 71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_markSupported() { 73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method boolean java.io.StringReader.markSupported() 74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr = new StringReader(testString); 76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("markSupported returned false", sr.markSupported()); 77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.StringReader#read() 81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read() throws Exception { 83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method int java.io.StringReader.read() 84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr = new StringReader(testString); 85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int r = sr.read(); 86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Failed to read char", 'T', r); 87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr = new StringReader(new String(new char[] { '\u8765' })); 88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrong double byte char", sr.read() == '\u8765'); 89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.StringReader#read(char[], int, int) 93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read$CII() throws Exception { 95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method int java.io.StringReader.read(char [], int, int) 96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr = new StringReader(testString); 97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] buf = new char[testString.length()]; 98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int r = sr.read(buf, 0, testString.length()); 99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to read chars", r == testString.length()); 100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Read chars incorrectly", new String(buf, 0, r) 101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .equals(testString)); 102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.StringReader#ready() 106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_ready() throws Exception { 108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method boolean java.io.StringReader.ready() 109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr = new StringReader(testString); 110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Steam not ready", sr.ready()); 111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.close(); 112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int r = 0; 113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.ready(); 115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath r = 1; 117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Expected IOException not thrown in read()", 1, r); 119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.StringReader#reset() 123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_reset() throws Exception { 125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.StringReader.reset() 126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr = new StringReader(testString); 127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.skip(5); 128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.mark(0); 129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.skip(5); 130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.reset(); 131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] buf = new char[10]; 132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.read(buf, 0, 2); 133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to reset properly", new String(buf, 0, 2) 134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .equals(testString.substring(5, 7))); 135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.StringReader#skip(long) 139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_skipJ() throws Exception { 141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method long java.io.StringReader.skip(long) 142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr = new StringReader(testString); 143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.skip(5); 144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] buf = new char[10]; 145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.read(buf, 0, 2); 146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to skip properly", new String(buf, 0, 2) 147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .equals(testString.substring(5, 7))); 148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Regression test for HARMONY-5077 151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static boolean finish = false; 152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_synchronization() { 154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String anything = "Hello world"; 155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath final StringReader sr = new StringReader(anything); 156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread other = new Thread(new Runnable() { 157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void run() { 158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sr.close(); 159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath finish = true; 160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ; 163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }); 164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath synchronized (anything) { 166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath other.start(); 167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath while (!finish) { 168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.yield(); 169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath} 173