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.ByteArrayInputStream; 20990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonimport java.io.InputStreamReader; 21990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonimport junit.framework.TestCase; 22990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 23990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson/** 24990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * Checks basic InputStreamReader functionality. 25990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson */ 26990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonpublic class OldAndroidInputStreamReaderTest extends TestCase { 27990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 28990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson /** 29990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * Checks if ASCII encoding works with InputStreamReader 30990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson */ 31990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testAscii() throws Exception { 32990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson String str = "AbCdEfGhIjKlMnOpQrStUvWxYzX"; 33990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson ByteArrayInputStream aa = new ByteArrayInputStream(str.getBytes("ISO8859_1")); 34990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson InputStreamReader a = new InputStreamReader(aa, "ISO8859_1"); 35990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 36990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson try { 37990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson int x = a.read(); 38990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals('A', x); 39990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson char[] c = new char[26]; 40990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson x = a.read(c, 0, 26); 41f11138adb49be63f25188fc29a699cc5cd12df3dElliott Hughes assertEquals("ISO-8859-1", a.getEncoding()); 42990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(26, x); 43990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("bCdEfGhIjKlMnOpQrStUvWxYzX", String.valueOf(c)); 44990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } finally { 45990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson a.close(); 46990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 47990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 48990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 49990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson /** 50990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * Checks if Utf8 encoding works with InputStreamReader 51990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson */ 52990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testUtf8() throws Exception { 53990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson String str = "AbCdEfGhIjKlMnOpQrStUvWxYzX" + 54990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson "\u00a3\u00c5\u00c9"; // total of 30 characters 55990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson ByteArrayInputStream aa = 56990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson new ByteArrayInputStream(str.getBytes()); 57990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 58990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson InputStreamReader a = new InputStreamReader(aa); 59990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 60990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson try { 61f11138adb49be63f25188fc29a699cc5cd12df3dElliott Hughes assertEquals("UTF-8", a.getEncoding()); 62990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 63990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson int x = a.read(); 64990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals('A', x); 65990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 66990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson char[] c = new char[29]; 67990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson x = a.read(c, 0, 3); 68990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(3, x); 69990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("bCd", new String(c, 0, 3)); 70990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 71990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson x = a.read(c, 3, 26); 72990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(26, x); 73990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("EfGhIjKlMnOpQrStUvWxYzX\u00a3\u00c5\u00c9", new String(c, 3, 26)); 74990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } finally { 75990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson a.close(); 76990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 77990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 78990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 79990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson /** 80990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * Checks if several encodings works with InputStreamReader 81990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson */ 82990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testStringy() throws Exception { 83990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson String src = "The quick brown fox\u00A0\u00FF" + 84990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson "\uFFFC\uD7C5\uDC03bloof"; 85990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 86990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson String[] enc = new String[]{ 87990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson "utf-8", "us-ascii", "iso-8859-1", "utf-16be", "utf-16le", 88990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson "utf-16", 89990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson }; 90990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 91990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson for (int i = 0; i < enc.length; i++) { 92990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson byte[] ba = src.getBytes(enc[i]); 93990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 94990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson String s1 = new String(ba, enc[i]); 95990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 96990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson ByteArrayInputStream bais = new ByteArrayInputStream(ba); 97990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson InputStreamReader r = new InputStreamReader(bais, enc[i]); 98990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson try { 99990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson char[] ca = new char[600]; 100990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson int n = r.read(ca, 0, 600); 101990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 102990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson String s2 = new String(ca, 0, n); 103990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(s1, s2); 104990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } finally { 105990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson r.close(); 106990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 107990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 108990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 109990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson} 110