VBA tests - HEX, HOUR, IIF, INSTR test cases
Change-Id: Ib9e05dcfbd72f56cb3b5fb4e4760f868c008c7ac
Reviewed-on: https://gerrit.libreoffice.org/36315
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Zdenek Crhonek <zcrhonek@gmail.com>
diff --git a/basic/qa/cppunit/test_vba.cxx b/basic/qa/cppunit/test_vba.cxx
index 5ea598a..db6267f 100644
--- a/basic/qa/cppunit/test_vba.cxx
+++ b/basic/qa/cppunit/test_vba.cxx
@@ -78,7 +78,11 @@ void VBATest::testMiscVBAFunctions()
"error.vb",
"exp.vb",
"fix.vb",
"hex.vb",
"hour.vb",
"formatnumber.vb",
"iif.vb",
"instr.vb",
#ifndef WIN32 // missing 64bit Currency marshalling.
"win32compat.vb", // windows compatibility hooks.
#endif
diff --git a/basic/qa/vba_tests/hex.vb b/basic/qa/vba_tests/hex.vb
new file mode 100644
index 0000000..7958eef
--- /dev/null
+++ b/basic/qa/vba_tests/hex.vb
@@ -0,0 +1,87 @@
Option VBASupport 1
Option Explicit
Dim passCount As Integer
Dim failCount As Integer
Dim result As String
Function doUnitTest() As String
result = verify_testHex()
If failCount <> 0 And passCount > 0 Then
doUnitTest = result
Else
doUnitTest = "OK"
End If
End Function
Function verify_testHex() 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
testName = "Test Hex function"
On Error GoTo errorHandler
date2 = "9"
date1 = Hex(9)
TestLog_ASSERT date1 = date2, "the return Hex is: " & date1
date2 = "9"
date1 = Hex(9)
TestLog_ASSERT date1 = date2, "the return Hex is: " & date1
date2 = "A"
date1 = Hex(10)
TestLog_ASSERT date1 = date2, "the return Hex is: " & date1
date2 = "10"
date1 = Hex(16)
TestLog_ASSERT date1 = date2, "the return Hex is: " & date1
date2 = "FF"
date1 = Hex(255)
TestLog_ASSERT date1 = date2, "the return Hex is: " & date1
date2 = "100"
date1 = Hex(256)
TestLog_ASSERT date1 = date2, "the return Hex is: " & date1
date2 = "1CB"
date1 = Hex(459)
TestLog_ASSERT date1 = date2, "the return Hex is: " & date1
result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & "Tests failed: " & failCount & Chr$(10)
verify_testHex = 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/hour.vb b/basic/qa/vba_tests/hour.vb
new file mode 100644
index 0000000..587b36a
--- /dev/null
+++ b/basic/qa/vba_tests/hour.vb
@@ -0,0 +1,73 @@
Option VBASupport 1
Option Explicit
Dim passCount As Integer
Dim failCount As Integer
Dim result As String
Function doUnitTest() As String
result = verify_testHour()
If failCount <> 0 And passCount > 0 Then
doUnitTest = result
Else
doUnitTest = "OK"
End If
End Function
Function verify_testHour() 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, myTime
testName = "Test Hour function"
On Error GoTo errorHandler
myTime = "6:25:39 AM"
date2 = 6
date1 = Hour(myTime)
TestLog_ASSERT date1 = date2, "the return Hour is: " & date1
myTime = "6:25:39 PM"
date2 = 18
date1 = Hour(myTime)
TestLog_ASSERT date1 = date2, "the return Hour is: " & date1
myTime = "06:25:39 AM"
date2 = 6
date1 = Hour(myTime)
TestLog_ASSERT date1 = date2, "the return Hour is: " & date1
result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & "Tests failed: " & failCount & Chr$(10)
verify_testHour = 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/iif.vb b/basic/qa/vba_tests/iif.vb
new file mode 100644
index 0000000..4ddbef2
--- /dev/null
+++ b/basic/qa/vba_tests/iif.vb
@@ -0,0 +1,71 @@
Option VBASupport 1
Option Explicit
Dim passCount As Integer
Dim failCount As Integer
Dim result As String
Function doUnitTest() As String
result = verify_testIIf()
If failCount <> 0 And passCount > 0 Then
doUnitTest = result
Else
doUnitTest = "OK"
End If
End Function
Function verify_testIIf() 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, testnr
testName = "Test IIf function"
On Error GoTo errorHandler
date2 = "it is true"
date1 = IIf(True, "it is true", "it is false")
TestLog_ASSERT date1 = date2, "the return IIf is: " & date1
date2 = "it is false"
date1 = IIf(False, "It is true", "it is false")
TestLog_ASSERT date1 = date2, "the return IIf is: " & date1
testnr = 1001
date2 = "Large"
date1 = IIf(testnr > 1000, "Large", "Small")
TestLog_ASSERT date1 = date2, "the return IIf is: " & date1
result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & "Tests failed: " & failCount & Chr$(10)
verify_testIIf = 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/instr.vb b/basic/qa/vba_tests/instr.vb
new file mode 100644
index 0000000..29f3524
--- /dev/null
+++ b/basic/qa/vba_tests/instr.vb
@@ -0,0 +1,88 @@
Option VBASupport 1
Option Explicit
Dim passCount As Integer
Dim failCount As Integer
Dim result As String
Function doUnitTest() As String
result = verify_testInStr()
If failCount <> 0 And passCount > 0 Then
doUnitTest = result
Else
doUnitTest = "OK"
End If
End Function
Function verify_testInStr() 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, SearchString, SearchChar
testName = "Test InStr function"
On Error GoTo errorHandler
date2 = 5
date1 = InStr(1, "somemoretext", "more")
TestLog_ASSERT date1 = date2, "the return InStr is: " & date1
date2 = 5
date1 = InStr("somemoretext", "more")
TestLog_ASSERT date1 = date2, "the return InStr is: " & date1
date2 = 1
date1 = InStr("somemoretext", "somemoretext")
TestLog_ASSERT date1 = date2, "the return InStr is: " & date1
date2 = 0
date1 = InStr("somemoretext", "nothing")
TestLog_ASSERT date1 = date2, "the return InStr is: " & date1
SearchString = "XXpXXpXXPXXP" ' String to search in.
SearchChar = "P" ' Search for "P".
date2 = 6
date1 = InStr(4, SearchString, SearchChar, 1)
TestLog_ASSERT date1 = date2, "the return InStr is: " & date1
date2 = 9
date1 = InStr(1, SearchString, SearchChar, 0)
TestLog_ASSERT date1 = date2, "the return InStr is: " & date1
date2 = 0
date1 = InStr(1, SearchString, "W")
TestLog_ASSERT date1 = date2, "the return InStr is: " & date1
result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & "Tests failed: " & failCount & Chr$(10)
verify_testInStr = 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