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