Author: kelly
Date: Wed Jul 14 22:52:10 2010
New Revision: 964239

URL: http://svn.apache.org/viewvc?rev=964239&view=rev
Log:
WIP OODT-15
Add test cases for the org.apache.oodt.commons.io classes.

Added:
    incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/
    
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/FixedBufferOutputStreamTest.java
    
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/NullInputStreamTest.java
    
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/NullOutputStreamTest.java

Added: 
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/FixedBufferOutputStreamTest.java
URL: 
http://svn.apache.org/viewvc/incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/FixedBufferOutputStreamTest.java?rev=964239&view=auto
==============================================================================
--- 
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/FixedBufferOutputStreamTest.java
 (added)
+++ 
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/FixedBufferOutputStreamTest.java
 Wed Jul 14 22:52:10 2010
@@ -0,0 +1,183 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more 
contributor
+// license agreements.  See the NOTICE.txt file distributed with this work for
+// additional information regarding copyright ownership.  The ASF licenses this
+// file to you under the Apache License, Version 2.0 (the "License"); you may 
not
+// use this file except in compliance with the License.  You may obtain a copy 
of
+// the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+// License for the specific language governing permissions and limitations 
under
+// the License.
+
+package org.apache.oodt.commons.io;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Arrays;
+import junit.framework.TestCase;
+
+/** Unit test for the {...@link FixedBufferOutputStream} class.
+ *
+ * @author Kelly
+ */
+public class FixedBufferOutputStreamTest extends TestCase {
+       /** Construct the test case for the {...@link FixedBufferOutputStream} 
class.
+        *
+        * @param name Case name.
+        */
+       public FixedBufferOutputStreamTest(String name) {
+               super(name);
+       }
+
+       /** Test the fixed buffer output stream's methods with various illegal 
arguments.
+        */
+       public void testIllegalArgs() throws IOException {
+               try {
+                       new FixedBufferOutputStream(-1);
+                       fail("Illegal size failed to throw exception");
+               } catch (IllegalArgumentException good) {}
+               FixedBufferOutputStream out = new FixedBufferOutputStream(100);
+               try {
+                       out.write(null);
+                       fail("Writing a null byte array failed to throw 
exception");
+               } catch (NullPointerException good) {}
+               try {
+                       out.write(null, 0, 10);
+                       fail("Writing a null byte array failed to throw 
exception");
+               } catch (NullPointerException good) {}
+               try {
+                       out.write(TEST_DATA, -1, 10);
+                       fail("Writing with negative offset failed to throw 
exception");
+               } catch (IndexOutOfBoundsException good) {}
+               try {
+                       out.write(TEST_DATA, TEST_DATA.length + 1, 10);
+                       fail("Writing with offset past end of array failed to 
throw exception");
+               } catch (IndexOutOfBoundsException good) {}
+               try {
+                       out.write(TEST_DATA, 0, -1);
+                       fail("Writing with negative length array failed to 
throw exception");
+               } catch (IndexOutOfBoundsException good) {}
+               try {
+                       out.write(TEST_DATA, 2, 5);
+                       fail("Writing with offset and length exceeding end of 
array failed to throw exception");
+               } catch (IndexOutOfBoundsException good) {}
+       }
+
+       /** Test a stream with space for no bytes at all.
+        */
+       public void testZeroSizeStream() throws IOException {
+               FixedBufferOutputStream out = new FixedBufferOutputStream(0);   
                    // Space for no byte at all
+               out.write(1);                                                   
                    // Write a 1 
+               out.write(2);                                                   
                    // ...and a 2
+               out.write(3);                                                   
                    // ...and a 3
+               out.write(TEST_DATA);                                           
                    // ...and a byte array
+               byte[] buffer = out.getBuffer();                                
                    // Get the buffer
+               assertNotNull(buffer);                                          
                    // It should never be null
+               assertEquals(0, buffer.length);                                 
                    // But it should be empty
+       }
+
+       /** Test a stream under various conditions.
+        */
+       public void testStream() throws IOException {
+               FixedBufferOutputStream out = new FixedBufferOutputStream(10);  
                    // Space for 10 bytes
+               byte[] buffer = out.getBuffer();                                
                    // Get the buffer
+               assertNotNull(buffer);                                          
                    // It should never be null
+               assertEquals(0, buffer.length);                                 
                    // Nothing written => 0 length
+               out.write(1);                                                   
                    // [1]
+               buffer = out.getBuffer();                                       
                    // Get the buffer
+               assertNotNull(buffer);                                          
                    // It should never be null
+               assertEquals(1, buffer.length);                                 
                    // Only 1 byte so far
+               assertEquals(1, buffer[0]);                                     
                    // And it should be a 1
+               out.write(2);                                                   
                    // [1,2]
+               buffer = out.getBuffer();                                       
                    // Get the buffer
+               assertNotNull(buffer);                                          
                    // It should never be null
+               assertEquals(2, buffer.length);                                 
                    // Two bytes so far
+               assertEquals(1, buffer[0]);                                     
                    // And it should be a 1...
+               assertEquals(2, buffer[1]);                                     
                    // ...and a 2
+               out.write(3);                                                   
                    // [1,2,3]
+               buffer = out.getBuffer();                                       
                    // Get the buffer
+               assertNotNull(buffer);                                          
                    // It should never be null
+               assertEquals(3, buffer.length);                                 
                    // 3 bytes so far
+               assertEquals(1, buffer[0]);                                     
                    // They are 1
+               assertEquals(2, buffer[1]);                                     
                    // ...and 2
+               assertEquals(3, buffer[2]);                                     
                    // ...and 3
+
+               out.write(TEST_DATA);                                           
                    // [1,2,3,8,9,10,11]
+               buffer = out.getBuffer();                                       
                    // Get the buffer
+               assertNotNull(buffer);                                          
                    // It should never be null
+               assertEquals(7, buffer.length);                                 
                    // 7 bytes so far, right?
+               assertEquals(1, buffer[0]);                                     
                    // They are 1
+               assertEquals(2, buffer[1]);                                     
                    // ...and 2
+               assertEquals(3, buffer[2]);                                     
                    // ...and 3
+               assertEquals(8, buffer[3]);                                     
                    // ...and 8
+               assertEquals(9, buffer[4]);                                     
                    // ...and 9
+               assertEquals(10, buffer[5]);                                    
                    // ...and 10
+               assertEquals(11, buffer[6]);                                    
                    // ...and 11
+
+               out.write(TEST_DATA);                                           
                    // [2,3,8,9,10,11,8,9,10,11]
+               out.write(TEST_DATA, 1, 2);                                     
                    // [8,9,10,11,8,9,10,11,9,10]
+               buffer = out.getBuffer();                                       
                    // Get the buffer
+               assertNotNull(buffer);                                          
                    // It should never be null
+               assertEquals(10, buffer.length);                                
                    // Full buffer
+               assertEquals(8, buffer[0]);                                     
                    // They are 8
+               assertEquals(9, buffer[1]);                                     
                    // ...and 9
+               assertEquals(10, buffer[2]);                                    
                    // ...and 10
+               assertEquals(11, buffer[3]);                                    
                    // ...and 11
+               assertEquals(8, buffer[4]);                                     
                    // ...and 8
+               assertEquals(9, buffer[5]);                                     
                    // ...and 9
+               assertEquals(10, buffer[6]);                                    
                    // ...and 10
+               assertEquals(11, buffer[7]);                                    
                    // ...and 11
+               assertEquals(9, buffer[8]);                                     
                    // ...and 9
+               assertEquals(10, buffer[9]);                                    
                    // ...and 10
+
+               out.write(TEST_DATA);                                           
                    // [8,9,10,11,9,10,8,9,10,11]
+               out.write(TEST_DATA, 0, 1);                                     
                    // [9,10,11,9,10,8,9,10,11,8]
+               out.write(42);                                                  
                    // [10,11,9,10,8,9,10,11,8,42]
+               out.write(99);                                                  
                    // [11,9,10,8,9,10,11,8,42,99]
+               out.write(TEST_DATA, 1, 3);                                     
                    // [8,9,10,11,8,42,99,9,10,11]
+               buffer = out.getBuffer();                                       
                    // Get the buffer
+               assertNotNull(buffer);                                          
                    // It should never be null
+               assertEquals(10, buffer.length);                                
                    // Full buffer
+               assertEquals(8, buffer[0]);                                     
                    // They are 8
+               assertEquals(9, buffer[1]);                                     
                    // ...and 9
+               assertEquals(10, buffer[2]);                                    
                    // ...and 10
+               assertEquals(11, buffer[3]);                                    
                    // ...and 11
+               assertEquals(8, buffer[4]);                                     
                    // ...and 8
+               assertEquals(42, buffer[5]);                                    
                    // ...and 42
+               assertEquals(99, buffer[6]);                                    
                    // ...and 99
+               assertEquals(9, buffer[7]);                                     
                    // ...and 9
+               assertEquals(10, buffer[8]);                                    
                    // ...and 10
+               assertEquals(11, buffer[9]);                                    
                    // ...and 11
+
+               byte[] array = new byte[buffer.length];                         
                    // New test data array that's
+               System.arraycopy(buffer, 0, array, 0, buffer.length);           
                    // the same as the current buf
+               out.write(array);                                               
                    // ...and write that
+               buffer = out.getBuffer();                                       
                    // Get the buffer
+               assertNotNull(buffer);                                          
                    // It should never be null
+               assertTrue(Arrays.equals(array, buffer));                       
                    // Should get same result
+
+               byte[] big = new byte[buffer.length * 3];                       
                    // More new test data array
+               System.arraycopy(buffer, 0, big, 0, buffer.length);             
                    // ...and add some data
+               System.arraycopy(buffer, 0, big, buffer.length, buffer.length); 
                    // ...and more data
+               System.arraycopy(buffer, 0, big, buffer.length * 2, 
buffer.length);                 // ...and LOTS of data
+               out.write(big, buffer.length, buffer.length * 2);               
                    // Write the last third of it
+               buffer = out.getBuffer();                                       
                    // Get the buffer
+               assertNotNull(buffer);                                          
                    // It should never be null
+               assertTrue(Arrays.equals(array, buffer));                       
                    // Should get same result!
+
+               out.close();                                                    
                    // Close it
+               try {                                                           
                    // ...and try...
+                       out.write(1);                                           
                    // ...to write to it
+                       fail("Writing to a closed stream failed to throw an 
exception");            // Shouldn't get here
+               } catch (IOException good) {}                                   
                    // Should get here
+       }
+
+       /** Some test data in an array. */
+       private static final byte[] TEST_DATA = new byte[] {
+               (byte) 8, (byte) 9, (byte) 10, (byte) 11
+       };
+}

Added: 
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/NullInputStreamTest.java
URL: 
http://svn.apache.org/viewvc/incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/NullInputStreamTest.java?rev=964239&view=auto
==============================================================================
--- 
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/NullInputStreamTest.java
 (added)
+++ 
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/NullInputStreamTest.java
 Wed Jul 14 22:52:10 2010
@@ -0,0 +1,67 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more 
contributor
+// license agreements.  See the NOTICE.txt file distributed with this work for
+// additional information regarding copyright ownership.  The ASF licenses this
+// file to you under the Apache License, Version 2.0 (the "License"); you may 
not
+// use this file except in compliance with the License.  You may obtain a copy 
of
+// the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+// License for the specific language governing permissions and limitations 
under
+// the License.
+
+package org.apache.oodt.commons.io;
+
+import java.io.IOException;
+import java.io.InputStream;
+import junit.framework.TestCase;
+
+/**
+ * Unit test the {...@link NullInputStream} class.
+ *
+ * @author Kelly
+ */ 
+public class NullInputStreamTest extends TestCase {
+        /**
+        * Creates a new <code>NullInputStreamTest</code> instance.
+        *
+        * @param name Test case name.
+        */
+       public NullInputStreamTest(String name) {
+                super(name);
+        }
+
+        protected void setUp() throws Exception {
+                in = new NullInputStream();
+        }
+
+        public void testClosing() {
+                try {
+                        in.close();
+                } catch (IOException ex) {
+                        fail("Should not throw an exception on close: " + 
ex.getMessage());
+                }
+                try {
+                        in.read();
+                        fail("Should not be able to read a closed stream");
+                } catch (IOException ignore) {}
+                try {
+                        in.close();
+                        fail("Should not be able to close a closed stream");
+                } catch (IOException ignore) {}
+        }
+
+        public void testReading() {
+                try {
+                        assertEquals(-1, in.read());
+                } catch (IOException ex) {
+                        fail("Should not throw an exception on reading: " + 
ex.getMessage());
+                }
+        }
+
+        /** The {...@link NullInputStream} we're testing. */
+        private NullInputStream in;
+}

Added: 
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/NullOutputStreamTest.java
URL: 
http://svn.apache.org/viewvc/incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/NullOutputStreamTest.java?rev=964239&view=auto
==============================================================================
--- 
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/NullOutputStreamTest.java
 (added)
+++ 
incubator/oodt/trunk/commons/src/test/org/apache/oodt/commons/io/NullOutputStreamTest.java
 Wed Jul 14 22:52:10 2010
@@ -0,0 +1,79 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more 
contributor
+// license agreements.  See the NOTICE.txt file distributed with this work for
+// additional information regarding copyright ownership.  The ASF licenses this
+// file to you under the Apache License, Version 2.0 (the "License"); you may 
not
+// use this file except in compliance with the License.  You may obtain a copy 
of
+// the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+// License for the specific language governing permissions and limitations 
under
+// the License.
+
+package org.apache.oodt.commons.io;
+
+import java.io.*;
+import java.util.*;
+import junit.framework.*;
+
+/** Unit test the {...@link NullOutputStream} class.
+ *
+ * @author Kelly
+ */ 
+public class NullOutputStreamTest extends TestCase {
+       /** Construct the test case for the {...@link NullOutputStream} class. 
*/
+       public NullOutputStreamTest(String name) {
+               super(name);
+       }
+
+       protected void setUp() throws Exception {
+               out = new NullOutputStream();
+       }
+
+       public void testClosing() {
+               try {
+                       out.close();
+               } catch (IOException ex) {
+                       fail("Should not throw an exception on close: " + 
ex.getMessage());
+               }
+               try {
+                       out.write(1);
+                       fail("Should not be able to write to a closed stream");
+               } catch (IOException ignore) {}
+               try {
+                       out.flush();
+                       fail("Should not be able to flush a closed stream");
+               } catch (IOException ignore) {}
+               try {
+                       out.close();
+                       fail("Should not be able to close a closed stream");
+               } catch (IOException ignore) {}
+       }
+
+       public void testFlush() {
+               try {
+                       out.flush();
+               } catch (IOException ex) {
+                       fail("Should not throw an exception on flush: " + 
ex.getMessage());
+               }
+       }
+
+       public void testWriting() {
+               try {
+                       byte[] array = new byte[]{(byte)0, (byte)1, (byte)2};
+                       out.write(1);
+                       out.write(array);
+                       out.write(array, 1, 1);
+               } catch (IOException ex) {
+                       fail("Should not throw an exception on writing: " + 
ex.getMessage());
+               }
+       }
+
+       /** The {...@link NullOutputStream} we're testing. */
+       private NullOutputStream out;
+
+}
+


Reply via email to