Added unit tests and fixed rounding problem in ArrayUtils.range().

This commit is contained in:
Kevin Ruland 2012-08-10 19:09:27 +00:00
parent 7c5524f1fc
commit 301067e301
2 changed files with 48 additions and 9 deletions

View File

@ -10,7 +10,12 @@ public class ArrayUtils {
*/ */
public static double[] range(double start, double stop, double step){ public static double[] range(double start, double stop, double step){
int size = (int) Math.floor(((stop - start) / step)); int size = 0 ;
if ( stop <= start ) {
size = 0;
} else {
size = (int) Math.ceil(((stop - start) / step));
}
//System.out.println("Range from "+start+" to "+stop+" step "+step+" has length "+size); //System.out.println("Range from "+start+" to "+stop+" step "+step+" has length "+size);

View File

@ -80,5 +80,39 @@ public class ArrayUtilsTest {
} }
@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(2, ary.length);
assertEquals( 0.0, ary[0], 0.0 );
assertEquals( 0.5, ary[1], 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( 20, ary.length );
int i =0;
for( double d = 0.0; d < 10.0; d+=0.5){
assertEquals(d,ary[i++],0.0);
}
assertEquals( i, ary.length );
}
} }