Refactor math support to build for cldc 1.1.
This commit is contained in:
@@ -3,40 +3,42 @@ package org.luaj.vm;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.luaj.lib.MathLib;
|
||||
import org.luaj.platform.J2meMidp10Cldc10Platform;
|
||||
import org.luaj.platform.J2meMidp20Cldc11Platform;
|
||||
import org.luaj.platform.J2sePlatform;
|
||||
|
||||
public class MathLibTest extends TestCase {
|
||||
|
||||
private Platform j2se;
|
||||
private Platform j2me;
|
||||
private boolean supportedOnJ2me;
|
||||
|
||||
protected void setUp() throws Exception {
|
||||
j2se = new J2sePlatform();
|
||||
j2me = new org.luaj.platform.J2meMidp10Cldc10Platform(null);
|
||||
j2me = new org.luaj.platform.J2meMidp20Cldc11Platform(null);
|
||||
supportedOnJ2me = true;
|
||||
}
|
||||
|
||||
public void testMathDPow() {
|
||||
assertEquals( 1, J2meMidp10Cldc10Platform.dpow(2, 0), 0 );
|
||||
assertEquals( 2, J2meMidp10Cldc10Platform.dpow(2, 1), 0 );
|
||||
assertEquals( 8, J2meMidp10Cldc10Platform.dpow(2, 3), 0 );
|
||||
assertEquals( -8, J2meMidp10Cldc10Platform.dpow(-2, 3), 0 );
|
||||
assertEquals( 1/8., J2meMidp10Cldc10Platform.dpow(2, -3), 0 );
|
||||
assertEquals( -1/8., J2meMidp10Cldc10Platform.dpow(-2, -3), 0 );
|
||||
assertEquals( 16, J2meMidp10Cldc10Platform.dpow(256, .5), 0 );
|
||||
assertEquals( 4, J2meMidp10Cldc10Platform.dpow(256, .25), 0 );
|
||||
assertEquals( 64, J2meMidp10Cldc10Platform.dpow(256, .75), 0 );
|
||||
assertEquals( 1./16, J2meMidp10Cldc10Platform.dpow(256, - .5), 0 );
|
||||
assertEquals( 1./ 4, J2meMidp10Cldc10Platform.dpow(256, -.25), 0 );
|
||||
assertEquals( 1./64, J2meMidp10Cldc10Platform.dpow(256, -.75), 0 );
|
||||
assertEquals( Double.NaN, J2meMidp10Cldc10Platform.dpow(-256, .5), 0 );
|
||||
assertEquals( 1, J2meMidp10Cldc10Platform.dpow(.5, 0), 0 );
|
||||
assertEquals( .5, J2meMidp10Cldc10Platform.dpow(.5, 1), 0 );
|
||||
assertEquals(.125, J2meMidp10Cldc10Platform.dpow(.5, 3), 0 );
|
||||
assertEquals( 2, J2meMidp10Cldc10Platform.dpow(.5, -1), 0 );
|
||||
assertEquals( 8, J2meMidp10Cldc10Platform.dpow(.5, -3), 0 );
|
||||
assertEquals(1, J2meMidp10Cldc10Platform.dpow(0.0625, 0), 0 );
|
||||
assertEquals(0.00048828125, J2meMidp10Cldc10Platform.dpow(0.0625, 2.75), 0 );
|
||||
assertEquals( 1, J2meMidp20Cldc11Platform.dpow(2, 0), 0 );
|
||||
assertEquals( 2, J2meMidp20Cldc11Platform.dpow(2, 1), 0 );
|
||||
assertEquals( 8, J2meMidp20Cldc11Platform.dpow(2, 3), 0 );
|
||||
assertEquals( -8, J2meMidp20Cldc11Platform.dpow(-2, 3), 0 );
|
||||
assertEquals( 1/8., J2meMidp20Cldc11Platform.dpow(2, -3), 0 );
|
||||
assertEquals( -1/8., J2meMidp20Cldc11Platform.dpow(-2, -3), 0 );
|
||||
assertEquals( 16, J2meMidp20Cldc11Platform.dpow(256, .5), 0 );
|
||||
assertEquals( 4, J2meMidp20Cldc11Platform.dpow(256, .25), 0 );
|
||||
assertEquals( 64, J2meMidp20Cldc11Platform.dpow(256, .75), 0 );
|
||||
assertEquals( 1./16, J2meMidp20Cldc11Platform.dpow(256, - .5), 0 );
|
||||
assertEquals( 1./ 4, J2meMidp20Cldc11Platform.dpow(256, -.25), 0 );
|
||||
assertEquals( 1./64, J2meMidp20Cldc11Platform.dpow(256, -.75), 0 );
|
||||
assertEquals( Double.NaN, J2meMidp20Cldc11Platform.dpow(-256, .5), 0 );
|
||||
assertEquals( 1, J2meMidp20Cldc11Platform.dpow(.5, 0), 0 );
|
||||
assertEquals( .5, J2meMidp20Cldc11Platform.dpow(.5, 1), 0 );
|
||||
assertEquals(.125, J2meMidp20Cldc11Platform.dpow(.5, 3), 0 );
|
||||
assertEquals( 2, J2meMidp20Cldc11Platform.dpow(.5, -1), 0 );
|
||||
assertEquals( 8, J2meMidp20Cldc11Platform.dpow(.5, -3), 0 );
|
||||
assertEquals(1, J2meMidp20Cldc11Platform.dpow(0.0625, 0), 0 );
|
||||
assertEquals(0.00048828125, J2meMidp20Cldc11Platform.dpow(0.0625, 2.75), 0 );
|
||||
}
|
||||
|
||||
public void testAbs() {
|
||||
@@ -49,6 +51,7 @@ public class MathLibTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testCosh() {
|
||||
supportedOnJ2me = false;
|
||||
tryTrigOps( MathLib.COSH );
|
||||
}
|
||||
|
||||
@@ -57,6 +60,7 @@ public class MathLibTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testExp() {
|
||||
supportedOnJ2me = false;
|
||||
tryMathOp( MathLib.EXP, 0 );
|
||||
tryMathOp( MathLib.EXP, 0.1 );
|
||||
tryMathOp( MathLib.EXP, .9 );
|
||||
@@ -69,6 +73,7 @@ public class MathLibTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testLog() {
|
||||
supportedOnJ2me = false;
|
||||
tryMathOp( MathLib.LOG, 0.1 );
|
||||
tryMathOp( MathLib.LOG, .9 );
|
||||
tryMathOp( MathLib.LOG, 1. );
|
||||
@@ -80,6 +85,7 @@ public class MathLibTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testLog10() {
|
||||
supportedOnJ2me = false;
|
||||
tryMathOp( MathLib.LOG10, 0.1 );
|
||||
tryMathOp( MathLib.LOG10, .9 );
|
||||
tryMathOp( MathLib.LOG10, 1. );
|
||||
@@ -115,6 +121,7 @@ public class MathLibTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testSinh() {
|
||||
supportedOnJ2me = false;
|
||||
tryTrigOps( MathLib.SINH );
|
||||
}
|
||||
|
||||
@@ -132,10 +139,12 @@ public class MathLibTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testTanh() {
|
||||
supportedOnJ2me = false;
|
||||
tryTrigOps( MathLib.TANH );
|
||||
}
|
||||
|
||||
public void testAtan2() {
|
||||
supportedOnJ2me = false;
|
||||
tryDoubleOps( MathLib.ATAN2, false );
|
||||
}
|
||||
|
||||
@@ -202,17 +211,32 @@ public class MathLibTest extends TestCase {
|
||||
tryMathOp( id, -Math.PI*9/8 );
|
||||
}
|
||||
|
||||
private void tryMathOp(int id, double x) {
|
||||
double expected = j2se.mathop(id, x);
|
||||
double actual = j2me.mathop(id, x);
|
||||
assertEquals( expected, actual, 1.e-5 );
|
||||
private void tryMathOp(int id, double x) {
|
||||
try {
|
||||
double expected = j2se.mathop(id, LDouble.valueOf(x)).toJavaDouble();
|
||||
double actual = j2me.mathop(id, LDouble.valueOf(x)).toJavaDouble();
|
||||
if ( supportedOnJ2me )
|
||||
assertEquals( expected, actual, 1.e-5 );
|
||||
else
|
||||
this.fail("j2me should throw exception for math op "+id+" but returned "+actual);
|
||||
} catch ( LuaErrorException lee ) {
|
||||
if ( supportedOnJ2me )
|
||||
throw lee;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void tryMathOp(int id, double a, double b) {
|
||||
double expected = j2se.mathop(id, a, b);
|
||||
double actual = j2me.mathop(id, a, b);
|
||||
assertEquals( expected, actual, 1.e-5 );
|
||||
}
|
||||
|
||||
try {
|
||||
double expected = j2se.mathop(id, LDouble.valueOf(a), LDouble.valueOf(b)).toJavaDouble();
|
||||
double actual = j2me.mathop(id, LDouble.valueOf(a), LDouble.valueOf(b)).toJavaDouble();
|
||||
if ( supportedOnJ2me )
|
||||
assertEquals( expected, actual, 1.e-5 );
|
||||
else
|
||||
this.fail("j2me should throw exception for math op "+id+" but returned "+actual);
|
||||
} catch ( LuaErrorException lee ) {
|
||||
if ( supportedOnJ2me )
|
||||
throw lee;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user