1/* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18package org.apache.harmony.tests.java.io; 19 20import java.io.BufferedReader; 21import java.io.BufferedWriter; 22import java.io.File; 23import java.io.FileInputStream; 24import java.io.FileOutputStream; 25import java.io.FileReader; 26import java.io.FileWriter; 27import java.io.IOException; 28 29import junit.framework.TestCase; 30 31public class FileWriterTest extends TestCase { 32 private FileInputStream fis; 33 private BufferedWriter bw; 34 private File f; 35 private FileOutputStream fos; 36 private BufferedReader br; 37 38 /** 39 * java.io.FileWriter#FileWriter(java.io.File) 40 */ 41 public void test_ConstructorLjava_io_File() throws IOException { 42 fos = new FileOutputStream(f.getPath()); 43 fos.write("Test String".getBytes()); 44 fos.close(); 45 bw = new BufferedWriter(new FileWriter(f)); 46 bw.write(" After test string", 0, 18); 47 bw.close(); 48 br = new BufferedReader(new FileReader(f.getPath())); 49 char[] buf = new char[100]; 50 int r = br.read(buf); 51 br.close(); 52 assertEquals("Failed to write correct chars", " After test string", 53 new String(buf, 0, r)); 54 } 55 56 /** 57 * java.io.FileWriter#FileWriter(java.io.File, boolean) 58 */ 59 public void test_ConstructorLjava_io_FileZ() throws IOException { 60 FileWriter fileWriter = new FileWriter(f); 61 62 String first = "The first string for testing. "; 63 fileWriter.write(first); 64 fileWriter.close(); 65 66 fileWriter = new FileWriter(f, true); 67 String second = "The second String for testing."; 68 fileWriter.write(second); 69 fileWriter.close(); 70 71 FileReader fileReader = new FileReader(f); 72 char[] out = new char[first.length() + second.length() + 10]; 73 int length = fileReader.read(out); 74 fileReader.close(); 75 assertEquals(first + second, new String(out, 0, length)); 76 77 fileWriter = new FileWriter(f); 78 first = "The first string for testing. "; 79 fileWriter.write(first); 80 fileWriter.close(); 81 82 fileWriter = new FileWriter(f, false); 83 second = "The second String for testing."; 84 fileWriter.write(second); 85 fileWriter.close(); 86 87 fileReader = new FileReader(f); 88 out = new char[first.length() + second.length() + 10]; 89 length = fileReader.read(out); 90 fileReader.close(); 91 assertEquals(second, new String(out, 0, length)); 92 } 93 94 /** 95 * java.io.FileWriter#FileWriter(java.io.FileDescriptor) 96 */ 97 public void test_ConstructorLjava_io_FileDescriptor() throws IOException { 98 fos = new FileOutputStream(f.getPath()); 99 fos.write("Test String".getBytes()); 100 fos.close(); 101 fis = new FileInputStream(f.getPath()); 102 br = new BufferedReader(new FileReader(fis.getFD())); 103 char[] buf = new char[100]; 104 int r = br.read(buf); 105 br.close(); 106 fis.close(); 107 assertTrue("Failed to write correct chars: " + new String(buf, 0, r), 108 new String(buf, 0, r).equals("Test String")); 109 } 110 111 /** 112 * java.io.FileWriter#FileWriter(java.lang.String) 113 */ 114 public void test_ConstructorLjava_lang_String() throws IOException { 115 fos = new FileOutputStream(f.getPath()); 116 fos.write("Test String".getBytes()); 117 fos.close(); 118 bw = new BufferedWriter(new FileWriter(f.getPath())); 119 bw.write(" After test string", 0, 18); 120 bw.close(); 121 br = new BufferedReader(new FileReader(f.getPath())); 122 char[] buf = new char[100]; 123 int r = br.read(buf); 124 br.close(); 125 assertEquals("Failed to write correct chars", " After test string", 126 new String(buf, 0, r)); 127 } 128 129 /** 130 * java.io.FileWriter#FileWriter(java.lang.String, boolean) 131 */ 132 public void test_ConstructorLjava_lang_StringZ() throws IOException { 133 fos = new FileOutputStream(f.getPath()); 134 fos.write("Test String".getBytes()); 135 fos.close(); 136 bw = new BufferedWriter(new FileWriter(f.getPath(), true)); 137 bw.write(" After test string", 0, 18); 138 bw.close(); 139 br = new BufferedReader(new FileReader(f.getPath())); 140 char[] buf = new char[100]; 141 int r = br.read(buf); 142 br.close(); 143 assertEquals("Failed to append to file", 144 "Test String After test string", new String(buf, 0, r)); 145 146 fos = new FileOutputStream(f.getPath()); 147 fos.write("Test String".getBytes()); 148 fos.close(); 149 bw = new BufferedWriter(new FileWriter(f.getPath(), false)); 150 bw.write(" After test string", 0, 18); 151 bw.close(); 152 br = new BufferedReader(new FileReader(f.getPath())); 153 buf = new char[100]; 154 r = br.read(buf); 155 br.close(); 156 assertEquals("Failed to overwrite file", " After test string", 157 new String(buf, 0, r)); 158 } 159 160 /** 161 * Sets up the fixture, for example, open a network connection. This method 162 * is called before a test is executed. 163 */ 164 @Override 165 protected void setUp() throws Exception { 166 f = File.createTempFile("FileWriterTest", "tst"); 167 } 168 169 /** 170 * Tears down the fixture, for example, close a network connection. This 171 * method is called after a test is executed. 172 */ 173 @Override 174 protected void tearDown() { 175 try { 176 bw.close(); 177 } catch (Exception e) { 178 } 179 try { 180 fis.close(); 181 } catch (Exception e) { 182 } 183 f.delete(); 184 } 185} 186