summaryrefslogtreecommitdiffstats
path: root/basic/qa/basic_coverage/test_types_conversion.bas
diff options
context:
space:
mode:
Diffstat (limited to 'basic/qa/basic_coverage/test_types_conversion.bas')
-rw-r--r--basic/qa/basic_coverage/test_types_conversion.bas86
1 files changed, 86 insertions, 0 deletions
diff --git a/basic/qa/basic_coverage/test_types_conversion.bas b/basic/qa/basic_coverage/test_types_conversion.bas
new file mode 100644
index 000000000..2d9311453
--- /dev/null
+++ b/basic/qa/basic_coverage/test_types_conversion.bas
@@ -0,0 +1,86 @@
+'
+' This file is part of the LibreOffice project.
+'
+' This Source Code Form is subject to the terms of the Mozilla Public
+' License, v. 2.0. If a copy of the MPL was not distributed with this
+' file, You can obtain one at http://mozilla.org/MPL/2.0/.
+'
+Option Explicit
+
+Dim nTotalCount As Integer
+Dim nPassCount As Integer
+Dim nFailCount As Integer
+
+' See LibreOffice6FloatingPointMode in basic/source/runtime/methods1.cxx
+Function LibreOffice6FloatingPointMode() As Boolean
+ Dim bMode As Boolean
+ bMode = Environ("LIBREOFFICE6FLOATINGPOINTMODE") <> ""
+ If (Not bMode) Then
+ Dim oConfigProvider As Object, aNodePath(0) As New com.sun.star.beans.PropertyValue, oRegistryKey As Object
+ oConfigProvider = createUnoService("com.sun.star.configuration.ConfigurationProvider")
+ aNodePath(0).Name = "nodepath"
+ aNodePath(0).Value = "org.openoffice.Office.Scripting/Basic/Compatibility"
+ oRegistryKey = oConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", aNodePath)
+ bMode = oRegistryKey.getPropertyValue("UseLibreOffice6FloatingPointConversion")
+ End If
+ LibreOffice6FloatingPointMode = bMode
+End Function
+
+' For the following tests the en-US (English - United States) locale is required
+Function doUnitTest() As String
+ nTotalCount = 0
+ nPassCount = 0
+ nFailCount = 0
+
+ ' Test implicit conversions from string to number
+ Dim nVal As Double
+ ' Simple integer
+ StartTest()
+ nVal = "123"
+ AssertTest(nVal = 123)
+
+ ' Negative integer
+ StartTest()
+ nVal = "-123"
+ AssertTest(nVal = -123)
+
+ ' Negative floating-point
+ StartTest()
+ nVal = "-123.45"
+ AssertTest(nVal = -123.45)
+
+ ' Negative floating-point with leading and trailing spaces
+ StartTest()
+ nVal = " -123.456 "
+ AssertTest(nVal = -123.456)
+
+ If LibreOffice6FloatingPointMode() Then
+ ' Wrong decimal separator (and not even interpreted as group separator)
+ StartTest()
+ nVal = " -123,45 "
+ AssertTest(nVal = -123)
+ Else
+ ' Wrong decimal separator (interpreted as group separator)
+ StartTest()
+ nVal = " -123,456 "
+ AssertTest(nVal = -123456)
+ End If
+
+ If ((nFailCount > 0) Or (nPassCount <> nTotalCount)) Then
+ doUnitTest = "FAIL"
+ Else
+ doUnitTest = "OK"
+ End If
+End Function
+
+Sub StartTest()
+ nTotalCount = nTotalCount + 1
+End Sub
+
+Sub AssertTest(testResult As Boolean)
+ If (testResult) Then
+ nPassCount = nPassCount + 1
+ Else
+ nFailCount = nFailCount + 1
+ End If
+End Sub