1990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson/* 2990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * Copyright (C) 2008 The Android Open Source Project 3990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * 4990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 5990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * you may not use this file except in compliance with the License. 6990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * You may obtain a copy of the License at 7990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * 8990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 9990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * 10990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * Unless required by applicable law or agreed to in writing, software 11990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 12990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * See the License for the specific language governing permissions and 14990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * limitations under the License. 15990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson */ 16990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 17990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonpackage libcore.java.io; 18990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 19990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonimport java.io.BufferedReader; 20990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonimport java.io.IOException; 21990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonimport java.io.Reader; 22990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonimport java.io.StringReader; 23990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonimport junit.framework.TestCase; 24990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 25990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson/** 26990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * Tests to verify that simple functionality works for BufferedReaders. 27990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson */ 28990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonpublic class OldAndroidBufferedReaderTest extends TestCase { 29990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 30990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testBufferedReader() throws Exception { 31990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson String str = "AbCdEfGhIjKlMnOpQrStUvWxYz"; 32990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson StringReader aa = new StringReader(str); 33990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson StringReader ba = new StringReader(str); 34990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson StringReader ca = new StringReader(str); 35990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson StringReader da = new StringReader(str); 36990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 37990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson BufferedReader a = new BufferedReader(aa, 5); 38990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson try { 39990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(str, read(a)); 40990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } finally { 41990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson a.close(); 42990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 43990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 44990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson BufferedReader b = new BufferedReader(ba, 15); 45990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson try { 46990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("AbCdEfGhIj", read(b, 10)); 47990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } finally { 48990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson b.close(); 49990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 50990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 51990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson BufferedReader c = new BufferedReader(ca); 52990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson try { 53990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("bdfhjlnprtvxz", skipRead(c)); 54990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } finally { 55990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson c.close(); 56990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 57990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 58990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson BufferedReader d = new BufferedReader(da); 59990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson try { 60990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("AbCdEfGdEfGhIjKlMnOpQrStUvWxYz", markRead(d, 3, 4)); 61990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } finally { 62990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson d.close(); 63990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 64990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 65990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 66990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public static String read(Reader a) throws IOException { 67990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson int r; 68990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson StringBuilder builder = new StringBuilder(); 69990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson do { 70990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson r = a.read(); 71990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson if (r != -1) 72990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson builder.append((char) r); 73990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } while (r != -1); 74990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson return builder.toString(); 75990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 76990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 77990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public static String read(Reader a, int x) throws IOException { 78990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson char[] b = new char[x]; 79990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson int len = a.read(b, 0, x); 80990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson if (len < 0) { 81990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson return ""; 82990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 83990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson return new String(b, 0, len); 84990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 85990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 86990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public static String skipRead(Reader a) throws IOException { 87990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson int r; 88990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson StringBuilder builder = new StringBuilder(); 89990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson do { 90990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson a.skip(1); 91990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson r = a.read(); 92990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson if (r != -1) 93990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson builder.append((char) r); 94990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } while (r != -1); 95990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson return builder.toString(); 96990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 97990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 98990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public static String markRead(Reader a, int x, int y) throws IOException { 99990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson int m = 0; 100990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson int r; 101990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson StringBuilder builder = new StringBuilder(); 102990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson do { 103990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson m++; 104990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson r = a.read(); 105990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson if (m == x) 106990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson a.mark((x + y)); 107990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson if (m == (x + y)) 108990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson a.reset(); 109990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 110990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson if (r != -1) 111990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson builder.append((char) r); 112990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } while (r != -1); 113990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson return builder.toString(); 114990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 115990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson} 116