FilterOutputStreamTest.java revision 89c1feb0a69a7707b271086e749975b3f7acacf7
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 tests.api.java.io;
19
20import dalvik.annotation.TestInfo;
21import dalvik.annotation.TestLevel;
22import dalvik.annotation.TestTarget;
23import dalvik.annotation.TestTargetClass;
24
25@TestTargetClass(java.io.FilterOutputStream.class)
26public class FilterOutputStreamTest extends junit.framework.TestCase {
27
28    private java.io.OutputStream os;
29
30    java.io.ByteArrayOutputStream bos;
31
32    java.io.ByteArrayInputStream bis;
33
34    byte[] ibuf = new byte[4096];
35
36    public String fileString = "Test_All_Tests\nTest_java_io_BufferedInputStream\nTest_java_io_BufferedOutputStream\nTest_java_io_ByteArrayInputStream\nTest_java_io_ByteArrayOutputStream\nTest_java_io_DataInputStream\nTest_java_io_File\nTest_java_io_FileDescriptor\nTest_java_io_FileInputStream\nTest_java_io_FileNotFoundException\nTest_java_io_FileOutputStream\nTest_java_io_FilterInputStream\nTest_FilterOutputStream\nTest_java_io_InputStream\nTest_java_io_IOException\nTest_java_io_OutputStream\nTest_java_io_PrintStream\nTest_java_io_RandomAccessFile\nTest_java_io_SyncFailedException\nTest_java_lang_AbstractMethodError\nTest_java_lang_ArithmeticException\nTest_java_lang_ArrayIndexOutOfBoundsException\nTest_java_lang_ArrayStoreException\nTest_java_lang_Boolean\nTest_java_lang_Byte\nTest_java_lang_Character\nTest_java_lang_Class\nTest_java_lang_ClassCastException\nTest_java_lang_ClassCircularityError\nTest_java_lang_ClassFormatError\nTest_java_lang_ClassLoader\nTest_java_lang_ClassNotFoundException\nTest_java_lang_CloneNotSupportedException\nTest_java_lang_Double\nTest_java_lang_Error\nTest_java_lang_Exception\nTest_java_lang_ExceptionInInitializerError\nTest_java_lang_Float\nTest_java_lang_IllegalAccessError\nTest_java_lang_IllegalAccessException\nTest_java_lang_IllegalArgumentException\nTest_java_lang_IllegalMonitorStateException\nTest_java_lang_IllegalThreadStateException\nTest_java_lang_IncompatibleClassChangeError\nTest_java_lang_IndexOutOfBoundsException\nTest_java_lang_InstantiationError\nTest_java_lang_InstantiationException\nTest_java_lang_Integer\nTest_java_lang_InternalError\nTest_java_lang_InterruptedException\nTest_java_lang_LinkageError\nTest_java_lang_Long\nTest_java_lang_Math\nTest_java_lang_NegativeArraySizeException\nTest_java_lang_NoClassDefFoundError\nTest_java_lang_NoSuchFieldError\nTest_java_lang_NoSuchMethodError\nTest_java_lang_NullPointerException\nTest_java_lang_Number\nTest_java_lang_NumberFormatException\nTest_java_lang_Object\nTest_java_lang_OutOfMemoryError\nTest_java_lang_RuntimeException\nTest_java_lang_SecurityManager\nTest_java_lang_Short\nTest_java_lang_StackOverflowError\nTest_java_lang_String\nTest_java_lang_StringBuffer\nTest_java_lang_StringIndexOutOfBoundsException\nTest_java_lang_System\nTest_java_lang_Thread\nTest_java_lang_ThreadDeath\nTest_java_lang_ThreadGroup\nTest_java_lang_Throwable\nTest_java_lang_UnknownError\nTest_java_lang_UnsatisfiedLinkError\nTest_java_lang_VerifyError\nTest_java_lang_VirtualMachineError\nTest_java_lang_vm_Image\nTest_java_lang_vm_MemorySegment\nTest_java_lang_vm_ROMStoreException\nTest_java_lang_vm_VM\nTest_java_lang_Void\nTest_java_net_BindException\nTest_java_net_ConnectException\nTest_java_net_DatagramPacket\nTest_java_net_DatagramSocket\nTest_java_net_DatagramSocketImpl\nTest_java_net_InetAddress\nTest_java_net_NoRouteToHostException\nTest_java_net_PlainDatagramSocketImpl\nTest_java_net_PlainSocketImpl\nTest_java_net_Socket\nTest_java_net_SocketException\nTest_java_net_SocketImpl\nTest_java_net_SocketInputStream\nTest_java_net_SocketOutputStream\nTest_java_net_UnknownHostException\nTest_java_util_ArrayEnumerator\nTest_java_util_Date\nTest_java_util_EventObject\nTest_java_util_HashEnumerator\nTest_java_util_Hashtable\nTest_java_util_Properties\nTest_java_util_ResourceBundle\nTest_java_util_tm\nTest_java_util_Vector\n";
37
38    /**
39     * @tests java.io.FilterOutputStream#FilterOutputStream(java.io.OutputStream)
40     */
41    @TestInfo(
42            level = TestLevel.COMPLETE,
43            purpose = "Verifies FilterOutputStream(java.io.OutputStream) constructor.",
44            targets = { @TestTarget(methodName = "FilterOutputStream",
45                                    methodArgs = {java.io.OutputStream.class})
46            }
47        )
48    public void test_ConstructorLjava_io_OutputStream() {
49        // Test for method java.io.FilterOutputStream(java.io.OutputStream)
50        try {
51            bos = new java.io.ByteArrayOutputStream();
52            os = new java.io.FilterOutputStream(bos);
53            os.write('t');
54        } catch (java.io.IOException e) {
55            fail("Constructor test failed : " + e.getMessage());
56        }
57    }
58
59    /**
60     * @tests java.io.FilterOutputStream#close()
61     */
62    @TestInfo(
63            level = TestLevel.PARTIAL,
64            purpose = "IOException checking missed.",
65            targets = { @TestTarget(methodName = "close",
66                                    methodArgs = {})
67            }
68        )
69    public void test_close() {
70        // Test for method void java.io.FilterOutputStream.close()
71        try {
72            bos = new java.io.ByteArrayOutputStream();
73            os = new java.io.FilterOutputStream(bos);
74            os.write(fileString.getBytes(), 0, 500);
75            os.flush();
76            assertEquals("Bytes not written after flush", 500, bos.size());
77            os.close();
78        } catch (java.io.IOException e) {
79            fail("Close test failed : " + e.getMessage());
80        }
81    }
82
83    /**
84     * @tests java.io.FilterOutputStream#flush()
85     */
86    @TestInfo(
87            level = TestLevel.PARTIAL,
88            purpose = "IOException checking missed.",
89            targets = { @TestTarget(methodName = "flush",
90                                    methodArgs = {})
91            }
92        )
93    public void test_flush() {
94        // Test for method void java.io.FilterOutputStream.flush()
95        try {
96            bos = new java.io.ByteArrayOutputStream();
97            os = new java.io.FilterOutputStream(bos);
98            os.write(fileString.getBytes(), 0, 500);
99            os.flush();
100            assertEquals("Bytes not written after flush", 500, bos.size());
101            os.close();
102        } catch (java.io.IOException e) {
103            fail("Flush test failed : " + e.getMessage());
104        }
105    }
106
107    /**
108     * @tests java.io.FilterOutputStream#write(byte[])
109     */
110    @TestInfo(
111            level = TestLevel.PARTIAL,
112            purpose = "IOException checking missed.",
113            targets = { @TestTarget(methodName = "write",
114                                    methodArgs = {byte[].class})
115            }
116        )
117
118    public void test_write$B() {
119        // Test for method void java.io.FilterOutputStream.write(byte [])
120        try {
121            bos = new java.io.ByteArrayOutputStream();
122            os = new java.io.FilterOutputStream(bos);
123            os.write(fileString.getBytes());
124            bis = new java.io.ByteArrayInputStream(bos.toByteArray());
125            os.flush();
126            assertTrue("Bytes not written after flush",
127                    bis.available() == fileString.length());
128            byte[] wbytes = new byte[fileString.length()];
129            bis.read(wbytes, 0, fileString.length());
130            assertTrue("Incorrect bytes written", fileString.equals(new String(
131                    wbytes, 0, wbytes.length)));
132        } catch (java.io.IOException e) {
133            fail("Write test failed : " + e.getMessage());
134        }
135    }
136
137    /**
138     * @tests java.io.FilterOutputStream#write(byte[], int, int)
139     */
140    @TestInfo(
141            level = TestLevel.PARTIAL,
142            purpose = "IOException checking missed.",
143            targets = { @TestTarget(methodName = "write",
144                                    methodArgs = {byte[].class, int.class, int.class})
145            }
146        )
147    public void test_write$BII() {
148        // Test for method void java.io.FilterOutputStream.write(byte [], int,
149        // int)
150        try {
151            bos = new java.io.ByteArrayOutputStream();
152            os = new java.io.FilterOutputStream(bos);
153            os.write(fileString.getBytes(), 0, fileString.length());
154            bis = new java.io.ByteArrayInputStream(bos.toByteArray());
155            os.flush();
156            assertTrue("Bytes not written after flush",
157                    bis.available() == fileString.length());
158            byte[] wbytes = new byte[fileString.length()];
159            bis.read(wbytes, 0, fileString.length());
160            assertTrue("Incorrect bytes written", fileString.equals(new String(
161                    wbytes, 0, wbytes.length)));
162        } catch (java.io.IOException e) {
163            fail("Write test failed : " + e.getMessage());
164        }
165    }
166
167    /**
168     * @tests java.io.FilterOutputStream#write(int)
169     */
170    @TestInfo(
171            level = TestLevel.PARTIAL,
172            purpose = "IOException checking missed.",
173            targets = { @TestTarget(methodName = "write",
174                                    methodArgs = {int.class})
175            }
176        )
177    public void test_writeI() {
178        // Test for method void java.io.FilterOutputStream.write(int)
179        try {
180            bos = new java.io.ByteArrayOutputStream();
181            os = new java.io.FilterOutputStream(bos);
182            os.write('t');
183            bis = new java.io.ByteArrayInputStream(bos.toByteArray());
184            os.flush();
185            assertEquals("Byte not written after flush", 1, bis.available());
186            byte[] wbytes = new byte[1];
187            bis.read(wbytes, 0, 1);
188            assertEquals("Incorrect byte written", 't', wbytes[0]);
189        } catch (java.io.IOException e) {
190            fail("Write test failed : " + e.getMessage());
191        }
192    }
193
194    /**
195     * Sets up the fixture, for example, open a network connection. This method
196     * is called before a test is executed.
197     */
198    protected void setUp() {
199    }
200
201    /**
202     * Tears down the fixture, for example, close a network connection. This
203     * method is called after a test is executed.
204     */
205    protected void tearDown() {
206        try {
207            if (bos != null)
208                bos.close();
209            if (bis != null)
210                bis.close();
211            if (os != null)
212                os.close();
213        } catch (Exception e) {
214        }
215    }
216}
217