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