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.ByteArrayInputStream; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileInputStream; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileReader; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileWriter; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStreamReader; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.OutputStreamWriter; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.UnsupportedEncodingException; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.charset.Charset; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.charset.CharsetEncoder; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class OutputStreamWriterTest extends TestCase { 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int UPPER = 0xd800; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int BUFFER_SIZE = 10000; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private ByteArrayOutputStream out; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private OutputStreamWriter writer; 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static private final String source = "This is a test message with Unicode character. \u4e2d\u56fd is China's name in Chinese"; 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static private final String[] MINIMAL_CHARSETS = new String[] { "US-ASCII", 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ISO-8859-1", "UTF-16BE", "UTF-16LE", "UTF-16", "UTF-8" }; 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OutputStreamWriter osw; 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStreamReader isr; 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private ByteArrayOutputStream fos; 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String testString = "Test_All_Tests\nTest_java_io_BufferedInputStream\nTest_java_io_BufferedOutputStream\nTest_java_io_ByteArrayInputStream\nTest_java_io_ByteArrayOutputStream\nTest_java_io_DataInputStream\n"; 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see TestCase#setUp() 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.setUp(); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes out = new ByteArrayOutputStream(); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(out, "utf-8"); 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fos = new ByteArrayOutputStream(); 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw = new OutputStreamWriter(fos); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see TestCase#tearDown() 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() throws Exception { 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.close(); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (isr != null) { 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes isr.close(); 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw.close(); 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Ignored 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.tearDown(); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testClose() throws Exception { 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.close(); 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testFlush() throws Exception { 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(source); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = out.toString("utf-8"); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(source, result); 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for void write(char[], int, int) 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWritecharArrayintint() throws IOException { 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] chars = source.toCharArray(); 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Throws IndexOutOfBoundsException if offset is negative 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write((char[]) null, -1, -1); 1172a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes fail(); 1182a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (NullPointerException exception) { 1192a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (IndexOutOfBoundsException exception) { 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // throws NullPointerException though count is negative 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write((char[]) null, 1, -1); 1252a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes fail(); 1262a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (NullPointerException exception) { 1272a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (IndexOutOfBoundsException exception) { 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write((char[]) null, 1, 1); 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(new char[0], 0, 1); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(chars, -1, 1); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(chars, 0, -1); 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(chars, 1, chars.length); 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(chars, 1, 2); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("hi", out.toString("utf-8")); 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(chars, 0, chars.length); 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("hi" + source, out.toString("utf-8")); 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.close(); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // After the stream is closed, should throw IOException first 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write((char[]) null, -1, -1); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IOException"); 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for void write(int) 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWriteint() throws IOException { 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(1); 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String str = new String(out.toByteArray(), "utf-8"); 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("\u0001", str); 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(2); 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes str = new String(out.toByteArray(), "utf-8"); 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("\u0001\u0002", str); 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(-1); 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes str = new String(out.toByteArray(), "utf-8"); 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("\u0001\u0002\uffff", str); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(0xfedcb); 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes str = new String(out.toByteArray(), "utf-8"); 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("\u0001\u0002\uffff\uedcb", str); 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.close(); 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // After the stream is closed, should throw IOException 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(1); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IOException"); 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for void write(String, int, int) 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWriteStringintint() throws IOException { 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write((String) null, 1, 1); 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write("", 0, 1); 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (StringIndexOutOfBoundsException e) { 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write("abc", -1, 1); 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (StringIndexOutOfBoundsException e) { 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write("abc", 0, -1); 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write("abc", 1, 3); 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (StringIndexOutOfBoundsException e) { 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write((String) null, -1, -1); 2482a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes fail(); 2492a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (NullPointerException expected) { 2502a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (IndexOutOfBoundsException expected) { 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Throws NullPointerException before StringIndexOutOfBoundsException 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write((String) null, -1, 0); 2562a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes fail(); 2572a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (NullPointerException expected) { 2582a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (IndexOutOfBoundsException expected) { 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write("abc", 1, 2); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("bc", out.toString("utf-8")); 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(source, 0, source.length()); 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("bc" + source, out.toString("utf-8")); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.close(); 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Throws IndexOutOfBoundsException first if count is negative 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write((String) null, 0, -1); 2722a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes fail(); 2732a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (NullPointerException expected) { 2742a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (IndexOutOfBoundsException expected) { 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write((String) null, -1, 0); 2792a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes fail(); 2802a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (NullPointerException expected) { 2812a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (IndexOutOfBoundsException expected) { 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write("abc", -1, 0); 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw StringIndexOutOfBoundsException"); 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (StringIndexOutOfBoundsException e) { 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Throws IOException 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write("abc", 0, 1); 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IOException"); 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for void OutputStreamWriter(OutputStream) 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testOutputStreamWriterOutputStream() throws IOException { 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(null); 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OutputStreamWriter writer2 = new OutputStreamWriter(out); 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer2.close(); 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for void OutputStreamWriter(OutputStream, String) 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testOutputStreamWriterOutputStreamString() throws IOException { 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(null, "utf-8"); 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(out, ""); 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedEncodingException e) { 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(out, "badname"); 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedEncodingException e) { 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(out, (String) null); 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OutputStreamWriter writer2 = new OutputStreamWriter(out, "ascii"); 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Charset.forName("ascii"), Charset.forName(writer2 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getEncoding())); 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer2.close(); 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for void OutputStreamWriter(OutputStream) 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testOutputStreamWriterOutputStreamCharset() throws IOException { 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Charset cs = Charset.forName("ascii"); 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(null, cs); 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(out, (Charset) null); 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OutputStreamWriter writer2 = new OutputStreamWriter(out, cs); 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(cs, Charset.forName(writer2.getEncoding())); 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer2.close(); 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for void OutputStreamWriter(OutputStream, String) 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testOutputStreamWriterOutputStreamCharsetEncoder() 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws IOException { 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Charset cs = Charset.forName("ascii"); 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes CharsetEncoder enc = cs.newEncoder(); 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(null, enc); 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(out, (CharsetEncoder) null); 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OutputStreamWriter writer2 = new OutputStreamWriter(out, enc); 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(cs, Charset.forName(writer2.getEncoding())); 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer2.close(); 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetEncoding() { 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Charset cs = Charset.forName("utf-8"); 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(cs, Charset.forName(writer.getEncoding())); 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testHandleEarlyEOFChar_1() throws IOException { 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String str = "All work and no play makes Jack a dull boy\n"; //$NON-NLS-1$ 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int NUMBER = 2048; 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int j = 0; 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int len = str.length() * NUMBER; 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] strChars = new char[len]; 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < NUMBER; ++i) { 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int k = 0; k < str.length(); ++k) { 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes strChars[j++] = str.charAt(k); 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File f = File.createTempFile("one", "by_one"); 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes f.deleteOnExit(); 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileWriter fw = new FileWriter(f); 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fw.write(strChars); 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fw.close(); 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileInputStream fis = new FileInputStream(f); 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStreamReader in = new InputStreamReader(fis); 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int offset = 0; offset < strChars.length; ++offset) { 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int b = in.read(); 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Early EOF at offset", -1 == b); 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testHandleEarlyEOFChar_2() throws IOException { 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int capacity = 65536; 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] bytes = new byte[capacity]; 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] bs = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' }; 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < bytes.length; i++) { 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bytes[i] = bs[i / 8192]; 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String inputStr = new String(bytes); 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int len = inputStr.length(); 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File f = File.createTempFile("FileWriterBugTest ", null); //$NON-NLS-1$ 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes f.deleteOnExit(); 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileWriter writer = new FileWriter(f); 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(inputStr); 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.close(); 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long flen = f.length(); 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileReader reader = new FileReader(f); 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] outChars = new char[capacity]; 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int outCount = reader.read(outChars); 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String outStr = new String(outChars, 0, outCount); 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(len, flen); 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(inputStr, outStr); 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSingleCharIO() throws Exception { 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStreamReader isr = null; 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < MINIMAL_CHARSETS.length; ++i) { 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes out = new ByteArrayOutputStream(); 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(out, MINIMAL_CHARSETS[i]); 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int upper = UPPER; 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes switch (i) { 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 0: 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes upper = 128; 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 1: 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes upper = 256; 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int c = 0; c < upper; ++c) { 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(c); 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] result = out.toByteArray(); 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes isr = new InputStreamReader(new ByteArrayInputStream(result), 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MINIMAL_CHARSETS[i]); 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int expected = 0; expected < upper; ++expected) { 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Error when reading bytes in " 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + MINIMAL_CHARSETS[i], expected, isr.read()); 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes isr.close(); 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.close(); 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testBlockIO() throws Exception { 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStreamReader isr = null; 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] largeBuffer = new char[BUFFER_SIZE]; 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < MINIMAL_CHARSETS.length; ++i) { 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes out = new ByteArrayOutputStream(); 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(out, MINIMAL_CHARSETS[i]); 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int upper = UPPER; 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes switch (i) { 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 0: 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes upper = 128; 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 1: 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes upper = 256; 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int m = 0; 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int c = 0; c < upper; ++c) { 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes largeBuffer[m++] = (char) c; 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (m == BUFFER_SIZE) { 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(largeBuffer); 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes m = 0; 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(largeBuffer, 0, m); 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] result = out.toByteArray(); 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes isr = new InputStreamReader(new ByteArrayInputStream(result), 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MINIMAL_CHARSETS[i]); 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int expected = 0, read = 0, j = 0; 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (expected < upper) { 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (j == read) { 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes read = isr.read(largeBuffer); 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes j = 0; 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Error when reading bytes in " 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + MINIMAL_CHARSETS[i], expected++, largeBuffer[j++]); 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes isr.close(); 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.close(); 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.OutputStreamWriter#OutputStreamWriter(java.io.OutputStream) 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_io_OutputStream() { 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Used in tests", true); 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.OutputStreamWriter#OutputStreamWriter(java.io.OutputStream, 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.lang.String) 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_io_OutputStreamLjava_lang_String() 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws UnsupportedEncodingException { 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw = new OutputStreamWriter(fos, "8859_1"); 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw = new OutputStreamWriter(fos, "Bogus"); 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Failed to throw Unsupported Encoding exception"); 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedEncodingException e) { 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.OutputStreamWriter#close() 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_close() throws IOException { 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw.close(); 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw.write(testString, 0, testString.length()); 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Chars written after close"); 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayOutputStream bout = new ByteArrayOutputStream(); 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OutputStreamWriter writer = new OutputStreamWriter(bout, 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ISO2022JP"); 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(new char[] { 'a' }); 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.close(); 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the default is ASCII, there should not be any mode changes 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String converted = new String(bout.toByteArray(), "ISO8859_1"); 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("invalid conversion 1: " + converted, converted 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals("a")); 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bout.reset(); 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(bout, "ISO2022JP"); 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(new char[] { '\u3048' }); 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.flush(); 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the byte sequence should not switch to ASCII mode until the 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // stream is closed 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes converted = new String(bout.toByteArray(), "ISO8859_1"); 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("invalid conversion 2: " + converted, converted 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals("\u001b$B$(")); 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.close(); 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes converted = new String(bout.toByteArray(), "ISO8859_1"); 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("invalid conversion 3: " + converted, converted 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals("\u001b$B$(\u001b(B")); 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bout.reset(); 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer = new OutputStreamWriter(bout, "ISO2022JP"); 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(new char[] { '\u3048' }); 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.write(new char[] { '\u3048' }); 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes writer.close(); 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // there should not be a mode switch between writes 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("invalid conversion 4", "\u001b$B$($(\u001b(B", 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new String(bout.toByteArray(), "ISO8859_1")); 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedEncodingException e) { 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Can't test missing converter 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println(e); 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.OutputStreamWriter#flush() 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_flush() throws IOException { 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] buf = new char[testString.length()]; 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw.write(testString, 0, testString.length()); 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw.flush(); 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes openInputStream(); 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes isr.read(buf, 0, buf.length); 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Chars not flushed", new String(buf, 0, buf.length) 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(testString)); 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.OutputStreamWriter#getEncoding() 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getEncoding() throws IOException { 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw = new OutputStreamWriter(fos, "8859_1"); 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedEncodingException e) { 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect encoding", "8859_1", osw 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getEncoding()); 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OutputStreamWriter out = new OutputStreamWriter( 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ByteArrayOutputStream(), "UTF-16BE"); 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes out.close(); 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = out.getEncoding(); 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(result); 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes out = null; 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes out = new OutputStreamWriter(new ByteArrayOutputStream(), 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "UTF-16BE"); 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedEncodingException e) { 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ok 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = out.getEncoding(); 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("UnicodeBigUnmarked", result); 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.OutputStreamWriter#write(char[], int, int) 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_write$CII() throws IOException { 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] buf = new char[testString.length()]; 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw.write(testString, 0, testString.length()); 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw.close(); 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes openInputStream(); 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes isr.read(buf, 0, buf.length); 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect chars returned", new String(buf, 0, buf.length) 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(testString)); 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.OutputStreamWriter#write(int) 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_writeI() throws IOException { 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw.write('T'); 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw.close(); 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes openInputStream(); 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int c = isr.read(); 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect char returned", 'T', (char) c); 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.OutputStreamWriter#write(java.lang.String, int, int) 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_writeLjava_lang_StringII() throws IOException { 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] buf = new char[testString.length()]; 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw.write(testString, 0, testString.length()); 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osw.close(); 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes openInputStream(); 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes isr.read(buf); 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect chars returned", new String(buf, 0, buf.length) 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(testString)); 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void openInputStream() { 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes isr = new InputStreamReader(new ByteArrayInputStream(fos.toByteArray())); 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 702