diff options
author | Zdeněk Crhonek <zcrhonek@gmail.com> | 2017-02-27 22:37:05 +0100 |
---|---|---|
committer | Zdenek Crhonek <zcrhonek@gmail.com> | 2017-03-01 05:16:52 +0000 |
commit | 38f13e4dca802793143ebb3ff672c13243879368 (patch) | |
tree | 3957c600c50a03a67e9e905b4179d308c3097563 | |
parent | e7655fbd2bba02ae22fafaa82cc4b2b163ee91c0 (diff) |
add VBA functions tests - ABS,ARRAY, ASC, ATN, CBOOL
Change-Id: I8a0b8b833ba32b9d27773748b3bbd8bbc07d1959
Reviewed-on: https://gerrit.libreoffice.org/34696
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Zdenek Crhonek <zcrhonek@gmail.com>
-rw-r--r-- | basic/qa/cppunit/test_vba.cxx | 5 | ||||
-rw-r--r-- | basic/qa/vba_tests/abs.vb | 73 | ||||
-rw-r--r-- | basic/qa/vba_tests/array.vb | 100 | ||||
-rw-r--r-- | basic/qa/vba_tests/asc.vb | 74 | ||||
-rw-r--r-- | basic/qa/vba_tests/atn.vb | 80 | ||||
-rw-r--r-- | basic/qa/vba_tests/cbool.vb | 106 |
6 files changed, 438 insertions, 0 deletions
diff --git a/basic/qa/cppunit/test_vba.cxx b/basic/qa/cppunit/test_vba.cxx index cff9b066ad6b..94371ffb2c0a 100644 --- a/basic/qa/cppunit/test_vba.cxx +++ b/basic/qa/cppunit/test_vba.cxx @@ -56,6 +56,11 @@ void VBATest::testMiscVBAFunctions() "replace.vb", "stringplusdouble.vb", "chr.vb", + "abs.vb", + "array.vb", + "asc.vb", + "atn.vb", + "cbool.vb", #ifndef WIN32 // missing 64bit Currency marshalling. "win32compat.vb", // windows compatibility hooks. #endif diff --git a/basic/qa/vba_tests/abs.vb b/basic/qa/vba_tests/abs.vb new file mode 100644 index 000000000000..e60880c87451 --- /dev/null +++ b/basic/qa/vba_tests/abs.vb @@ -0,0 +1,73 @@ +Rem Attribute VBA_ModuleType=VBAModule +Option VBASupport 1 +Option Explicit +Dim passCount As Integer +Dim failCount As Integer +Dim result As String + +Function doUnitTest() As String +result = verify_testABS() +If failCount <> 0 And passCount > 0 Then + doUnitTest = result +Else + doUnitTest = "OK" +End If +End Function + + + +Function verify_testABS() As String + + passCount = 0 + failCount = 0 + + result = "Test Results" & Chr$(10) & "============" & Chr$(10) + + Dim testName As String + Dim TestDateTime As Date + Dim TestStr As String + Dim date1, date2 As Date 'variables for test + Dim nr1, nr2 As Double + + testName = "Test ABS function" + On Error GoTo errorHandler + + nr2 = 5 + nr1 = Abs(-5) + TestLog_ASSERT nr1 = nr2, "the return ABS is: " & nr1 + + nr2 = 5 + nr1 = Abs(5) + TestLog_ASSERT nr1 = nr2, "the return ABS is: " & nr1 + + nr2 = 21.7 + nr1 = Abs(-21.7) + TestLog_ASSERT nr1 = nr2, "the return ABS is: " & nr1 + + result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & "Tests failed: " & failCount & Chr$(10) + verify_testABS = result + + Exit Function +errorHandler: + TestLog_ASSERT (False), testName & ": hit error handler" +End Function + +Sub TestLog_ASSERT(assertion As Boolean, Optional testId As String, Optional testComment As String) + + If assertion = True Then + passCount = passCount + 1 + Else + Dim testMsg As String + If Not IsMissing(testId) Then + testMsg = testMsg + " : " + testId + End If + If Not IsMissing(testComment) And Not (testComment = "") Then + testMsg = testMsg + " (" + testComment + ")" + End If + + result = result & Chr$(10) & " Failed: " & testMsg + failCount = failCount + 1 + End If + +End Sub + diff --git a/basic/qa/vba_tests/array.vb b/basic/qa/vba_tests/array.vb new file mode 100644 index 000000000000..914cf441b557 --- /dev/null +++ b/basic/qa/vba_tests/array.vb @@ -0,0 +1,100 @@ +Rem Attribute VBA_ModuleType=VBAModule +Option VBASupport 1 +Option Explicit +Dim passCount As Integer +Dim failCount As Integer +Dim result As String +Type MyType + ax(3) As Integer + bx As Double +End Type + +Function doUnitTest() As String +result = verify_testARRAY() +If failCount <> 0 And passCount > 0 Then + doUnitTest = result +Else + doUnitTest = "OK" +End If +End Function + + + +Function verify_testARRAY() As String + + passCount = 0 + failCount = 0 + + result = "Test Results" & Chr$(10) & "============" & Chr$(10) + + Dim testName As String + Dim TestDateTime As Date + Dim TestStr As String + Dim date1, date2 As Date 'variables for test + Dim a, b, C As Variant + a = Array(10, 20, 30) + testName = "Test ARRAY function" + On Error GoTo errorHandler + + b = 10 + C = a(0) + TestLog_ASSERT b = C, "the return ARRAY is: " & C + + b = 20 + C = a(1) + TestLog_ASSERT b = C, "the return ARRAY is: " & C + + b = 30 + C = a(2) + TestLog_ASSERT b = C, "the return ARRAY is: " & C + + Dim MyWeek, MyDay + MyWeek = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") + + b = "Tue" + MyDay = MyWeek(1) ' MyDay contains "Tue". + TestLog_ASSERT b = MyDay, "the return ARRAY is: " & MyDay + + b = "Thu" + MyDay = MyWeek(3) ' MyDay contains "Thu". + TestLog_ASSERT b = MyDay, "the return ARRAY is: " & MyDay + +Dim mt As MyType + mt.ax(0) = 42 + mt.ax(1) = 43 + mt.bx = 3.14 + b = 43 + C = mt.ax(1) + TestLog_ASSERT b = C, "the return ARRAY is: " & C + + b = 3.14 + C = mt.bx + TestLog_ASSERT b = C, "the return ARRAY is: " & C + + result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & "Tests failed: " & failCount & Chr$(10) + verify_testARRAY = result + + Exit Function +errorHandler: + TestLog_ASSERT (False), testName & ": hit error handler" +End Function + +Sub TestLog_ASSERT(assertion As Boolean, Optional testId As String, Optional testComment As String) + + If assertion = True Then + passCount = passCount + 1 + Else + Dim testMsg As String + If Not IsMissing(testId) Then + testMsg = testMsg + " : " + testId + End If + If Not IsMissing(testComment) And Not (testComment = "") Then + testMsg = testMsg + " (" + testComment + ")" + End If + + result = result & Chr$(10) & " Failed: " & testMsg + failCount = failCount + 1 + End If + +End Sub + diff --git a/basic/qa/vba_tests/asc.vb b/basic/qa/vba_tests/asc.vb new file mode 100644 index 000000000000..050d8081a64c --- /dev/null +++ b/basic/qa/vba_tests/asc.vb @@ -0,0 +1,74 @@ +Rem Attribute VBA_ModuleType=VBAModule +Option VBASupport 1 +Option Explicit +Dim passCount As Integer +Dim failCount As Integer +Dim result As String + +Function doUnitTest() As String +result = verify_testASC() +If failCount <> 0 And passCount > 0 Then + doUnitTest = result +Else + doUnitTest = "OK" +End If +End Function + + + +Function verify_testASC() As String + + passCount = 0 + failCount = 0 + + result = "Test Results" & Chr$(10) & "============" & Chr$(10) + + Dim testName As String + Dim TestDateTime As Date + Dim TestStr As String + Dim date1, date2 As Date 'variables for test + Dim nr1, nr2 As Double + + testName = "Test ASC function" + On Error GoTo errorHandler + + nr2 = 65 + nr1 = Asc("A") + TestLog_ASSERT nr1 = nr2, "the return ASC is: " & nr1 + + nr2 = 97 + nr1 = Asc("a") + TestLog_ASSERT nr1 = nr2, "the return ASC is: " & nr1 + + + nr2 = 65 + nr1 = Asc("Apple") + TestLog_ASSERT nr1 = nr2, "the return ASC is: " & nr1 + + result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & "Tests failed: " & failCount & Chr$(10) + verify_testASC = result + + Exit Function +errorHandler: + TestLog_ASSERT (False), testName & ": hit error handler" +End Function + +Sub TestLog_ASSERT(assertion As Boolean, Optional testId As String, Optional testComment As String) + + If assertion = True Then + passCount = passCount + 1 + Else + Dim testMsg As String + If Not IsMissing(testId) Then + testMsg = testMsg + " : " + testId + End If + If Not IsMissing(testComment) And Not (testComment = "") Then + testMsg = testMsg + " (" + testComment + ")" + End If + + result = result & Chr$(10) & " Failed: " & testMsg + failCount = failCount + 1 + End If + +End Sub + diff --git a/basic/qa/vba_tests/atn.vb b/basic/qa/vba_tests/atn.vb new file mode 100644 index 000000000000..69cc31ba48cd --- /dev/null +++ b/basic/qa/vba_tests/atn.vb @@ -0,0 +1,80 @@ +Option VBASupport 1 +Option Explicit +Dim passCount As Integer +Dim failCount As Integer +Dim result As String + +Function doUnitTest() As String +result = verify_testATN() +If failCount <> 0 And passCount > 0 Then + doUnitTest = result +Else + doUnitTest = "OK" +End If +End Function + + + +Function verify_testATN() As String + + passCount = 0 + failCount = 0 + + result = "Test Results" & Chr$(10) & "============" & Chr$(10) + + Dim testName As String + Dim TestDateTime As Date + Dim TestStr As String + Dim date1, date2 As Date + Dim nr1, nr2 As Double + testName = "Test ATN function" + On Error GoTo errorHandler + + nr2 = 1.10714871779409 + nr1 = Atn(2) + TestLog_ASSERT Round(nr1, 14) = Round(nr2, 14), "the return ATN is: " & nr1 + + nr2 = 1.19166451926354 + nr1 = Atn(2.51) + TestLog_ASSERT Round(nr1, 14) = Round(nr2, 14), "the return ATN is: " & nr1 + + nr2 = -1.27229739520872 + nr1 = Atn(-3.25) + TestLog_ASSERT Round(nr1, 14) = Round(nr2, 14), "the return ATN is: " & nr1 + + nr2 = 1.56603445802574 + nr1 = Atn(210) + TestLog_ASSERT Round(nr1, 14) = Round(nr2, 14), "the return ATN is: " & nr1 + + nr2 = 0 + nr1 = Atn(0) + TestLog_ASSERT nr1 = nr2, "the return ATN is: " & nr1 + + result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & "Tests failed: " & failCount & Chr$(10) + verify_testATN = result + + Exit Function +errorHandler: + TestLog_ASSERT (False), testName & ": hit error handler" +End Function + +Sub TestLog_ASSERT(assertion As Boolean, Optional testId As String, Optional testComment As String) + + If assertion = True Then + passCount = passCount + 1 + Else + Dim testMsg As String + If Not IsMissing(testId) Then + testMsg = testMsg + " : " + testId + End If + If Not IsMissing(testComment) And Not (testComment = "") Then + testMsg = testMsg + " (" + testComment + ")" + End If + + result = result & Chr$(10) & " Failed: " & testMsg + failCount = failCount + 1 + End If + +End Sub + + diff --git a/basic/qa/vba_tests/cbool.vb b/basic/qa/vba_tests/cbool.vb new file mode 100644 index 000000000000..b5e7c709ee9c --- /dev/null +++ b/basic/qa/vba_tests/cbool.vb @@ -0,0 +1,106 @@ +Option VBASupport 1 +Rem Option VBASupport 1 'unREM in .vb file +Option Explicit +Dim passCount As Integer +Dim failCount As Integer +Dim result As String + +Function doUnitTest() As String +result = verify_testCBool() +If failCount <> 0 And passCount > 0 Then + doUnitTest = result +Else + doUnitTest = "OK" +End If +End Function + + + +Function verify_testCBool() As String + + passCount = 0 + failCount = 0 + + result = "Test Results" & Chr$(10) & "============" & Chr$(10) + + Dim testName As String + Dim TestDateTime As Date + Dim TestStr As String + Dim res2, res1 As Boolean + Dim a1, a2 As Integer + testName = "Test CBool function" + On Error GoTo errorHandler + + res2 = True + res1 = CBool(1) + TestLog_ASSERT res1 = res2, "the return CBool is: " & res1 + + res2 = False + res1 = CBool(1 = 2) + TestLog_ASSERT res1 = res2, "the return CBool is: " & res1 + + res2 = False + res1 = CBool(0) + TestLog_ASSERT res1 = res2, "the return CBool is: " & res1 + + res2 = True + res1 = CBool(21) + TestLog_ASSERT res1 = res2, "the return CBool is: " & res1 + + res2 = True + res1 = CBool("true") + TestLog_ASSERT res1 = res2, "the return CBool is: " & res1 + + res2 = False + res1 = CBool("false") + TestLog_ASSERT res1 = res2, "the return CBool is: " & res1 + + res2 = True + res1 = CBool("1") + TestLog_ASSERT res1 = res2, "the return CBool is: " & res1 + + res2 = True + res1 = CBool("-1") + TestLog_ASSERT res1 = res2, "the return CBool is: " & res1 + + res2 = False + res1 = CBool("0") + TestLog_ASSERT res1 = res2, "the return CBool is: " & res1 + + res2 = False + a1 = 1: a2 = 10 + res1 = CBool(a1 = a2) + TestLog_ASSERT res1 = res2, "the return CBool is: " & res1 + + res2 = True + a1 = 10: a2 = 10 + res1 = CBool(a1 = a2) + TestLog_ASSERT res1 = res2, "the return CBool is: " & res1 + + result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & "Tests failed: " & failCount & Chr$(10) + verify_testCBool = result + + Exit Function +errorHandler: + TestLog_ASSERT (False), testName & ": hit error handler" +End Function + +Sub TestLog_ASSERT(assertion As Boolean, Optional testId As String, Optional testComment As String) + + If assertion = True Then + passCount = passCount + 1 + Else + Dim testMsg As String + If Not IsMissing(testId) Then + testMsg = testMsg + " : " + testId + End If + If Not IsMissing(testComment) And Not (testComment = "") Then + testMsg = testMsg + " (" + testComment + ")" + End If + + result = result & Chr$(10) & " Failed: " & testMsg + failCount = failCount + 1 + End If + +End Sub + |