Author: stephenc Date: Wed Jun 1 08:03:41 2011 New Revision: 1130040 URL: http://svn.apache.org/viewvc?rev=1130040&view=rev Log: IOUtil.copy(Reader,Writer,int) - done
Modified: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/IOUtil.java maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/IOUtilTest.java Modified: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/IOUtil.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/IOUtil.java?rev=1130040&r1=1130039&r2=1130040&view=diff ============================================================================== --- maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/IOUtil.java (original) +++ maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/IOUtil.java Wed Jun 1 08:03:41 2011 @@ -68,7 +68,14 @@ public final class IOUtil public static void copy( java.io.Reader input, java.io.Writer output, int bufferSize ) throws java.io.IOException { - throw new UnsupportedOperationException( "Not implemented yet" ); + if ( bufferSize < 0 ) + { + throw new NegativeArraySizeException(); + } + input.getClass(); + output.getClass(); + fakeBufferSizeHandler( bufferSize ); + IOUtils.copy( input, output ); } public static void copy( java.io.InputStream input, java.io.Writer output ) Modified: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/IOUtilTest.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/IOUtilTest.java?rev=1130040&r1=1130039&r2=1130040&view=diff ============================================================================== --- maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/IOUtilTest.java (original) +++ maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/IOUtilTest.java Wed Jun 1 08:03:41 2011 @@ -2432,6 +2432,196 @@ public class IOUtilTest assertThat( writer.toString(), is( probe ) ); } + /* + * copy(Reader,Writer,int) + */ + + @Test( expected = NegativeArraySizeException.class ) + public void copyNullReaderNullWriterNegBufSz() + throws Exception + { + IOUtil.copy( nullReader(), nullWriter(), -1 ); + } + + @Test( expected = NegativeArraySizeException.class ) + public void copyEmptyReaderNullWriterNegBufSz() + throws Exception + { + IOUtil.copy( emptyReader(), nullWriter(), -1 ); + } + + @Test( expected = NegativeArraySizeException.class ) + public void copyNullReaderValidWriterNegBufSz() + throws Exception + { + IOUtil.copy( nullReader(), new DontCloseStringWriter(), -1 ); + } + + @Test( expected = NegativeArraySizeException.class ) + public void copyEmptyReaderValidWriterNegBufSz() + throws Exception + { + StringWriter writer = new DontCloseStringWriter(); + IOUtil.copy( emptyReader(), writer, -1 ); + assertThat( writer.toString(), is( emptyString() ) ); + } + + @Test( expected = NegativeArraySizeException.class ) + public void copyReaderNullWriterNegBufSz() + throws Exception + { + String probe = "A string \u2345\u00ef"; + IOUtil.copy( new StringReader( probe ), nullWriter(), -1 ); + } + + @Test(expected = NegativeArraySizeException.class ) + public void copyReaderValidWriterNegBufSz() + throws Exception + { + String probe = "A string \u2345\u00ef"; + StringWriter writer = new DontCloseStringWriter(); + IOUtil.copy( new StringReader( probe ), writer, -1 ); + assertThat( writer.toString(), is( probe ) ); + } + + @Test( expected = NullPointerException.class, timeout = 150) + public void copyNullReaderNullWriterZeroBufSz() + throws Exception + { + IOUtil.copy( nullReader(), nullWriter(), 0 ); + } + + @Test( expected = NullPointerException.class, timeout = 150 ) + public void copyEmptyReaderNullWriterZeroBufSz() + throws Exception + { + IOUtil.copy( emptyReader(), nullWriter(), 0 ); + } + + @Test( expected = NullPointerException.class, timeout = 150 ) + public void copyNullReaderValidWriterZeroBufSz() + throws Exception + { + IOUtil.copy( nullReader(), new DontCloseStringWriter(), 0 ); + } + + @Test(timeout = 150) // TODO + public void copyEmptyReaderValidWriterZeroBufSz() + throws Exception + { + final AtomicBoolean finished = new AtomicBoolean( false ); + Thread worker = new Thread() + { + @Override + public void run() + { + try + { + StringWriter writer = new DontCloseStringWriter(); + IOUtil.copy( emptyReader(), writer, 0 ); + } + catch ( IOException e ) + { + // ignore + } + finished.set( true ); + } + }; + worker.start(); + worker.join( 100 ); + worker.interrupt(); + assertThat( "We have an infinite loop", finished.get(), is( false ) ); + } + + @Test( expected = NullPointerException.class, timeout = 150 ) + public void copyReaderNullWriterZeroBufSz() + throws Exception + { + String probe = "A string \u2345\u00ef"; + IOUtil.copy( new StringReader( probe ), nullWriter(), 0 ); + } + + @Test(timeout = 150) // TODO + public void copyReaderValidWriterZeroBufSz() + throws Exception + { + final AtomicBoolean finished = new AtomicBoolean( false ); + Thread worker = new Thread() + { + @Override + public void run() + { + try + { + String probe = "A string \u2345\u00ef"; + StringWriter writer = new DontCloseStringWriter(); + IOUtil.copy( new StringReader( probe ), writer, 0 ); + } + catch ( IOException e ) + { + // ignore + } + finished.set( true ); + } + }; + worker.start(); + worker.join( 100 ); + worker.interrupt(); + assertThat( "We have an infinite loop", finished.get(), is( false ) ); + } + + @Test( expected = NullPointerException.class ) + public void copyNullReaderNullWriterPosBufSz() + throws Exception + { + IOUtil.copy( nullReader(), nullWriter(), 1 ); + } + + @Test( expected = NullPointerException.class ) + public void copyEmptyReaderNullWriterPosBufSz() + throws Exception + { + IOUtil.copy( emptyReader(), nullWriter(), 1 ); + } + + @Test( expected = NullPointerException.class ) + public void copyNullReaderValidWriterPosBufSz() + throws Exception + { + IOUtil.copy( nullReader(), new DontCloseStringWriter(), 1 ); + } + + @Test + public void copyEmptyReaderValidWriterPosBufSz() + throws Exception + { + StringWriter writer = new DontCloseStringWriter(); + IOUtil.copy( emptyReader(), writer, 1 ); + assertThat( writer.toString(), is( emptyString() ) ); + } + + @Test( expected = NullPointerException.class ) + public void copyReaderNullWriterPosBufSz() + throws Exception + { + String probe = "A string \u2345\u00ef"; + IOUtil.copy( new StringReader( probe ), nullWriter(), 1 ); + } + + @Test + public void copyReaderValidWriterPosBufSz() + throws Exception + { + String probe = "A string \u2345\u00ef"; + StringWriter writer = new DontCloseStringWriter(); + IOUtil.copy( new StringReader( probe ), writer, 1 ); + assertThat( writer.toString(), is( probe ) ); + } + + + /* + * Utility methods + */ private static byte[] nullByteArray() { return null;