1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package libcore.java.io; 18 19import java.io.IOException; 20import java.io.LineNumberReader; 21import java.io.Reader; 22import java.io.StringReader; 23import junit.framework.Assert; 24import junit.framework.TestCase; 25 26/** 27 * Checks basic functionality for LineNumberReader. 28 */ 29public class OldAndroidLineNumberReaderTest extends TestCase { 30 31 public void testLineNumberReader() throws Exception { 32 String str = "AbCdEfGhIjKlM\nOpQrStUvWxYz"; 33 34 StringReader aa = new StringReader(str); 35 StringReader ba = new StringReader(str); 36 StringReader ca = new StringReader(str); 37 StringReader da = new StringReader(str); 38 StringReader ea = new StringReader(str); 39 40 LineNumberReader a = new LineNumberReader(aa); 41 try { 42 assertEquals(0, a.getLineNumber()); 43 Assert.assertEquals(str, read(a)); 44 assertEquals(1, a.getLineNumber()); 45 a.setLineNumber(5); 46 assertEquals(5, a.getLineNumber()); 47 } finally { 48 a.close(); 49 } 50 51 LineNumberReader b = new LineNumberReader(ba); 52 try { 53 Assert.assertEquals("AbCdEfGhIj", read(b, 10)); 54 } finally { 55 b.close(); 56 } 57 58 LineNumberReader c = new LineNumberReader(ca); 59 try { 60 Assert.assertEquals("bdfhjl\nprtvxz", skipRead(c)); 61 } finally { 62 c.close(); 63 } 64 65 LineNumberReader d = new LineNumberReader(da); 66 try { 67 Assert.assertEquals("AbCdEfGdEfGhIjKlM\nOpQrStUvWxYz", markRead(d, 3, 4)); 68 } finally { 69 d.close(); 70 } 71 72 LineNumberReader e = new LineNumberReader(ea); 73 try { 74 assertEquals("AbCdEfGhIjKlM", e.readLine()); 75 } finally { 76 e.close(); 77 } 78 } 79 80 public static String read(Reader a) throws IOException { 81 int r; 82 StringBuilder builder = new StringBuilder(); 83 do { 84 r = a.read(); 85 if (r != -1) 86 builder.append((char) r); 87 } while (r != -1); 88 return builder.toString(); 89 } 90 91 public static String read(Reader a, int x) throws IOException { 92 char[] b = new char[x]; 93 int len = a.read(b, 0, x); 94 if (len < 0) { 95 return ""; 96 } 97 return new String(b, 0, len); 98 } 99 100 public static String skipRead(Reader a) throws IOException { 101 int r; 102 StringBuilder builder = new StringBuilder(); 103 do { 104 a.skip(1); 105 r = a.read(); 106 if (r != -1) 107 builder.append((char) r); 108 } while (r != -1); 109 return builder.toString(); 110 } 111 112 public static String markRead(Reader a, int x, int y) throws IOException { 113 int m = 0; 114 int r; 115 StringBuilder builder = new StringBuilder(); 116 do { 117 m++; 118 r = a.read(); 119 if (m == x) 120 a.mark((x + y)); 121 if (m == (x + y)) 122 a.reset(); 123 124 if (r != -1) 125 builder.append((char) r); 126 } while (r != -1); 127 return builder.toString(); 128 } 129} 130