From d4dcfcc52fb2217075219386766975d3029a08dc Mon Sep 17 00:00:00 2001 From: Petr Pytelka Date: Mon, 3 Feb 2020 02:07:36 +0100 Subject: [PATCH 1/2] New functions CLng and CDbl --- .../utility/functions/UtilityFunctions.java | 18 ++++++++++++++++++ .../scriptbasic/testprograms/TestPrograms.java | 5 +++++ .../testprograms/TestUtilityFunctions.bas | 12 ++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 src/test/resources/com/scriptbasic/testprograms/TestUtilityFunctions.bas diff --git a/src/main/java/com/scriptbasic/utility/functions/UtilityFunctions.java b/src/main/java/com/scriptbasic/utility/functions/UtilityFunctions.java index e8f0ee72..c0720470 100644 --- a/src/main/java/com/scriptbasic/utility/functions/UtilityFunctions.java +++ b/src/main/java/com/scriptbasic/utility/functions/UtilityFunctions.java @@ -4,6 +4,8 @@ import com.scriptbasic.classification.Constant; import com.scriptbasic.classification.System; import com.scriptbasic.classification.Utility; +import com.scriptbasic.executors.rightvalues.BasicDoubleValue; +import com.scriptbasic.executors.rightvalues.BasicLongValue; import com.scriptbasic.interfaces.BasicRuntimeException; import com.scriptbasic.log.Logger; import com.scriptbasic.log.LoggerFactory; @@ -11,6 +13,7 @@ import com.scriptbasic.spi.Interpreter; import com.scriptbasic.utility.MagicBean; import com.scriptbasic.utility.NoInstance; +import com.scriptbasic.utility.RightValueUtility; import java.lang.reflect.Array; import java.nio.charset.StandardCharsets; @@ -143,4 +146,19 @@ public static Long length(final Object arg) { return null; } + @BasicFunction(classification = Utility.class) + public static Double cdbl(final Object arg) throws BasicRuntimeException { + if (arg == null) { + throw new BasicRuntimeException("NULL cannot be converted to double"); + } + return BasicDoubleValue.asDouble(RightValueUtility.createRightValue(arg)); + } + + @BasicFunction(classification = Utility.class) + static public Long clng(final Object arg) throws BasicRuntimeException { + if (arg == null) { + throw new BasicRuntimeException("NULL cannot be converted to long"); + } + return BasicLongValue.asLong(RightValueUtility.createRightValue(arg)); + } } diff --git a/src/test/java/com/scriptbasic/testprograms/TestPrograms.java b/src/test/java/com/scriptbasic/testprograms/TestPrograms.java index 384944d5..85dee7ba 100644 --- a/src/test/java/com/scriptbasic/testprograms/TestPrograms.java +++ b/src/test/java/com/scriptbasic/testprograms/TestPrograms.java @@ -168,6 +168,11 @@ public void testStringFunctions() throws Exception { codeTest("TestStringFunctions.bas", "0189123"); } + @Test + public void testUtilityFunctions() throws Exception { + codeTest("TestUtilityFunctions.bas", "DONE"); + } + @Test public void testJavaObjectFieldAccess() throws ScriptBasicException, ClassNotFoundException, AnalysisException { final var e = new TestingExecutor(); diff --git a/src/test/resources/com/scriptbasic/testprograms/TestUtilityFunctions.bas b/src/test/resources/com/scriptbasic/testprograms/TestUtilityFunctions.bas new file mode 100644 index 00000000..a75f0eb3 --- /dev/null +++ b/src/test/resources/com/scriptbasic/testprograms/TestUtilityFunctions.bas @@ -0,0 +1,12 @@ +' test function cdbl +assert("cdbl_1", cdbl(2)=2.0) +assert("cdbl_2", cdbl(2.5)=2.5) +assert("cdbl_3", cdbl("2")=2.0) +assert("cdbl_4", cdbl("2.5")=2.5) + +' test function clng +assert("clng_1", clng(2)=2) +assert("clng_2", clng("2")=2) +assert("clng_3", clng(true)=1) + +print "DONE" From 868cc20fcfb5a7fd811d70eb61017cca3b53ed30 Mon Sep 17 00:00:00 2001 From: Petr Pytelka Date: Tue, 4 Feb 2020 11:40:03 +0100 Subject: [PATCH 2/2] Fixed text of exception --- .../com/scriptbasic/utility/functions/UtilityFunctions.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/scriptbasic/utility/functions/UtilityFunctions.java b/src/main/java/com/scriptbasic/utility/functions/UtilityFunctions.java index c0720470..f4cee868 100644 --- a/src/main/java/com/scriptbasic/utility/functions/UtilityFunctions.java +++ b/src/main/java/com/scriptbasic/utility/functions/UtilityFunctions.java @@ -149,7 +149,7 @@ public static Long length(final Object arg) { @BasicFunction(classification = Utility.class) public static Double cdbl(final Object arg) throws BasicRuntimeException { if (arg == null) { - throw new BasicRuntimeException("NULL cannot be converted to double"); + throw new BasicRuntimeException("undef cannot be converted to double"); } return BasicDoubleValue.asDouble(RightValueUtility.createRightValue(arg)); } @@ -157,7 +157,7 @@ public static Double cdbl(final Object arg) throws BasicRuntimeException { @BasicFunction(classification = Utility.class) static public Long clng(final Object arg) throws BasicRuntimeException { if (arg == null) { - throw new BasicRuntimeException("NULL cannot be converted to long"); + throw new BasicRuntimeException("undef cannot be converted to long"); } return BasicLongValue.asLong(RightValueUtility.createRightValue(arg)); }