summaryrefslogtreecommitdiffstats
path: root/basic
diff options
context:
space:
mode:
authorAlain Romedenne <alain.romedenne@libreoffice.org>2021-02-17 15:50:50 +0100
committerMike Kaganski <mike.kaganski@collabora.com>2021-03-29 15:29:39 +0200
commit08151f4827cc954188243f06660076534bc30c1f (patch)
tree574af1ce0d5ac5bab173da0974d5df40d8434a5b /basic
parentUpdate git submodules (diff)
downloadcore-08151f4827cc954188243f06660076534bc30c1f.tar.gz
core-08151f4827cc954188243f06660076534bc30c1f.zip
TypeName, VarType, TypeLen Basic QA test cases
1- exhibiting array type names 2- highlighting supplemental libO Basic constants 3- precising data types internal representations I intend to document in help: 1- primitive data types array names: Boolean(), Byte(), … as IsArray() function does not provide such info 2- Publish extra Basic constants for already published values: - V_OBJECT=9, V_BOOLEAN=11, V_VARIANT=12, V_BYTE=17 - not necessarily V_ARRAY=8192, V_ERROR=10 The latter is conditioned to the creation of an enhancement request. FYI, published Vartype() values and constants for VBA and other Basic-like languages: https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/vartype-function https://docs.xojo.com/VarType https://help.hcltechsw.com/dom_designer/9.0.1/appdev/LSAZ_DATATYPE_FUNCTION.html Change-Id: I51bac3caf555d94e91de7c6d624b3fca9e73a673 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111042 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'basic')
-rw-r--r--basic/qa/basic_coverage/test_typelen_method.vb54
-rw-r--r--basic/qa/basic_coverage/test_typename_method.vb73
-rw-r--r--basic/qa/basic_coverage/test_vartype_method.vb95
3 files changed, 201 insertions, 21 deletions
diff --git a/basic/qa/basic_coverage/test_typelen_method.vb b/basic/qa/basic_coverage/test_typelen_method.vb
index 4684790078c5..a9ebb01446bb 100644
--- a/basic/qa/basic_coverage/test_typelen_method.vb
+++ b/basic/qa/basic_coverage/test_typelen_method.vb
@@ -6,11 +6,51 @@
' file, You can obtain one at http://mozilla.org/MPL/2.0/.
'
-Function doUnitTest as Integer
- ' TYPELEN
- If ( TypeLen("Hello") <> 5 ) Then
- doUnitTest = 0
- Else
- doUnitTest = 1
- End If
+Dim int16 As Integer, int32 As Long, flt32 As Single, flt64 As Double, _
+ curr As Currency, dat As Date, str As String, _
+ myErr As Variant, var As Variant, byt3 As Byte, bool As Boolean
+
+Dim int_%, long_&, single_!, double_#, currency_@, string_$, array_
+
+Function doUnitTest
+ ' TypeLen()
+
+ dat = #02/17/2012# : myErr = CVErr("errMsg")
+ assert( TypeLen(int16) = 2 , "TypeLen(int16) is not 2")
+ assert( TypeLen(int32) = 4 , "TypeLen(int32) is not 4")
+ assert( TypeLen(flt32) = 4 , "TypeLen(flt32) is not 4" )
+ assert( TypeLen(flt64) = 8 , "TypeLen(flt64) is not 8" )
+ assert( TypeLen(curr) = 8 , "TypeLen(curr) is not 8" )
+ assert( TypeLen(dat) = 8 , "TypeLen(dat) is not 8" )
+ assert( TypeLen(str) = 0 , "TypeLen(str) is not 0" ) ' when empty
+ assert( TypeLen(myErr) = 2 , "TypeLen(myErr) is not 2" )
+ assert( TypeLen(bool) = 1 , "TypeLen(bool) is not 1" )
+ assert( TypeLen(var) = 0 , "TypeLen(var) is not 0" ) ' when empty
+ assert( TypeLen(byt3) = 1 , "TypeLen(byt3) is not 1" )
+
+ assert( TypeLen(int_) = 2 , "TypeLen(int_) is not 2" )
+ assert( TypeLen(long_) = 4 , "TypeLen(long_) is not 4" )
+ assert( TypeLen(single_) = 4 , "TypeLen(single_) is not 4" )
+ assert( TypeLen(double_) = 8 , "TypeLen(double_) is not 8" )
+ assert( TypeLen(currency_) = 8 , "TypeLen(currency_) is not 8" )
+ assert( TypeLen(string_) = 0 , "TypeLen(string_) is not 0" )
+
+ If FailedAssertion Then
+ doUnitTest = "test_typelen_method.vb fails" + messages
+ Exit Function
+ EndIf
+ doUnitTest = 1 ' All checks passed
End Function
+
+Sub DEV_TEST
+ MsgBox doUnitTest
+End Sub
+
+Dim failedAssertion As Boolean, messages As String
+
+Sub assert(expression As Boolean, errMessage As String)
+ If ( Not expression ) Then
+ messages = messages + Chr(10) + ErrMessage
+ failedAssertion = True
+ EndIf
+End Sub
diff --git a/basic/qa/basic_coverage/test_typename_method.vb b/basic/qa/basic_coverage/test_typename_method.vb
index eba2d86c404b..ec9dbb408ac5 100644
--- a/basic/qa/basic_coverage/test_typename_method.vb
+++ b/basic/qa/basic_coverage/test_typename_method.vb
@@ -5,12 +5,71 @@
' 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/.
'
+Type UDF ' User defined type
+ l As Object
+ s as String
+End Type
+Dim myUDF as UDF
-Function doUnitTest as Integer
- ' TYPENAME
- If ( TypeName("Hello") <> "String" ) Then
- doUnitTest = 0
- Else
- doUnitTest = 1
- End If
+Dim int16 As Integer, int32 As Long, flt32 As Single, flt64 As Double, _
+ curr As Currency, dat As Date, str As String, obj As Object, _
+ myErr As Variant, var As Variant, byt3 As Byte, bool As Boolean
+
+Dim int_%, long_&, single_!, double_#, currency_@, string_$, array_
+
+Dim intArray() As Integer, lngArray(5) As Long, sngArray!() As Single, dblArray#(8) As Double, _
+ curArray@() As Currency, datArray() As Date, strArray$() As String, objArray(5,15) As Object, _
+ varArray() As Variant, byteArray() As Byte, boolArray() As Boolean
+
+Function doUnitTest ' TypeName()
+
+ myErr = CVErr(0.56E-41)
+ assert( TypeName(int16) = "Integer" , "TypeName(int16) is not ""Integer""")
+ assert( TypeName(int32) = "Long" , "TypeName(int32) is not ""Long""")
+ assert( TypeName(flt32) = "Single" , "TypeName(flt32) is not ""Single""" )
+ assert( TypeName(flt64) = "Double" , "TypeName(flt64) is not ""Double""" )
+ assert( TypeName(curr) = "Currency", "TypeName(curr) is not ""Currency""" )
+ assert( TypeName(dat) = "Date" , "TypeName(dat) is not ""Date""" )
+ assert( TypeName(byt3) = "Byte" , "TypeName(byt3) is not ""Byte""" )
+ assert( TypeName(MyErr) = "Error" , "TypeName(MyErr) is not ""Error""" )
+ assert( TypeName(bool) = "Boolean" , "TypeName(bool) is not ""Boolean""" )
+ assert( TypeName(str) = "String" , "TypeName(str) is not ""String""" )
+ assert( TypeName(obj) = "Object" , "TypeName(obj) is not ""Object""" )
+ assert( TypeName(myUDF) = "Object" , "TypeName(myUDF) is not ""Object""" )
+ assert( TypeName(var) = "Empty" , "TypeName(var) is not ""Empty""" )
+
+ assert( TypeName(int_) = "Integer" , "TypeName(int_) is not ""Integer""" )
+ assert( TypeName(long_) = "Long" , "TypeName(long_) is not ""Long""" )
+ assert( TypeName(single_) = "Single" , "TypeName(single_) is not ""Single""" )
+ assert( TypeName(double_) = "Double" , "TypeName(double_) is not ""Double""" )
+ assert( TypeName(currency_) = "Currency", "TypeName(currency_) is not ""Currency""" )
+ assert( TypeName(string_) = "String" , "TypeName(string_) is not ""String""" )
+
+ assert( TypeName(intArray) = "Integer()" , "TypeName(intArray) is not ""Integer()""" )
+ assert( TypeName(lngArray) = "Long()" , "TypeName(lngArray) is not ""Long()""" )
+ assert( TypeName(sngArray) = "Single()" , "TypeName(sngArray) is not ""Single()""" )
+ assert( TypeName(dblArray) = "Double()" , "TypeName(dblArray) is not ""Double()""" )
+ assert( TypeName(curArray) = "Currency()", "TypeName(curArray) is not ""Currency()""" )
+ assert( TypeName(datArray) = "Date()" , "TypeName(datArray) is not ""Date()""" )
+ assert( TypeName(strArray) = "String()" , "TypeName(strArray) is not ""String()""" )
+ assert( TypeName(objArray) = "Object()" , "TypeName(objArray) is not ""Object()""" )
+ assert( TypeName(boolArray) = "Boolean()" , "TypeName(boolArray) is not ""Boolean()""" )
+ assert( TypeName(varArray) = "Variant()" , "TypeName(varArray) is not ""Variant()""" )
+ assert( TypeName(byteArray) = "Byte()" , "TypeName(byteArray) is not ""Byte()""" )
+ If FailedAssertion Then
+ doUnitTest = "test_typename_method.vb failed" + messages
+ Exit Function
+ EndIf
+ doUnitTest = 1 ' All checks passed
End Function
+
+Sub DEV_TEST : Print doUnitTest : End Sub
+
+Dim failedAssertion As Boolean, messages As String
+
+Sub assert(expression As Boolean, errMessage As String)
+ if ( Not expression ) Then
+ messages = messages + Chr(10) + ErrMessage
+ failedAssertion = True
+ EndIf
+End Sub \ No newline at end of file
diff --git a/basic/qa/basic_coverage/test_vartype_method.vb b/basic/qa/basic_coverage/test_vartype_method.vb
index bd45adef00df..9c15d8520a93 100644
--- a/basic/qa/basic_coverage/test_vartype_method.vb
+++ b/basic/qa/basic_coverage/test_vartype_method.vb
@@ -5,12 +5,93 @@
' 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/.
'
+Type UDF ' User defined type
+ l As Object
+ s as String
+End Type
+Dim myUDF As UDF
-Function doUnitTest as Integer
- ' VARTYPE
- If ( VarType("Hello") <> 8 ) Then
- doUnitTest = 0
- Else
- doUnitTest = 1
- End If
+Dim int16 As Integer, int32 As Long, flt32 As Single, flt64 As Double, _
+ curr As Currency, dat As Date, str As String, obj As Object, _
+ myErr As Variant, var As Variant, byt3 As Byte, bool As Boolean
+
+Dim int_%, long_&, single_!, double_#, currency_@, string_$, array_
+
+Dim intArray() As Integer, lngArray(5) As Long, sngArray!() As Single, dblArray#(8) As Double, _
+ curArray@() As Currency, datArray() As Date, strArray$() As String, objArray() As Object, _
+ varArray() As Variant, byteArray() As Byte, boolArray() As Boolean
+
+' Constants that candidate for public exposure
+Private Const V_ARRAY=8192, V_OBJECT=9, V_ERROR=10, V_BOOLEAN=11, V_VARIANT=12, V_BYTE=17
+
+Function doUnitTest
+ ' VarType()
+
+ assert( V_EMPTY = 0 , "V_EMPTY is not 0")
+ assert( V_NULL = 1 , "V_NULL is not 1")
+ assert( V_INTEGER = 2 , "V_INTEGER is not 2")
+ assert( V_LONG = 3 , "V_LONG is not 3")
+ assert( V_SINGLE = 4 , "V_SINGLE is not 4")
+ assert( V_DOUBLE = 5 , "V_DOUBLE is not 5")
+ assert( V_CURRENCY = 6, "V_CURRENCY is not 6")
+ assert( V_DATE = 7 , "V_DATE is not 7")
+ assert( V_STRING = 8 , "V_STRING is not 8")
+
+ assert( VarType(Empty) = V_EMPTY , "Vartype(Empty) is not V_EMPTY")
+ assert( VarType(Null) = V_NULL , "Vartype(Empty) is not V_NULL")
+ assert( VarType(Nothing) = V_OBJECT, "Vartype(Empty) is not V_OBJECT")
+
+ myErr = CVErr("errMsg")
+ assert( VarType(int16) = V_INTEGER , "VarType(int16) is not V_INTEGER")
+ assert( VarType(int32) = V_LONG , "VarType(int32) is not V_LONG")
+ assert( VarType(flt32) = V_SINGLE , "VarType(flt32) is not V_SINGLE" )
+ assert( VarType(flt64) = V_DOUBLE , "VarType(flt64) is not V_DOUBLE" )
+ assert( VarType(curr) = V_CURRENCY, "VarType(curr) is not V_CURRENCY" )
+ assert( VarType(dat) = V_DATE , "VarType(dat) is not V_DATE" )
+ assert( VarType(str) = V_STRING , "VarType(str) is not V_STRING" )
+ assert( VarType(obj) = V_OBJECT , "VarType(obj) is not V_OBJECT" )
+ assert( VarType(myUDF) = V_OBJECT , "VarType(myUDF) is not V_OBJECT" )
+ assert( VarType(myErr) = V_ERROR , "VarType(myErr) is not V_ERROR" )
+ assert( VarType(bool) = V_BOOLEAN , "VarType(bool) is not V_BOOLEAN" )
+ assert( VarType(var) = V_EMPTY , "VarType(var) is not V_EMPTY" )
+ assert( VarType(byt3) = V_BYTE , "VarType(byt3) is not V_BYTE" )
+
+ assert( VarType(int_) = V_INTEGER , "VarType(int_) is not V_INTEGER" )
+ assert( VarType(long_) = V_LONG , "VarType(long_) is not V_LONG" )
+ assert( VarType(single_) = V_SINGLE , "VarType(single_) is not V_SINGLE" )
+ assert( VarType(double_) = V_DOUBLE , "VarType(double_) is not V_CURRENCY" )
+ assert( VarType(currency_) = V_CURRENCY, "VarType(currency_) is not V_CURRENCY" )
+ assert( VarType(string_) = V_STRING , "VarType(string_) is not V_STRING" )
+
+ assert( VarType(intArray) = V_ARRAY+V_INTEGER , "VarType(intArray) is not V_ARRAY+V_INTEGER" )
+ assert( VarType(lngArray) = V_ARRAY+V_LONG , "VarType(lngArray) is not V_ARRAY+V_LONG" )
+ assert( VarType(sngArray) = V_ARRAY+V_SINGLE , "VarType(sngArray) is not V_ARRAY+V_SINGLE" )
+ assert( VarType(dblArray) = V_ARRAY+V_DOUBLE , "VarType(dblArray) is not V_ARRAY+V_DOUBLE" )
+ assert( VarType(curArray) = V_ARRAY+V_CURRENCY, "VarType(curArray) is not V_ARRAY+V_CURRENCY" )
+ assert( VarType(datArray) = V_ARRAY+V_DATE , "VarType(datArray) is not V_ARRAY+V_DATE" )
+ assert( VarType(strArray) = V_ARRAY+V_STRING , "VarType(strArray) is not V_ARRAY+V_STRING" )
+ assert( VarType(objArray) = V_ARRAY+V_OBJECT , "VarType(objArray) is not V_ARRAY+V_OBJECT" )
+ 'assert( VarType(***Array) = V_ARRAY+V_ERROR , "VarType(***Array) is not V_ARRAY+V_ERROR" )
+ assert( VarType(boolArray) = V_ARRAY+V_BOOLEAN , "VarType(boolArray) is not V_ARRAY+V_BOOLEAN" )
+ assert( VarType(varArray) = V_ARRAY+V_VARIANT , "VarType(varArray) is not V_ARRAY+V_VARIANT" )
+ assert( VarType(byteArray) = V_ARRAY+V_BYTE , "VarType(byteArray) is not V_ARRAY+V_BYTE" )
+
+ If failedAssertion Then
+ doUnitTest = "test_vartype_method.vb fails" + messages
+ Exit Function
+ EndIf
+ doUnitTest = 1 ' All checks passed
End Function
+
+Sub DEV_TEST
+ MsgBox doUnitTest
+End Sub
+
+Dim failedAssertion As Boolean, messages As String
+
+Sub assert(expression As Boolean, errMessage As String)
+ If ( Not expression ) Then
+ messages = messages + Chr(10) + ErrMessage
+ failedAssertion = True
+ EndIf
+End Sub