--- /dev/null
+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 );
+ }
+
+}