diff --git a/src/main/java/com/googlecode/aviator/runtime/function/system/BigIntFunction.java b/src/main/java/com/googlecode/aviator/runtime/function/system/BigIntFunction.java index aee6d8e4..e3b5b015 100644 --- a/src/main/java/com/googlecode/aviator/runtime/function/system/BigIntFunction.java +++ b/src/main/java/com/googlecode/aviator/runtime/function/system/BigIntFunction.java @@ -36,7 +36,7 @@ public AviatorObject call(final Map env, final AviatorObject arg } else if (obj instanceof Character) { return AviatorBigInt.valueOf(new BigInteger(String.valueOf(obj))); } else { - throw new ClassCastException("Could not cast " + obj.getClass().getName() + " to bigint"); + throw new ClassCastException("Could not cast " + (obj != null ? obj.getClass().getName() : "null") + " to bigint, AviatorObject is " + arg1); } case String: return AviatorBigInt.valueOf(new BigInteger((String) arg1.getValue(env))); diff --git a/src/main/java/com/googlecode/aviator/runtime/function/system/DoubleFunction.java b/src/main/java/com/googlecode/aviator/runtime/function/system/DoubleFunction.java index 50e5b025..0a44f73c 100644 --- a/src/main/java/com/googlecode/aviator/runtime/function/system/DoubleFunction.java +++ b/src/main/java/com/googlecode/aviator/runtime/function/system/DoubleFunction.java @@ -34,7 +34,7 @@ public AviatorObject call(Map env, AviatorObject arg1) { } else if (obj instanceof Character) { return new AviatorDouble(Double.parseDouble(String.valueOf(obj))); } else { - throw new ClassCastException("Could not cast " + obj.getClass().getName() + " to double"); + throw new ClassCastException("Could not cast " + (obj != null ? obj.getClass().getName() : "null") + " to double, AviatorObject is" + arg1 ); } case String: return new AviatorDouble(Double.parseDouble((String) arg1.getValue(env))); diff --git a/src/main/java/com/googlecode/aviator/runtime/function/system/LongFunction.java b/src/main/java/com/googlecode/aviator/runtime/function/system/LongFunction.java index 5b30aa7e..07ff6fd6 100644 --- a/src/main/java/com/googlecode/aviator/runtime/function/system/LongFunction.java +++ b/src/main/java/com/googlecode/aviator/runtime/function/system/LongFunction.java @@ -34,7 +34,7 @@ public AviatorObject call(Map env, AviatorObject arg1) { } else if (obj instanceof Character) { return AviatorLong.valueOf(Long.valueOf(String.valueOf(obj))); } else { - throw new ClassCastException("Could not cast " + obj.getClass().getName() + " to long"); + throw new ClassCastException("Could not cast " + (obj != null ? obj.getClass().getName() : "null") + " to long, AviatorObject is " + arg1); } case String: return AviatorLong.valueOf(Long.valueOf((String) arg1.getValue(env))); diff --git a/src/test/java/com/googlecode/aviator/runtime/function/system/BigIntFunctionUnitTest.java b/src/test/java/com/googlecode/aviator/runtime/function/system/BigIntFunctionUnitTest.java new file mode 100644 index 00000000..ecf2e382 --- /dev/null +++ b/src/test/java/com/googlecode/aviator/runtime/function/system/BigIntFunctionUnitTest.java @@ -0,0 +1,27 @@ +package com.googlecode.aviator.runtime.function.system; + +import com.googlecode.aviator.runtime.type.AviatorJavaType; +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; + + +public class BigIntFunctionUnitTest { + @Test(expected = ClassCastException.class) + public void testCall_WithJavaTypeNullArgument() { + BigIntFunction bigIntFunction = new BigIntFunction(); + AviatorJavaType aviatorJavaType = new AviatorJavaType("var"); + bigIntFunction.call(null, aviatorJavaType); + } + + @Test(expected = ClassCastException.class) + public void testCall_WithJavaTypeNotSupportArgument() { + BigIntFunction bigIntFunction = new BigIntFunction(); + AviatorJavaType aviatorJavaType = new AviatorJavaType("var"); + Map env = new HashMap<>(); + env.put("var", true); + + bigIntFunction.call(env, aviatorJavaType); + } +} diff --git a/src/test/java/com/googlecode/aviator/runtime/function/system/DoubleFunctionUnitTest.java b/src/test/java/com/googlecode/aviator/runtime/function/system/DoubleFunctionUnitTest.java new file mode 100644 index 00000000..2c153ae7 --- /dev/null +++ b/src/test/java/com/googlecode/aviator/runtime/function/system/DoubleFunctionUnitTest.java @@ -0,0 +1,27 @@ +package com.googlecode.aviator.runtime.function.system; + +import com.googlecode.aviator.runtime.type.AviatorJavaType; +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; + + +public class DoubleFunctionUnitTest { + @Test(expected = ClassCastException.class) + public void testCall_WithJavaTypeNullArgument() { + DoubleFunction doubleFunction = new DoubleFunction(); + AviatorJavaType aviatorJavaType = new AviatorJavaType("var"); + doubleFunction.call(null, aviatorJavaType); + } + + @Test(expected = ClassCastException.class) + public void testCall_WithJavaTypeNotSupportArgument() { + DoubleFunction doubleFunction = new DoubleFunction(); + AviatorJavaType aviatorJavaType = new AviatorJavaType("var"); + Map env = new HashMap<>(); + env.put("var", true); + + doubleFunction.call(env, aviatorJavaType); + } +} diff --git a/src/test/java/com/googlecode/aviator/runtime/function/system/LongFunctionUnitTest.java b/src/test/java/com/googlecode/aviator/runtime/function/system/LongFunctionUnitTest.java new file mode 100644 index 00000000..106f22ed --- /dev/null +++ b/src/test/java/com/googlecode/aviator/runtime/function/system/LongFunctionUnitTest.java @@ -0,0 +1,27 @@ +package com.googlecode.aviator.runtime.function.system; + +import com.googlecode.aviator.runtime.type.AviatorJavaType; +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; + + +public class LongFunctionUnitTest { + @Test(expected = ClassCastException.class) + public void testCall_WithJavaTypeNullArgument() { + LongFunction longFunction = new LongFunction(); + AviatorJavaType aviatorJavaType = new AviatorJavaType("var"); + longFunction.call(null, aviatorJavaType); + } + + @Test(expected = ClassCastException.class) + public void testCall_WithJavaTypeNotSupportArgument() { + LongFunction longFunction = new LongFunction(); + AviatorJavaType aviatorJavaType = new AviatorJavaType("var"); + Map env = new HashMap<>(); + env.put("var", true); + + longFunction.call(env, aviatorJavaType); + } +}