Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / test / net / sf / openrocket / util / ArrayUtilsTest.java
diff --git a/core/test/net/sf/openrocket/util/ArrayUtilsTest.java b/core/test/net/sf/openrocket/util/ArrayUtilsTest.java
new file mode 100644 (file)
index 0000000..ee8b5e9
--- /dev/null
@@ -0,0 +1,126 @@
+package net.sf.openrocket.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+public class ArrayUtilsTest {
+
+       @Test(expected=NullPointerException.class)
+       public void testCopyOfRange_NullArg() {
+               ArrayUtils.copyOfRange( (Byte[]) null, 0 , 14);
+       }
+
+       @Test(expected=ArrayIndexOutOfBoundsException.class)
+       public void testCopyOfRange_StartTooBig() {
+               Integer[] original = new Integer[5];
+               ArrayUtils.copyOfRange( original, 8 , 14);
+       }
+
+       @Test(expected=ArrayIndexOutOfBoundsException.class)
+       public void testCopyOfRange_StartTooSmall() {
+               Integer[] original = new Integer[5];
+               ArrayUtils.copyOfRange( original, -1 , 14);
+       }
+
+       @Test(expected=IllegalArgumentException.class)
+       public void testCopyOfRange_IllegalRange() {
+               Integer[] original = new Integer[5];
+               ArrayUtils.copyOfRange( original, 5, 0 );
+       }
+
+       @Test
+       public void testCopyOfRange() {
+               Integer[] original = new Integer[5];
+               for ( int i =0; i < 5; i++ ) {
+                       original[i] = i;
+               }
+               Integer[] copy = ArrayUtils.copyOfRange( original, 0, 0 );
+               assertEquals( 0, copy.length );
+
+               copy = ArrayUtils.copyOfRange( original, 2, 2 );
+               assertEquals( 0, copy.length );
+
+               copy = ArrayUtils.copyOfRange( original, 0, 2 );
+               assertEquals( 2, copy.length );
+               for( int i =0; i< 2; i++ ) {
+                       assertEquals( original[i], copy[i] );
+               }
+
+               copy = ArrayUtils.copyOfRange( original, 2, 5 );
+               assertEquals( 3, copy.length );
+               for( int i =0; i< 3; i++ ) {
+                       assertEquals( original[i+2], copy[i] );
+               }
+
+               copy = ArrayUtils.copyOfRange( original, 2, 15 );
+               assertEquals( 13, copy.length );
+               for( int i =0; i< 3; i++ ) {
+                       assertEquals( original[i+2], copy[i] );
+               }
+               for ( int i=3; i< 13; i++ ) {
+                       assertNull(copy[i]);
+               }
+
+       }
+
+       @Test
+       public void testCopyOfRange_ZeroSize() {
+               Integer[] original = new Integer[0];
+
+               Integer[] copy = ArrayUtils.copyOfRange( original, 0, 0 );
+               assertEquals( 0, copy.length );
+
+               copy = ArrayUtils.copyOfRange( original, 0, 2 );
+               assertEquals( 2, copy.length );
+               for( int i =0; i< 2; i++ ) {
+                       assertEquals( null, copy[i] );
+               }
+
+       }
+
+       @Test
+       public void testRante0() {
+               double[] ary = ArrayUtils.range(0., 0., 1.0);
+               assertEquals(1, ary.length);
+               assertEquals( 0.0, ary[0], 0.0 );
+       }
+
+       @Test
+       public void testRange1() {
+               double[] ary = ArrayUtils.range(0.0, 0.5, 1.0);
+               assertEquals(1, ary.length);
+               assertEquals( 0.0, ary[0], 0.0 );
+       }
+
+       @Test
+       public void testRange2() {
+               double[] ary = ArrayUtils.range(0.0, 1.0, 0.5);
+               assertEquals(3, ary.length);
+               assertEquals( 0.0, ary[0], 0.0 );
+               assertEquals( 0.5, ary[1], 0.0 );
+               assertEquals( 1.0, ary[2], 0.0 );
+       }
+       
+       @Test
+       public void testRange3() {
+               double [] ary = ArrayUtils.range(0.0, 1.0, 0.4 );
+               assertEquals(3, ary.length);
+               assertEquals( 0.0, ary[0], 0.0 );
+               assertEquals( 0.4, ary[1], 0.0 );
+               assertEquals( 0.8, ary[2], 0.0 );
+       }
+
+       @Test
+       public void testRange4() {
+               double[] ary = ArrayUtils.range(0.0,10.0, 0.5);
+               assertEquals( 21, ary.length );
+               int i =0;
+               for( double d = 0.0; d < 10.2; d+=0.5){
+                       assertEquals(d,ary[i++],0.0);
+               }
+               assertEquals( i, ary.length );
+       }
+       
+}