basic/qa/cppunit/basic_coverage.cxx      |    2 
 basic/qa/cppunit/basictest.cxx           |   10 -
 basic/qa/cppunit/basictest.hxx           |    4 
 basic/qa/cppunit/test_vba.cxx            |    6 
 basic/qa/vba_tests/Err.Raise.vb          |   67 ++-------
 basic/qa/vba_tests/_test_asserts.vb      |   51 +++++++
 basic/qa/vba_tests/abs.vb                |   52 +------
 basic/qa/vba_tests/array.vb              |   61 ++------
 basic/qa/vba_tests/asc.vb                |   53 +------
 basic/qa/vba_tests/atn.vb                |   57 +------
 basic/qa/vba_tests/bytearraystring.vb    |   54 +------
 basic/qa/vba_tests/cbool.vb              |   68 ++-------
 basic/qa/vba_tests/cdate.vb              |   52 +------
 basic/qa/vba_tests/cdbl.vb               |   55 +------
 basic/qa/vba_tests/cdec.vb               |   66 ++-------
 basic/qa/vba_tests/choose.vb             |   60 +-------
 basic/qa/vba_tests/chr.vb                |   53 +------
 basic/qa/vba_tests/cint.vb               |   70 ++-------
 basic/qa/vba_tests/clng.vb               |   65 ++------
 basic/qa/vba_tests/constants.vb          |   48 +-----
 basic/qa/vba_tests/cos.vb                |   54 +------
 basic/qa/vba_tests/csng.vb               |   52 +------
 basic/qa/vba_tests/cstr.vb               |   50 +-----
 basic/qa/vba_tests/cvdate.vb             |   56 +------
 basic/qa/vba_tests/cverr.vb              |   68 ++-------
 basic/qa/vba_tests/dateadd.vb            |   70 ++-------
 basic/qa/vba_tests/datediff.vb           |   86 +++--------
 basic/qa/vba_tests/datepart.vb           |   65 ++------
 basic/qa/vba_tests/dateserial.vb         |   51 +------
 basic/qa/vba_tests/datevalue.vb          |   46 +-----
 basic/qa/vba_tests/day.vb                |   48 +-----
 basic/qa/vba_tests/enum.vb               |   52 +------
 basic/qa/vba_tests/error.vb              |   50 +-----
 basic/qa/vba_tests/exp.vb                |   48 +-----
 basic/qa/vba_tests/fix.vb                |   52 +------
 basic/qa/vba_tests/format.vb             |  225 ++++++++++++-------------------
 basic/qa/vba_tests/formatnumber.vb       |   58 +------
 basic/qa/vba_tests/hex.vb                |   61 +-------
 basic/qa/vba_tests/hour.vb               |   52 +------
 basic/qa/vba_tests/iif.vb                |   52 +------
 basic/qa/vba_tests/instr.vb              |   60 +-------
 basic/qa/vba_tests/instrrev.vb           |   60 +-------
 basic/qa/vba_tests/int.vb                |   56 +------
 basic/qa/vba_tests/isarray.vb            |   52 +------
 basic/qa/vba_tests/isdate.vb             |   52 +------
 basic/qa/vba_tests/isempty.vb            |   52 +------
 basic/qa/vba_tests/iserror.vb            |   50 +-----
 basic/qa/vba_tests/ismissing.vb          |  132 +++++++-----------
 basic/qa/vba_tests/isnull.vb             |   50 +-----
 basic/qa/vba_tests/isnumeric.vb          |   60 +-------
 basic/qa/vba_tests/isobject.vb           |   50 +-----
 basic/qa/vba_tests/join.vb               |   54 +------
 basic/qa/vba_tests/lbound.vb             |   51 +------
 basic/qa/vba_tests/lcase.vb              |   55 +------
 basic/qa/vba_tests/left.vb               |   52 +------
 basic/qa/vba_tests/len.vb                |   53 +------
 basic/qa/vba_tests/log.vb                |   52 +------
 basic/qa/vba_tests/ltrim.vb              |   48 +-----
 basic/qa/vba_tests/mid.vb                |   53 +------
 basic/qa/vba_tests/minute.vb             |   48 +-----
 basic/qa/vba_tests/month.vb              |   57 +------
 basic/qa/vba_tests/monthname.vb          |   52 +------
 basic/qa/vba_tests/oct.vb                |   52 +------
 basic/qa/vba_tests/optional_paramters.vb |  132 +++++++-----------
 basic/qa/vba_tests/partition.vb          |   55 +------
 basic/qa/vba_tests/qbcolor.vb            |   64 ++------
 basic/qa/vba_tests/rate.vb               |   59 +-------
 basic/qa/vba_tests/replace.vb            |   64 ++------
 basic/qa/vba_tests/rgb.vb                |   53 +------
 basic/qa/vba_tests/right.vb              |   52 +------
 basic/qa/vba_tests/rtrim.vb              |   48 +-----
 basic/qa/vba_tests/second.vb             |   50 +-----
 basic/qa/vba_tests/sgn.vb                |   56 +------
 basic/qa/vba_tests/sin.vb                |   48 +-----
 basic/qa/vba_tests/space.vb              |   48 +-----
 basic/qa/vba_tests/sqr.vb                |   48 +-----
 basic/qa/vba_tests/str.vb                |   55 +------
 basic/qa/vba_tests/strcomp.vb            |   64 ++------
 basic/qa/vba_tests/strconv.vb            |   62 ++------
 basic/qa/vba_tests/string.vb             |   52 +------
 basic/qa/vba_tests/stringplusdouble.vb   |  118 +++++-----------
 basic/qa/vba_tests/strreverse.vb         |   54 +------
 basic/qa/vba_tests/switch.vb             |   52 +------
 basic/qa/vba_tests/timeserial.vb         |   52 +------
 basic/qa/vba_tests/timevalue.vb          |   46 +-----
 basic/qa/vba_tests/trim.vb               |   48 +-----
 basic/qa/vba_tests/typename.vb           |   68 ++-------
 basic/qa/vba_tests/ubound.vb             |   52 +------
 basic/qa/vba_tests/ucase.vb              |   48 +-----
 basic/qa/vba_tests/val.vb                |   64 ++------
 basic/qa/vba_tests/vartype.vb            |   58 +------
 basic/qa/vba_tests/weekday.vb            |   59 +-------
 basic/qa/vba_tests/weekdayname.vb        |   60 +-------
 basic/qa/vba_tests/win32compat.vb        |   59 +-------
 basic/qa/vba_tests/win32compatb.vb       |   58 +------
 basic/qa/vba_tests/year.vb               |   50 +-----
 96 files changed, 1327 insertions(+), 4180 deletions(-)

New commits:
commit 73ba462935a217a2b2d5ad296679d54f42f4b1ba
Author:     George Bateman <george.batema...@gmail.com>
AuthorDate: Wed Dec 16 22:28:02 2020 +0000
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Sat Dec 19 23:40:13 2020 +0100

    tdf#84098 kill copy+paste in VBA tests
    
    Move repeated code into _test_asserts.vb
    
    Change-Id: Idfe124a8dbab4925309fa5f1322e0cce5f097b7b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107860
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/basic/qa/cppunit/basic_coverage.cxx 
b/basic/qa/cppunit/basic_coverage.cxx
index 0dfc7d94e780..effda584dee7 100644
--- a/basic/qa/cppunit/basic_coverage.cxx
+++ b/basic/qa/cppunit/basic_coverage.cxx
@@ -70,7 +70,7 @@ void Coverage::run_test(const OUString& sFileURL)
     m_sCurrentTest = sFileURL;
     bool bResult = false;
     MacroSnippet testMacro;
-    testMacro.LoadSourceFromFile( sFileURL );
+    testMacro.LoadSourceFromFile("TestModule", sFileURL);
     testMacro.Compile();
     if( !testMacro.HasError() )
     {
diff --git a/basic/qa/cppunit/basictest.cxx b/basic/qa/cppunit/basictest.cxx
index f1e169ab8acc..414f51a39adb 100644
--- a/basic/qa/cppunit/basictest.cxx
+++ b/basic/qa/cppunit/basictest.cxx
@@ -21,16 +21,16 @@ void MacroSnippet::InitSnippet()
     StarBASIC::SetGlobalErrorHdl( LINK( this, MacroSnippet, BasicErrorHdl ) );
 }
 
-void MacroSnippet::MakeModule( const OUString& sSource )
+void MacroSnippet::MakeModule(const OUString& sName, const OUString& sSource)
 {
-    mpMod = mpBasic->MakeModule( "TestModule", sSource );
+    mpMod = mpBasic->MakeModule(sName, sSource);
 }
 
 MacroSnippet::MacroSnippet( const OUString& sSource )
     : mbError(false)
 {
     InitSnippet();
-    MakeModule( sSource );
+    MakeModule("TestModule", sSource);
 }
 
 MacroSnippet::MacroSnippet()
@@ -39,7 +39,7 @@ MacroSnippet::MacroSnippet()
     InitSnippet();
 }
 
-void MacroSnippet::LoadSourceFromFile( const OUString& sMacroFileURL )
+void MacroSnippet::LoadSourceFromFile(const OUString& sModuleName, const 
OUString& sMacroFileURL)
 {
     OUString sSource;
     fprintf(stderr,"loadSource opening macro file %s\n", OUStringToOString( 
sMacroFileURL, RTL_TEXTENCODING_UTF8 ).getStr() );
@@ -66,7 +66,7 @@ void MacroSnippet::LoadSourceFromFile( const OUString& 
sMacroFileURL )
         }
     }
     CPPUNIT_ASSERT_MESSAGE( "Source is empty", ( sSource.getLength() > 0 ) );
-    MakeModule( sSource );
+    MakeModule(sModuleName, sSource);
 }
 
 SbxVariableRef MacroSnippet::Run( const css::uno::Sequence< css::uno::Any >& 
rArgs )
diff --git a/basic/qa/cppunit/basictest.hxx b/basic/qa/cppunit/basictest.hxx
index c0afeb5bd18c..1901492bcfab 100644
--- a/basic/qa/cppunit/basictest.hxx
+++ b/basic/qa/cppunit/basictest.hxx
@@ -29,13 +29,13 @@ private:
     StarBASICRef mpBasic;
 
     void InitSnippet();
-    void MakeModule(const OUString& sSource);
+    void MakeModule(const OUString& sName, const OUString& sSource);
 
 public:
     explicit MacroSnippet(const OUString& sSource);
     MacroSnippet();
 
-    void LoadSourceFromFile(const OUString& sMacroFileURL);
+    void LoadSourceFromFile(const OUString& sName, const OUString& 
sMacroFileURL);
 
     SbxVariableRef Run(const css::uno::Sequence<css::uno::Any>& rArgs);
 
diff --git a/basic/qa/cppunit/test_vba.cxx b/basic/qa/cppunit/test_vba.cxx
index 235bcc2cf7b6..bbc0b97d98d7 100644
--- a/basic/qa/cppunit/test_vba.cxx
+++ b/basic/qa/cppunit/test_vba.cxx
@@ -146,6 +146,7 @@ void VBATest::testMiscVBAFunctions()
         "win32compatb.vb" // same methods, different signatures.
     };
     OUString sMacroPathURL = 
m_directories.getURLFromSrc("/basic/qa/vba_tests/");
+    OUString sMacroUtilsURL = sMacroPathURL + "_test_asserts.vb";
     // Some test data expects the uk locale
     LanguageTag aLocale(LANGUAGE_ENGLISH_UK);
     SvtSysLocaleOptions aLocalOptions;
@@ -157,7 +158,8 @@ void VBATest::testMiscVBAFunctions()
                            + OUString::createFromAscii( macroSource[ i ] );
 
         MacroSnippet myMacro;
-        myMacro.LoadSourceFromFile( sMacroURL );
+        myMacro.LoadSourceFromFile("TestUtilModule", sMacroUtilsURL);
+        myMacro.LoadSourceFromFile("TestModule", sMacroURL);
         SbxVariableRef pReturn = myMacro.Run();
         CPPUNIT_ASSERT_MESSAGE("No return variable huh?", pReturn.is());
         fprintf(stderr, "macro result for %s\n", macroSource[i]);
@@ -234,7 +236,7 @@ void VBATest::testMiscOLEStuff()
         OUString sMacroURL = sMacroPathURL
                            + OUString::createFromAscii( macroSource[ i ] );
         MacroSnippet myMacro;
-        myMacro.LoadSourceFromFile( sMacroURL );
+        myMacro.LoadSourceFromFile("TestModule", sMacroURL);
         SbxVariableRef pReturn = myMacro.Run( aArgs );
         CPPUNIT_ASSERT_MESSAGE("No return variable huh?", pReturn.is());
         fprintf(stderr, "macro result for %s\n", macroSource[i]);
diff --git a/basic/qa/vba_tests/Err.Raise.vb b/basic/qa/vba_tests/Err.Raise.vb
index fa04856cc5b5..e04d2cfd5916 100644
--- a/basic/qa/vba_tests/Err.Raise.vb
+++ b/basic/qa/vba_tests/Err.Raise.vb
@@ -8,79 +8,48 @@
 
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest()
     ''' This routine is QA/…/test_vba.cxx main entry point '''
-    passCount = 0 : failCount = 0
     Const MIN_ERR = &hFFFFFFFF : Const MAX_ERR = 2^31-1
 
     ''' Raise one-to-many User-Defined Errors as signed Int32 '''
-    result = "Test Results" & vbNewLine & "============" & vbNewLine
+    TestUtilModule.TestInit()
     '                  test_Description     | Err # | Err_Source     | 
Err_Description
     Call TestErrRaise("MAXimum error value", MAX_ERR, "doUnitTest.vb", "Custom 
Error Maximum value")
     Call TestErrRaise("Positive custom error",  1789, ""             , 
"User-Defined Error Number")
     Call TestErrRaise("Negative custom error", -1793, "doUnitTest.vb", 
"Negative User-Defined Error Number")
     Call TestErrRaise("MINimum error value", MIN_ERR, ""             , "Custom 
Error Minimum value")
 
-    If failCount <> 0 Or passCount = 0 Then
-        doUnitTest = result
-    Else
-        doUnitTest = "OK"
-    End If
+    TestUtilModule.TestEnd()
+    doUnitTest = TestUtilModule.GetResult()
 End Function
 
 Sub TestErrRaise(TestName As String, CurErrNo As Long, CurErrSource As String, 
CurErrDescription As String)
-    result = result & vbNewLine & TestName
     Dim origPassCount As Integer, origFailCount As Integer
-    origPassCount = passCount
-    origFailCount = failCount
 
 try: On Error Goto catch
+    Dim errorHandled As Integer
     Err.Raise(CurErrNo, CurErrSource, CurErrDescription, "", "")
 
-    'result = result & vbNewLine & "Testing after error handler"
-    TestLog_ASSERT (passCount + failCount) > (origPassCount + origFailCount), 
TestName, "error handler did not execute!"
-    TestLog_ASSERT Erl = 0, TestName, "Erl = " & Erl
-    TestLog_ASSERT Err = 0, TestName, "Err = " & Err
-    TestLog_ASSERT Error = "", TestName, "Error = " & Error
-    TestLog_ASSERT Err.Description = "", "Err.Description  reset", 
"Err.Description = "& Err.Description
-    TestLog_ASSERT Err.Number = 0, "Err.Number reset", "Err.Number = " & 
Err.Number
-    TestLog_ASSERT Err.Source = "", "Err.Source reset", "Err.Source = " & 
Err.Source
+    TestUtilModule.AssertTrue(errorHandled = 1, TestName, "error handler did 
not execute!")
+    TestUtilModule.AssertTrue(Erl = 0, TestName, "Erl = " & Erl)
+    TestUtilModule.AssertTrue(Err = 0, TestName, "Err = " & Err)
+    TestUtilModule.AssertTrue(Error = "", TestName, "Error = " & Error)
+    TestUtilModule.AssertTrue(Err.Description = "", "Err.Description  reset", 
"Err.Description = "& Err.Description)
+    TestUtilModule.AssertTrue(Err.Number = 0, "Err.Number reset", "Err.Number 
= " & Err.Number)
+    TestUtilModule.AssertTrue(Err.Source = "", "Err.Source reset", "Err.Source 
= " & Err.Source)
     Exit Sub
 
 catch:
-    'result = result & vbNewLine & "Testing in error handler"
-    TestLog_ASSERT Err.Number = CurErrNo, "Err.Number failure", "Err.Number = 
" & Err.Number
-    TestLog_ASSERT Err.Source = CurErrSource, "Err.Source failure", 
"Err.Source = " & Err.Source
-    TestLog_ASSERT Err.Description = CurErrDescription, "Err.Description 
failure", "Err.Description = " & Err.Description
+    TestUtilModule.AssertTrue(Err.Number = CurErrNo, "Err.Number failure", 
"Err.Number = " & Err.Number)
+    TestUtilModule.AssertTrue(Err.Source = CurErrSource, "Err.Source failure", 
"Err.Source = " & Err.Source)
+    TestUtilModule.AssertTrue(Err.Description = CurErrDescription, 
"Err.Description failure", "Err.Description = " & Err.Description)
 
-    TestLog_ASSERT Erl = 42, "line# failure", "Erl = " & Erl ' WATCH OUT for 
HARDCODED LINE # HERE !
-    TestLog_ASSERT Err = CurErrNo, "Err# failure", "Err = " & Err
-    TestLog_ASSERT Error = CurErrDescription, "Error description failure", 
"Error$ = " & Error$
+    TestUtilModule.AssertTrue(Erl = 33, "line# failure", "Erl = " & Erl ' 
WATCH OUT for HARDCODED LINE # HERE !)
+    TestUtilModule.AssertTrue(Err = CurErrNo, "Err# failure", "Err = " & Err)
+    TestUtilModule.AssertTrue(Error = CurErrDescription, "Error description 
failure", "Error$ = " & Error$)
 
+    errorHandled = 1
     Resume Next ' Err object properties reset from here …
 End Sub
-
-Sub DEV_TEST : doUnitTest : MsgBox result : End Sub
-
-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 & vbNewLine & "Failed: " & testMsg
-        failCount = failCount + 1
-    End If
-
-End Sub
diff --git a/basic/qa/vba_tests/_test_asserts.vb 
b/basic/qa/vba_tests/_test_asserts.vb
new file mode 100644
index 000000000000..395aafb6f2f7
--- /dev/null
+++ b/basic/qa/vba_tests/_test_asserts.vb
@@ -0,0 +1,51 @@
+Option VBASupport 1
+
+Dim passCount As Integer
+Dim failCount As Integer
+Dim result As String
+
+Function GetResult()
+    If passCount <> 0 and failCount = 0 Then
+        GetResult = "OK"
+    Else
+        GetResult = result
+    End If
+End Function
+
+Sub TestInit()
+    passCount = 0
+    failCount = 0
+    result = result & "Test Results" & Chr$(10) & "============" & Chr$(10)
+End Sub
+
+Sub TestEnd()
+    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
+End Sub
+
+Sub AssertTrue(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
+
+Sub AssertEqual(actual As Variant, expected As Variant, testName As String)
+    If expected = actual Then
+        passCount = passCount + 1
+    Else
+        result = result & Chr$(10) & " Failed: " & testName & " returned " & 
actual & ", expected " & expected
+        failCount = failCount + 1
+    End If
+End Sub
diff --git a/basic/qa/vba_tests/abs.vb b/basic/qa/vba_tests/abs.vb
index bc9516fb606f..f38baf149e60 100644
--- a/basic/qa/vba_tests/abs.vb
+++ b/basic/qa/vba_tests/abs.vb
@@ -1,27 +1,15 @@
 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 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testABS
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testABS()
 
-
-Function verify_testABS() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim nr1, nr2 As Double
@@ -31,40 +19,20 @@ Function verify_testABS() As String
 
     nr2 = 5
     nr1 = Abs(-5)
-    TestLog_ASSERT nr1 = nr2, "the return ABS is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return ABS is: " & nr1)
 
     nr2 = 5
     nr1 = Abs(5)
-    TestLog_ASSERT nr1 = nr2, "the return ABS is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return ABS is: " & nr1)
 
     nr2 = 21.7
     nr1 = Abs(-21.7)
-    TestLog_ASSERT nr1 = nr2, "the return ABS is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return ABS is: " & nr1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testABS = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/array.vb b/basic/qa/vba_tests/array.vb
index 63f39bed7178..0390e77c37ec 100644
--- a/basic/qa/vba_tests/array.vb
+++ b/basic/qa/vba_tests/array.vb
@@ -1,31 +1,20 @@
 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 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testARRAY
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testARRAY()
 
-
-Function verify_testARRAY() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim a, b, C As Variant
@@ -35,26 +24,26 @@ Function verify_testARRAY() As String
 
     b = 10
     C = a(0)
-    TestLog_ASSERT b = C, "the return ARRAY is: " & C
+    TestUtilModule.AssertTrue(b = C, "the return ARRAY is: " & C)
 
     b = 20
     C = a(1)
-    TestLog_ASSERT b = C, "the return ARRAY is: " & C
+    TestUtilModule.AssertTrue(b = C, "the return ARRAY is: " & C)
 
     b = 30
     C = a(2)
-    TestLog_ASSERT b = C, "the return ARRAY is: " & C
+    TestUtilModule.AssertTrue(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
+    TestUtilModule.AssertTrue(b = MyDay, "the return ARRAY is: " & MyDay)
 
     b = "Thu"
         MyDay = MyWeek(3)   ' MyDay contains "Thu".
-    TestLog_ASSERT b = MyDay, "the return ARRAY is: " & MyDay
+    TestUtilModule.AssertTrue(b = MyDay, "the return ARRAY is: " & MyDay)
 
 Dim mt As MyType
     mt.ax(0) = 42
@@ -62,36 +51,16 @@ Dim mt As MyType
     mt.bx = 3.14
      b = 43
         C = mt.ax(1)
-    TestLog_ASSERT b = C, "the return ARRAY is: " & C
+    TestUtilModule.AssertTrue(b = C, "the return ARRAY is: " & C)
 
     b = 3.14
     C = mt.bx
-    TestLog_ASSERT b = C, "the return ARRAY is: " & C
+    TestUtilModule.AssertTrue(b = C, "the return ARRAY is: " & C)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testARRAY = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/asc.vb b/basic/qa/vba_tests/asc.vb
index 813abe9f859d..3ac2ec69987e 100644
--- a/basic/qa/vba_tests/asc.vb
+++ b/basic/qa/vba_tests/asc.vb
@@ -1,27 +1,15 @@
 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 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testASC
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testASC()
 
-
-Function verify_testASC() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim nr1, nr2 As Double
@@ -31,41 +19,20 @@ Function verify_testASC() As String
 
     nr2 = 65
     nr1 = Asc("A")
-    TestLog_ASSERT nr1 = nr2, "the return ASC is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return ASC is: " & nr1)
 
     nr2 = 97
     nr1 = Asc("a")
-    TestLog_ASSERT nr1 = nr2, "the return ASC is: " & nr1
-
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return ASC is: " & nr1)
 
     nr2 = 65
     nr1 = Asc("Apple")
-    TestLog_ASSERT nr1 = nr2, "the return ASC is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return ASC is: " & nr1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testASC = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/atn.vb b/basic/qa/vba_tests/atn.vb
index 145584ee6bd2..46d49c3e12e3 100644
--- a/basic/qa/vba_tests/atn.vb
+++ b/basic/qa/vba_tests/atn.vb
@@ -1,26 +1,14 @@
 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 or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testATN
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testATN()
 
-
-Function verify_testATN() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim nr1, nr2 As Double
@@ -29,49 +17,28 @@ Function verify_testATN() As String
 
     nr2 = 1.10714871779409
     nr1 = Atn(2)
-    TestLog_ASSERT Round(nr1, 14) = Round(nr2, 14), "the return ATN is: " & nr1
+    TestUtilModule.AssertTrue(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
+    TestUtilModule.AssertTrue(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
+    TestUtilModule.AssertTrue(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
+    TestUtilModule.AssertTrue(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
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return ATN is: " & nr1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testATN = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
-
diff --git a/basic/qa/vba_tests/bytearraystring.vb 
b/basic/qa/vba_tests/bytearraystring.vb
index c404b6e9a9a9..2a1bc4da63d5 100644
--- a/basic/qa/vba_tests/bytearraystring.vb
+++ b/basic/qa/vba_tests/bytearraystring.vb
@@ -1,68 +1,36 @@
 Option VBASupport 1
 Option Explicit
 
-Dim passCount As Integer
-Dim failCount As Integer
-Dim displayMessage As Boolean
-Dim thisTest As String
-
 Function doUnitTest() As String
-Dim result As String
-result = verify_ByteArrayString()
-If failCount <> 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+    verify_ByteArrayString
+    doUnitTest = TestUtilModule.GetResult()
 End Function
 
-Sub Main()
-MsgBox verify_ByteArrayString()
-End Sub
-
-Function verify_ByteArrayString() As String
-    passCount = 0
-    failCount = 0
-    Dim result As String
-
+Sub verify_ByteArrayString()
     Dim testName As String
     Dim MyString As String
     Dim x() As Byte
     Dim count As Integer
     testName = "Test the conversion between bytearray and string"
 
-
     On Error GoTo errorHandler
 
     MyString = "abc"
     x = MyString ' string -> byte array
 
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     count = UBound(x) ' 6 byte
 
     ' test bytes in string
-    result = result + updateResultString("test1 numbytes ", (count), 5)
-
+    TestUtilModule.AssertEqual((count), 5, "test1 numbytes ")
 
     MyString = x 'byte array -> string
-    result = result + updateResultString("test assign byte array to string", 
MyString, "abc")
+    TestUtilModule.AssertEqual(MyString, "abc", "test assign byte array to 
string")
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_ByteArrayString = result
-    Exit Function
+    TestUtilModule.TestEnd
+    Exit Sub
 errorHandler:
-    failCount = failCount + 1
-    verify_ByteArrayString = "Error Handler hit"
-End Function
-
-Function updateResultString(testDesc As String, actual As String, expected As 
String) As String
-Dim result As String
-If actual <> expected Then
-    result = result & Chr$(10) & testDesc & " Failed: expected " & expected & 
" got " & actual
-    failCount = failCount + 1
-Else
-    passCount = passCount + 1
-End If
-updateResultString = result
-End Function
+    TestUtilModule.AssertTrue(False, "ERROR", "#"& Str(Err.Number) &" at 
line"& Str(Erl) &" - "& Error$)
+    TestUtilModule.TestEnd
+End Sub
diff --git a/basic/qa/vba_tests/cbool.vb b/basic/qa/vba_tests/cbool.vb
index cf3b8224d0e7..842c494e742e 100644
--- a/basic/qa/vba_tests/cbool.vb
+++ b/basic/qa/vba_tests/cbool.vb
@@ -1,27 +1,15 @@
 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 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCBool
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testCBool()
 
-
-Function verify_testCBool() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim res2, res1 As Boolean
@@ -31,74 +19,54 @@ Function verify_testCBool() As String
 
     res2 = True
     res1 = CBool(1)
-    TestLog_ASSERT res1 = res2, "the return CBool is: " & res1
+    TestUtilModule.AssertTrue(res1 = res2, "the return CBool is: " & res1)
 
     res2 = False
     res1 = CBool(1 = 2)
-    TestLog_ASSERT res1 = res2, "the return CBool is: " & res1
+    TestUtilModule.AssertTrue(res1 = res2, "the return CBool is: " & res1)
 
     res2 = False
     res1 = CBool(0)
-    TestLog_ASSERT res1 = res2, "the return CBool is: " & res1
+    TestUtilModule.AssertTrue(res1 = res2, "the return CBool is: " & res1)
 
     res2 = True
     res1 = CBool(21)
-    TestLog_ASSERT res1 = res2, "the return CBool is: " & res1
+    TestUtilModule.AssertTrue(res1 = res2, "the return CBool is: " & res1)
 
     res2 = True
     res1 = CBool("true")
-    TestLog_ASSERT res1 = res2, "the return CBool is: " & res1
+    TestUtilModule.AssertTrue(res1 = res2, "the return CBool is: " & res1)
 
     res2 = False
     res1 = CBool("false")
-    TestLog_ASSERT res1 = res2, "the return CBool is: " & res1
+    TestUtilModule.AssertTrue(res1 = res2, "the return CBool is: " & res1)
 
     res2 = True
     res1 = CBool("1")
-    TestLog_ASSERT res1 = res2, "the return CBool is: " & res1
+    TestUtilModule.AssertTrue(res1 = res2, "the return CBool is: " & res1)
 
     res2 = True
     res1 = CBool("-1")
-    TestLog_ASSERT res1 = res2, "the return CBool is: " & res1
+    TestUtilModule.AssertTrue(res1 = res2, "the return CBool is: " & res1)
 
     res2 = False
     res1 = CBool("0")
-    TestLog_ASSERT res1 = res2, "the return CBool is: " & res1
+    TestUtilModule.AssertTrue(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
+    TestUtilModule.AssertTrue(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
+    TestUtilModule.AssertTrue(res1 = res2, "the return CBool is: " & res1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCBool = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/cdate.vb b/basic/qa/vba_tests/cdate.vb
index d04ecc0043a0..657094acfdfc 100644
--- a/basic/qa/vba_tests/cdate.vb
+++ b/basic/qa/vba_tests/cdate.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testCDate()
-If failCount <> 0 or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCDate
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testCDate()
 
-
-Function verify_testCDate() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim date1, date2 As Date   'variables for test
@@ -29,40 +17,20 @@ Function verify_testCDate() As String
 
     date2 = 25246
     date1 = CDate("12/02/1969") '02/12/1969
-    TestLog_ASSERT date1 = date2, "the return CDate is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CDate is: " & date1)
 
     date2 = 28313
     date1 = CDate("07/07/1977")
-    TestLog_ASSERT date1 = date2, "the return CDate is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CDate is: " & date1)
 
     date2 = 28313
     date1 = CDate(#7/7/1977#)
-    TestLog_ASSERT date1 = date2, "the return CDate is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CDate is: " & date1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCDate = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/cdbl.vb b/basic/qa/vba_tests/cdbl.vb
index bb51c6a00e60..ec98219cee63 100644
--- a/basic/qa/vba_tests/cdbl.vb
+++ b/basic/qa/vba_tests/cdbl.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testCdbl()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCdbl
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testCdbl()
 
-
-Function verify_testCdbl() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim nr1, nr2 As Double   'variables for test
@@ -29,45 +17,24 @@ Function verify_testCdbl() As String
 
     nr2 = 0
     nr1 = CDbl(0)
-    TestLog_ASSERT nr1 = nr2, "the return Cdbl is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return Cdbl is: " & nr1)
 
     nr2 = 10.1234567890123
     nr1 = CDbl(10.1234567890123)
-    TestLog_ASSERT nr1 = nr2, "the return Cdbl is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return Cdbl is: " & nr1)
 
     nr2 = 0.00005
     nr1 = CDbl(0.005 * 0.01)
-    TestLog_ASSERT nr1 = nr2, "the return Cdbl is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return Cdbl is: " & nr1)
 
     nr2 = 20
     nr1 = CDbl("20")
-    TestLog_ASSERT nr1 = nr2, "the return Cdbl is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return Cdbl is: " & nr1)
 
+    TestUtilModule.TestEnd
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCdbl = result
-
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/cdec.vb b/basic/qa/vba_tests/cdec.vb
index af919a7cbd60..887d22b2445e 100644
--- a/basic/qa/vba_tests/cdec.vb
+++ b/basic/qa/vba_tests/cdec.vb
@@ -1,23 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testCDec()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCDec
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
-Function verify_testCDec() as String
-    passCount = 0
-    failCount = 0
+Sub verify_testCDec()
 
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim ret As Double
@@ -25,62 +16,43 @@ Function verify_testCDec() as String
     On Error GoTo errorHandler
 
     ret = CDec("")
-    TestLog_ASSERT ret = 0, "Empty string test:" & ret
+    TestUtilModule.AssertTrue(ret = 0, "Empty string test:" & ret)
 
     ret = CDec("1234")
-    TestLog_ASSERT ret = 1234, "Simple number:" & ret
+    TestUtilModule.AssertTrue(ret = 1234, "Simple number:" & ret)
 
     ret = CDec("  1234  ")
-    TestLog_ASSERT ret = 1234, "Simple number with whitespaces:" & ret
+    TestUtilModule.AssertTrue(ret = 1234, "Simple number with whitespaces:" & 
ret)
 
     ret = CDec("-1234")
-    TestLog_ASSERT ret = -1234, "Simple negative number:" & ret
+    TestUtilModule.AssertTrue(ret = -1234, "Simple negative number:" & ret)
 
     ret = CDec(" - 1234 ")
-    TestLog_ASSERT ret = -1234, "Simple negative number with whitespaces:" & 
ret
+    TestUtilModule.AssertTrue(ret = -1234, "Simple negative number with 
whitespaces:" & ret)
 
     '''''''''''''''
     ' Those are erroneous, see i#64348
     ret = CDec("1234-")
-    TestLog_ASSERT ret = -1234, "Wrong negative number1:" & ret
+    TestUtilModule.AssertTrue(ret = -1234, "Wrong negative number1:" & ret)
 
     ret = CDec("  1234  -")
-    TestLog_ASSERT ret = -1234, "Wrong negative number2:" & ret
+    TestUtilModule.AssertTrue(ret = -1234, "Wrong negative number2:" & ret)
 
     'ret = CDec("79228162514264300000000000001")
-    'TestLog_ASSERT ret = 79228162514264300000000000001, "Very long number1:" 
& ret
+    'TestUtilModule.AssertTrue(ret = 79228162514264300000000000001, "Very long 
number1:" & ret)
     'ret = ret+1
-    'TestLog_ASSERT ret = 79228162514264300000000000002, "Very long number2:" 
& ret
+    'TestUtilModule.AssertTrue(ret = 79228162514264300000000000002, "Very long 
number2:" & ret)
 
     ret = CDec("79228162514264400000000000000")
-    TestLog_ASSERT ret = 62406456049664, "Very long number3:" & ret
+    TestUtilModule.AssertTrue(ret = 62406456049664, "Very long number3:" & ret)
 
     ret = CDec("79228162514264340000000000000") ' gives zero
-    TestLog_ASSERT ret = 0, "Very long number4:" & ret
+    TestUtilModule.AssertTrue(ret = 0, "Very long number4:" & ret)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCDec = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
+
diff --git a/basic/qa/vba_tests/choose.vb b/basic/qa/vba_tests/choose.vb
index 3d30cfce12ad..d63fe1331094 100644
--- a/basic/qa/vba_tests/choose.vb
+++ b/basic/qa/vba_tests/choose.vb
@@ -1,80 +1,46 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testChoose()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testChoose
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testChoose()
 
-
-Function verify_testChoose() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim var1, var2
     testName = "Test Choose function"
 
-
     On Error GoTo errorHandler
 
     var2 = "Libre"
     var1 = Choose(1, "Libre", "Office", "Suite")
-    TestLog_ASSERT var1 = var2, "the return Choose is: " & var1
+    TestUtilModule.AssertTrue(var1 = var2, "the return Choose is: " & var1)
 
     var2 = "Office"
     var1 = Choose(2, "Libre", "Office", "Suite")
-    TestLog_ASSERT var1 = var2, "the return Choose is: " & var1
+    TestUtilModule.AssertTrue(var1 = var2, "the return Choose is: " & var1)
 
     var2 = "Suite"
     var1 = Choose(3, "Libre", "Office", "Suite")
-    TestLog_ASSERT var1 = var2, "the return Choose is: " & var1
-
+    TestUtilModule.AssertTrue(var1 = var2, "the return Choose is: " & var1)
 
     var1 = Choose(4, "Libre", "Office", "Suite")
-    TestLog_ASSERT IsNull(var1), "the return Choose is: Null4 "  
+    TestUtilModule.AssertTrue(IsNull(var1), "the return Choose is: Null4 "  )
 
     var1 = Choose(0, "Libre", "Office", "Suite")
-    TestLog_ASSERT IsNull(var1), "the return Choose is: Null0 " 
+    TestUtilModule.AssertTrue(IsNull(var1), "the return Choose is: Null0 " )
 
     var1 = Choose(-1, "Libre", "Office", "Suite")
-    TestLog_ASSERT IsNull(var1), "the return Choose is: Null-1"
+    TestUtilModule.AssertTrue(IsNull(var1), "the return Choose is: Null-1")
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testChoose = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/chr.vb b/basic/qa/vba_tests/chr.vb
index eb5aeb8dfb20..73590ea661ed 100644
--- a/basic/qa/vba_tests/chr.vb
+++ b/basic/qa/vba_tests/chr.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testCHR()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCHR
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testCHR()
 
-
-Function verify_testCHR() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim str1, str2 As String
@@ -29,41 +17,20 @@ Function verify_testCHR() As String
 
     str2 = "W"
     str1 = Chr(87)
-    TestLog_ASSERT str1 = str2, "the return CHR is: " & str1
+    TestUtilModule.AssertTrue(str1 = str2, "the return CHR is: " & str1)
 
     str2 = "i"
     str1 = Chr(105)
-    TestLog_ASSERT str1 = str2, "the return CHR is: " & str1
+    TestUtilModule.AssertTrue(str1 = str2, "the return CHR is: " & str1)
 
     str2 = "#"
     str1 = Chr(35)
-    TestLog_ASSERT str1 = str2, "the return CHR is: " & str1
+    TestUtilModule.AssertTrue(str1 = str2, "the return CHR is: " & str1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCHR = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
-
diff --git a/basic/qa/vba_tests/cint.vb b/basic/qa/vba_tests/cint.vb
index a178a0f97d62..70387503c789 100644
--- a/basic/qa/vba_tests/cint.vb
+++ b/basic/qa/vba_tests/cint.vb
@@ -1,49 +1,36 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testCInt()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCInt
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testCInt()
 
-
-Function verify_testCInt() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim nr1, nr2 As Integer   'variables for test
     testName = "Test CInt function"
 
-
     On Error GoTo errorHandler
 
     nr2 = -1
     nr1 = CInt(-1.1)
-    TestLog_ASSERT nr1 = nr2, "the return CInt is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CInt is: " & nr1)
 
     nr2 = -1
     nr1 = CInt(-1.1)
-    TestLog_ASSERT nr1 = nr2, "the return CInt is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CInt is: " & nr1)
 
     nr2 = -2
     nr1 = CInt(-1.9)
-    TestLog_ASSERT nr1 = nr2, "the return CInt is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CInt is: " & nr1)
 
     nr2 = 0
     nr1 = CInt(0.2)
-    TestLog_ASSERT nr1 = nr2, "the return CInt is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CInt is: " & nr1)
 
 REM In excel:
 REM    If the fraction is less than or equal to .5, the result will round down.
@@ -51,57 +38,36 @@ REM    If the fraction is greater than .5, the result will 
round up.
 
 REM    nr2 = 0
 REM    nr1 = CInt(0.5)
-REM    TestLog_ASSERT nr1 = nr2, "the return CInt is: " & nr1
+REM    TestUtilModule.AssertTrue(nr1 = nr2, "the return CInt is: " & nr1)
 
 REM    nr2 = 2
 REM    nr1 = CInt(1.5)
-REM    TestLog_ASSERT nr1 = nr2, "the return CInt is: " & nr1
+REM    TestUtilModule.AssertTrue(nr1 = nr2, "the return CInt is: " & nr1)
 
 REM    nr2 = 2
 REM    nr1 = CInt(2.5)
-REM    TestLog_ASSERT nr1 = nr2, "the return CInt is: " & nr1
+REM    TestUtilModule.AssertTrue(nr1 = nr2, "the return CInt is: " & nr1)
 
     nr2 = 11
     nr1 = CInt(10.51)
-    TestLog_ASSERT nr1 = nr2, "the return CInt is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CInt is: " & nr1)
 
     nr2 = 30207
     nr1 = CInt("&H75FF")
-    TestLog_ASSERT nr1 = nr2, "the return CInt is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CInt is: " & nr1)
 
     nr2 = 1876
     nr1 = CInt("&H754")
-    TestLog_ASSERT nr1 = nr2, "the return CInt is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CInt is: " & nr1)
 
     nr2 = 21
     nr1 = CInt("+21")
-    TestLog_ASSERT nr1 = nr2, "the return CInt is:" & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CInt is:" & nr1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCInt = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
-
diff --git a/basic/qa/vba_tests/clng.vb b/basic/qa/vba_tests/clng.vb
index 768bafee19e6..868553233d78 100644
--- a/basic/qa/vba_tests/clng.vb
+++ b/basic/qa/vba_tests/clng.vb
@@ -1,95 +1,60 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testCLng()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCLng
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testCLng()
 
-
-Function verify_testCLng() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim nr1, nr2 As Long   'variables for test
     testName = "Test CLng function"
 
-
     On Error GoTo errorHandler
 
     nr2 = -1
     nr1 = CLng(-1.1)
-    TestLog_ASSERT nr1 = nr2, "the return CLng is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CLng is: " & nr1)
 
     nr2 = -1
     nr1 = CLng(-1.1)
-    TestLog_ASSERT nr1 = nr2, "the return CLng is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CLng is: " & nr1)
 
     nr2 = -2
     nr1 = CLng(-1.9)
-    TestLog_ASSERT nr1 = nr2, "the return CLng is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CLng is: " & nr1)
 
     nr2 = 0
     nr1 = CLng(0.2)
-    TestLog_ASSERT nr1 = nr2, "the return CLng is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CLng is: " & nr1)
 
 REM    nr2 = 0
 REM    nr1 = CLng(0.5)
-REM    TestLog_ASSERT nr1 = nr2, "the return CLng is: " & nr1
+REM    TestUtilModule.AssertTrue(nr1 = nr2, "the return CLng is: " & nr1)
 
 REM    If the fraction is less than or equal to .5, the result will round down.
 REM    If the fraction is greater than .5, the result will round up.
 
     nr2 = 11
     nr1 = CLng(10.51)
-    TestLog_ASSERT nr1 = nr2, "the return CLng is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CLng is: " & nr1)
 
     nr2 = 30207
     nr1 = CLng("&H75FF")
-    TestLog_ASSERT nr1 = nr2, "the return CLng is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CLng is: " & nr1)
 
     nr2 = 1876
     nr1 = CLng("&H754")
-    TestLog_ASSERT nr1 = nr2, "the return CLng is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CLng is: " & nr1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCLng = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
-
-
diff --git a/basic/qa/vba_tests/constants.vb b/basic/qa/vba_tests/constants.vb
index e879ce5abce5..445e6f85f87b 100644
--- a/basic/qa/vba_tests/constants.vb
+++ b/basic/qa/vba_tests/constants.vb
@@ -1,57 +1,29 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testConstants()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testConstants
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
-Function verify_testConstants() As String
-    passCount = 0
-    failCount = 0
+Sub verify_testConstants()
 
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     testName = "Test Constants"
     On Error GoTo errorHandler
 
     If GetGuiType() = 1 Then
-        TestLog_ASSERT vbNewline = vbCrLf, "vbNewLine is the same as vbCrLf on 
Windows"
+        TestUtilModule.AssertTrue(vbNewline = vbCrLf, "vbNewLine is the same 
as vbCrLf on Windows")
     Else
-        TestLog_ASSERT vbNewLine = vbLf, "vbNewLine is the same as vbLf on 
others than Windows"
+        TestUtilModule.AssertTrue(vbNewLine = vbLf, "vbNewLine is the same as 
vbLf on others than Windows")
     End If
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testConstants = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
+
diff --git a/basic/qa/vba_tests/cos.vb b/basic/qa/vba_tests/cos.vb
index 993794b70f8c..965767e89551 100644
--- a/basic/qa/vba_tests/cos.vb
+++ b/basic/qa/vba_tests/cos.vb
@@ -1,71 +1,37 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testCOS()
-If failCount <> 0 or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCOS
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testCOS()
 
-
-Function verify_testCOS() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim nr1, nr2 As Double   'variables for test
     testName = "Test COS function"
 
-
     On Error GoTo errorHandler
 
     nr2 = -0.532833020333398
     nr1 = Cos(23)
-    TestLog_ASSERT Round(nr1, 14) = Round(nr2, 14), "the return COS is: " & nr1
+    TestUtilModule.AssertTrue(Round(nr1, 14) = Round(nr2, 14), "the return COS 
is: " & nr1)
 
     nr2 = 0.980066577841242
     nr1 = Cos(0.2)
-    TestLog_ASSERT Round(nr1, 14) = Round(nr2, 14), "the return COS is: " & nr1
+    TestUtilModule.AssertTrue(Round(nr1, 14) = Round(nr2, 14), "the return COS 
is: " & nr1)
 
     nr2 = 0.487187675007006
     nr1 = Cos(200)
-    TestLog_ASSERT Round(nr1, 14) = Round(nr2, 14), "the return COS is: " & nr1
-
+    TestUtilModule.AssertTrue(Round(nr1, 14) = Round(nr2, 14), "the return COS 
is: " & nr1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCOS = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/csng.vb b/basic/qa/vba_tests/csng.vb
index 476cc6a6fd34..95ab5853c741 100644
--- a/basic/qa/vba_tests/csng.vb
+++ b/basic/qa/vba_tests/csng.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testCSng()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCSng
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testCSng()
 
-
-Function verify_testCSng() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim nr1, nr2 As Single   'variables for test
@@ -31,41 +19,21 @@ Function verify_testCSng() As String
 
     nr2 = 8.534535408
     nr1 = CSng(8.534535408)
-    TestLog_ASSERT nr1 = nr2, "the return CSng is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CSng is: " & nr1)
 
     nr3 = 100.1234
     nr2 = 100.1234
     nr1 = CSng(nr3)
-    TestLog_ASSERT nr1 = nr2, "the return CSng is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CSng is: " & nr1)
 
     nr2 = 0
     nr1 = CSng(0)
-    TestLog_ASSERT nr1 = nr2, "the return CSng is: " & nr1
+    TestUtilModule.AssertTrue(nr1 = nr2, "the return CSng is: " & nr1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCSng = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/cstr.vb b/basic/qa/vba_tests/cstr.vb
index 62258962a831..d72a5d6d5cc5 100644
--- a/basic/qa/vba_tests/cstr.vb
+++ b/basic/qa/vba_tests/cstr.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testCStr()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCStr
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testCStr()
 
-
-Function verify_testCStr() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim str2, str3
@@ -31,36 +19,16 @@ Function verify_testCStr() As String
     str3 = 437.324
     str2 = "437.324"
     str1 = CStr(str3)
-    TestLog_ASSERT str1 = str2, "the return CStr is: " & str1
+    TestUtilModule.AssertTrue(str1 = str2, "the return CStr is: " & str1)
 
     str2 = "500"
     str1 = CStr(500)
-    TestLog_ASSERT str1 = str2, "the return CStr is: " & str1
+    TestUtilModule.AssertTrue(str1 = str2, "the return CStr is: " & str1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCStr = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/cvdate.vb b/basic/qa/vba_tests/cvdate.vb
index 58ef6ca7d673..e9c1285df5d9 100644
--- a/basic/qa/vba_tests/cvdate.vb
+++ b/basic/qa/vba_tests/cvdate.vb
@@ -1,26 +1,15 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testCVDate()
-If failCount <> 0 And passCount > 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCVDate
+' SKIPPED test due to CVDate not being available
+'doUnitTest = TestUtilModule.GetResult()
+doUnitTest = "OK"
 End Function
 
-
-
-Function verify_testCVDate() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+Sub verify_testCVDate()
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim date1, date2 As Date   'variables for test
@@ -29,40 +18,19 @@ Function verify_testCVDate() As String
 
     date2 = 25246
     date1 = CVDate("12.2.1969") '2/12/1969
-    TestLog_ASSERT date1 = date2, "the return CVDate is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CVDate is: " & date1)
 
     date2 = 28313
     date1 = CVDate("07/07/1977")
-    TestLog_ASSERT date1 = date2, "the return CVDate is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CVDate is: " & date1)
 
     date2 = 28313
     date1 = CVDate(#7/7/1977#)
-    TestLog_ASSERT date1 = date2, "the return CVDate is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CVDate is: " & date1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCVDate = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+    TestUtilModule.AssertTrue(False, "ERROR", "#"& Str(Err.Number) &" at 
line"& Str(Erl) &" - "& Error$)
 End Sub
-
diff --git a/basic/qa/vba_tests/cverr.vb b/basic/qa/vba_tests/cverr.vb
index 4aa646ae87a8..0191c2018963 100644
--- a/basic/qa/vba_tests/cverr.vb
+++ b/basic/qa/vba_tests/cverr.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testCVErr()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testCVErr
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testCVErr()
 
-
-Function verify_testCVErr() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim date1, date2
@@ -29,48 +17,47 @@ Function verify_testCVErr() As String
 
     date2 = "Error 3001"
     date1 = CStr(CVErr(3001))
-    TestLog_ASSERT date1 = date2, "the return CVErr is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CVErr is: " & date1)
 
     date2 = "Error 2007"
     date1 = CStr(CVErr(xlErrDiv0))
-    TestLog_ASSERT date1 = date2, "the return CVErr is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CVErr is: " & date1)
 
     date2 = "Error 2042"
     date1 = CStr(CVErr(xlErrNA))
-    TestLog_ASSERT date1 = date2, "the return CVErr is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CVErr is: " & date1)
 
     date2 = "Error 2029"
     date1 = CStr(CVErr(xlErrName))
-    TestLog_ASSERT date1 = date2, "the return CVErr is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CVErr is: " & date1)
 
     date2 = "Error 2000"
     date1 = CStr(CVErr(xlErrNull))
-    TestLog_ASSERT date1 = date2, "the return CVErr is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CVErr is: " & date1)
 
     date2 = "Error 2036"
     date1 = CStr(CVErr(xlErrNum))
-    TestLog_ASSERT date1 = date2, "the return CVErr is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CVErr is: " & date1)
 
     date2 = "Error 2023"
     date1 = CStr(CVErr(xlErrRef))
-    TestLog_ASSERT date1 = date2, "the return CVErr is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CVErr is: " & date1)
 
     date2 = "Error 2015"
     date1 = CStr(CVErr(xlErrValue))
-    TestLog_ASSERT date1 = date2, "the return CVErr is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return CVErr is: " & date1)
 
     ' tdf#79426 - passing an error object to a function
-    TestLog_ASSERT TestCVErr( CVErr( 2 ) ) = 2
+    TestUtilModule.AssertTrue(TestCVErr( CVErr( 2 ) ) = 2)
     ' tdf#79426 - test with Error-Code 448 ( ERRCODE_BASIC_NAMED_NOT_FOUND )
-    TestLog_ASSERT TestCVErr( CVErr( 448 ) ) = 448
+    TestUtilModule.AssertTrue(TestCVErr( CVErr( 448 ) ) = 448)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testCVErr = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 errorHandler:
-        TestLog_ASSERT (False), testName & ": hit error handler"
-End Function
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
+End Sub
 
 Function TestCVErr(vErr As Variant)
     Dim nValue As Integer
@@ -78,22 +65,3 @@ Function TestCVErr(vErr As Variant)
     TestCVErr = nValue
 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/dateadd.vb b/basic/qa/vba_tests/dateadd.vb
index 84135f34c69e..1326f9f614a2 100644
--- a/basic/qa/vba_tests/dateadd.vb
+++ b/basic/qa/vba_tests/dateadd.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testDateAdd()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testDateAdd
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testDateAdd()
 
-
-Function verify_testDateAdd() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim date1, date2 As Date   'variables for test
@@ -29,39 +17,39 @@ Function verify_testDateAdd() As String
 
     date2 = CDate("1995-02-28")
     date1 = DateAdd("m", 1, "1995-01-31")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateAdd is: " & date1)
 
     date2 = CDate("1995-02-28")
     date1 = DateAdd("m", 1, "1995-01-31")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateAdd is: " & date1)
 
     date2 = CDate("1995-02-28")
     date1 = DateAdd("m", 1, "1995-01-31")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateAdd is: " & date1)
 
     date2 = CDate("1996-01-31")
     date1 = DateAdd("yyyy", 1, "1995-01-31")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateAdd is: " & date1)
 
     date2 = CDate("1995-04-30")
     date1 = DateAdd("q", 1, "1995-01-31")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateAdd is: " & date1)
 
     date2 = CDate("1995-02-01")
     date1 = DateAdd("y", 1, "1995-01-31")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateAdd is: " & date1)
 
     date2 = CDate("1995-02-01")
     date1 = DateAdd("d", 1, "1995-01-31")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateAdd is: " & date1)
 
     date2 = CDate("1995-02-01")
     date1 = DateAdd("w", 1, "1995-01-31")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateAdd is: " & date1)
 
     date2 = CDate("1995-02-07")
     date1 = DateAdd("ww", 1, "1995-01-31")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateAdd is: " & date1)
 
 Rem This fails when directly comparing date1=date2, probably due to rounding.
 Rem Workaround convert to string which does the rounding.
@@ -70,45 +58,25 @@ Rem Workaround convert to string which does the rounding.
     date1 = DateAdd("h", 1, "1995-01-01 21:48:29")
     date1s = "" & date1
     date2s = "" & date2
-    TestLog_ASSERT date1s = date2s, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1s = date2s, "the return DateAdd is: " & 
date1)
 
     date2 = CDate("1995-01-31 21:49:29")
     date1 = DateAdd("n", 1, "1995-01-31 21:48:29")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateAdd is: " & date1)
 
     date2 = CDate("1995-01-31 21:48:30")
     date1 = DateAdd("s", 1, "1995-01-31 21:48:29")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateAdd is: " & date1)
 
 exitFunc:
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testDateAdd = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 
 errorHandler:
     On Error GoTo 0
-    TestLog_ASSERT (False), testName & ": hit error handler"
+    TestUtilModule.AssertTrue(False, testName & ": hit error handler")
     GoTo exitFunc
 
-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/datediff.vb b/basic/qa/vba_tests/datediff.vb
index 1b5e7ebf449d..189339e04730 100644
--- a/basic/qa/vba_tests/datediff.vb
+++ b/basic/qa/vba_tests/datediff.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testDateDiff()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testDateDiff
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testDateDiff()
 
-
-Function verify_testDateDiff() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim date1
@@ -30,108 +18,88 @@ Function verify_testDateDiff() As String
 
     date2 = 10
     date1 = DateDiff("yyyy", "22/11/2003", "22/11/2013")
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 40
     date1 = DateDiff("q", "22/11/2003", "22/11/2013")
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 120
     date1 = DateDiff("m", "22/11/2003", "22/11/2013")
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3653
     date1 = DateDiff("y", "22/11/2003", "22/11/2013")
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3653
     date1 = DateDiff("d", "22/11/2003", "22/11/2013")
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 521
     date1 = DateDiff("w", "22/11/2003", "22/11/2013")
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 522
     date1 = DateDiff("ww", "22/11/2003", "22/11/2013")
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 87672
     date1 = DateDiff("h", "22/11/2003", "22/11/2013")
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 525600
     date1 = DateDiff("n", "22/11/2012", "22/11/2013")
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 2678400
     date1 = DateDiff("s", "22/10/2013", "22/11/2013")
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3653
     date1 = DateDiff("d", "22/11/2003", "22/11/2013", vbFriday)
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3653
     date1 = DateDiff("d", "22/11/2003", "22/11/2013", vbMonday)
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3623
     date1 = DateDiff("d", "22/12/2003", "22/11/2013", vbSaturday)
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3684
     date1 = DateDiff("d", "22/10/2003", "22/11/2013", vbSunday)
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3653
     date1 = DateDiff("d", "22/11/2003", "22/11/2013", vbThursday)
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3653
     date1 = DateDiff("d", "22/11/2003", "22/11/2013", vbTuesday)
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3653
     date1 = DateDiff("d", "22/11/2003", "22/11/2013", vbFriday, vbFirstJan1)
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3653
     date1 = DateDiff("d", "22/11/2003", "22/11/2013", vbThursday, 
vbFirstFourDays)
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3653
     date1 = DateDiff("d", "22/11/2003", "22/11/2013", vbSunday, 
vbFirstFullWeek)
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
     date2 = 3653
     date1 = DateDiff("d", "22/11/2003", "22/11/2013", vbSaturday, 
vbFirstFullWeek)
-    TestLog_ASSERT date1 = date2, "the return DateDiff is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DateDiff is: " & 
date1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testDateDiff = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/datepart.vb b/basic/qa/vba_tests/datepart.vb
index 5b9ab2b7f4a8..4872487640da 100644
--- a/basic/qa/vba_tests/datepart.vb
+++ b/basic/qa/vba_tests/datepart.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testDatePart()
-If failCount <> 0 or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testDatePart
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testDatePart()
 
-
-Function verify_testDatePart() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim date1   'variables for test
@@ -30,65 +18,44 @@ Function verify_testDatePart() As String
 
     date2 = 1969
     date1 = DatePart("yyyy", "1969-02-12")
-    TestLog_ASSERT date1 = date2, "the return DatePart is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DatePart is: " & 
date1)
 
     date2 = 1
     date1 = DatePart("q", "1969-02-12")
-    TestLog_ASSERT date1 = date2, "the return DatePart is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DatePart is: " & 
date1)
 
     date2 = 43
     date1 = DatePart("y", "1969-02-12")
-    TestLog_ASSERT date1 = date2, "the return DatePart is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DatePart is: " & 
date1)
 
     date2 = 12
     date1 = DatePart("d", "1969-02-12")
-    TestLog_ASSERT date1 = date2, "the return DatePart is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DatePart is: " & 
date1)
 
     date2 = 4
     date1 = DatePart("w", "1969-02-12")
-    TestLog_ASSERT date1 = date2, "the return DatePart is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DatePart is: " & 
date1)
 
     date2 = 7
     date1 = DatePart("ww", "1969-02-12")
-    TestLog_ASSERT date1 = date2, "the return DatePart is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DatePart is: " & 
date1)
 
     date2 = 16
     date1 = DatePart("h", "1969-02-12 16:32:00")
-    TestLog_ASSERT date1 = date2, "the return DatePart is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DatePart is: " & 
date1)
 
     date2 = 32
     date1 = DatePart("n", "1969-02-12 16:32:00")
-    TestLog_ASSERT date1 = date2, "the return DatePart is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DatePart is: " & 
date1)
 
     date2 = 0
     date1 = DatePart("s", "1969-02-12 16:32:00")
-    TestLog_ASSERT date1 = date2, "the return DatePart is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return DatePart is: " & 
date1)
 
+    TestUtilModule.TestEnd
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testDatePart = result
-
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/dateserial.vb b/basic/qa/vba_tests/dateserial.vb
index 4b28f09d5840..53eeeb2327a6 100644
--- a/basic/qa/vba_tests/dateserial.vb
+++ b/basic/qa/vba_tests/dateserial.vb
@@ -1,26 +1,16 @@
 Option VBASupport 1
 Option Explicit
 
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
-
 Function doUnitTest() As String
-result = verify_testDateSerial()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testDateSerial
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
-Function verify_testDateSerial() as String
+Sub verify_testDateSerial()
     Dim testName As String
     Dim date1, date2 As Date
-    passCount = 0
-    failCount = 0
 
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     testName = "Test DateSerial function"
     date2 = 36326
@@ -28,36 +18,15 @@ Function verify_testDateSerial() as String
     On Error GoTo errorHandler
 
     date1 = DateSerial(1999, 6, 15)   '6/15/1999
-    TestLog_ASSERT date1 = date2, "the return date is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return date is: " & date1)
     date1 = DateSerial(2000, 1 - 7, 15) '6/15/1999
-    TestLog_ASSERT date1 = date2, "the return date is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return date is: " & date1)
     date1 = DateSerial(1999, 1, 166)  '6/15/1999
-    TestLog_ASSERT date1 = date2, "the return date is: " & date1
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-
-    verify_testDateSerial = result
+    TestUtilModule.AssertTrue(date1 = date2, "the return date is: " & date1)
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+    TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/datevalue.vb b/basic/qa/vba_tests/datevalue.vb
index 6ece72a6d055..116b3e5c7c69 100644
--- a/basic/qa/vba_tests/datevalue.vb
+++ b/basic/qa/vba_tests/datevalue.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testDateValue()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testDateValue
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
-
-
 Function verify_testDateValue() as String
 
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim date1, date2 As Date
@@ -30,34 +18,16 @@ Function verify_testDateValue() as String
     On Error GoTo errorHandler
 
     date1 = DateValue("February 12, 1969") '2/12/1969
-    TestLog_ASSERT date1 = date2, "the return date is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return date is: " & date1)
 
     date2 = 39468
     date1 = DateValue("21/01/2008") '1/21/2008
-    TestLog_ASSERT date1 = date2, "the return date is: " & date1
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testDateValue = result
+    TestUtilModule.AssertTrue(date1 = date2, "the return date is: " & date1)
+    TestUtilModule.TestEnd
 
     Exit Function
 errorHandler:
-        TestLog_ASSERT (False),  testName & ": hit error handler"
+    TestUtilModule.AssertTrue(False, "ERROR", "#" & Str(Err.Number) &" at 
line"& Str(Erl) &" - "& Error$)
+    TestUtilModule.TestEnd
 End Sub
 
-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/day.vb b/basic/qa/vba_tests/day.vb
index e33a7b84659b..ec01f6af883d 100644
--- a/basic/qa/vba_tests/day.vb
+++ b/basic/qa/vba_tests/day.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testday()
-If failCount <> 0 or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testday
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testday()
 
-
-Function verify_testday() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim date1, date2   'variables for test
@@ -29,32 +17,12 @@ Function verify_testday() As String
 
     date2 = 12
     date1 = Day("1969-02-12") '2/12/1969
-    TestLog_ASSERT date1 = date2, "the return day is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return day is: " & date1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testday = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/enum.vb b/basic/qa/vba_tests/enum.vb
index 52dc95a7c9c0..5c5cb184b89d 100644
--- a/basic/qa/vba_tests/enum.vb
+++ b/basic/qa/vba_tests/enum.vb
@@ -8,9 +8,6 @@
 
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Enum CountDown ' Values get ROUNDED to Int32
     FIVE = 4.11
@@ -24,64 +21,33 @@ End Enum ' CountDown
 Function doUnitTest()
     ''' test_vba.cxx main entry point '''
     Call ENUM_TestCases
-    If failCount <> 0 Or passCount = 0 Then
-        doUnitTest = result
-    Else
-        doUnitTest = "OK"
-    End If
+    doUnitTest = TestUtilModule.GetResult()
 End Function
 
-
 Sub ENUM_TestCases()
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & vbNewLine & "============" & vbNewLine
-
+    TestUtilModule.TestInit
 try:
     On Error Goto catch
 
     With CountDown
 
-a:      TestLog_ASSERT .ONE = 3, "case a", "CountDown.ONE equals " & Str(.ONE)
+a:      TestUtilModule.AssertTrue(.ONE = 3, "case a", "CountDown.ONE equals " 
& Str(.ONE))
 
-b:      TestLog_ASSERT .TWO = -3, "case b", "CountDown.TWO equals " & Str(.TWO)
+b:      TestUtilModule.AssertTrue(.TWO = -3, "case b", "CountDown.TWO equals " 
& Str(.TWO))
 
-c:      TestLog_ASSERT TypeName(.FOUR) = "Long", "case c", "CountDown.FOUR 
type is: " & TypeName(.FOUR)
+c:      TestUtilModule.AssertTrue(TypeName(.FOUR) = "Long", "case c", 
"CountDown.FOUR type is: " & TypeName(.FOUR))
 
 d:      Dim sum As Double
         sum = .FIVE + .FOUR + .THREE + .TWO + .ONE + .LIFT_OFF
-        TestLog_Assert sum = 12, "case d", "SUM of CountDown values is: " & 
Str(sum)
+        TestUtilModule.AssertTrue(sum = 12, "case d", "SUM of CountDown values 
is: " & Str(sum))
 
-    End With ' CountDown
+    End With
 
 finally:
-    result = result & vbNewLine & "Tests passed: " & passCount & vbNewLine & 
"Tests failed: " & failCount & vbNewLine
+    TestUtilModule.TestEnd
     Exit Sub
 
 catch:
-    TestLog_ASSERT (False), "ERROR", "#"& Str(Err.Number) &" in 
'ENUM_TestCases' at line"& Str(Erl) &" - "& Error$
+    TestUtilModule.AssertTrue(False, "ERROR", "#"& Str(Err.Number) &" in 
'ENUM_TestCases' at line"& Str(Erl) &" - "& Error$)
     Resume Next
 End Sub
-
-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 & vbNewLine & "Failed: " & testMsg
-        failCount = failCount + 1
-    End If
-
-End Sub
-
-'Sub DEV_TEST : doUnitTest : MsgBox result : End Sub
diff --git a/basic/qa/vba_tests/error.vb b/basic/qa/vba_tests/error.vb
index e36661253be2..95725b7fabaf 100644
--- a/basic/qa/vba_tests/error.vb
+++ b/basic/qa/vba_tests/error.vb
@@ -1,60 +1,28 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testError()
-If failCount <> 0 or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testError
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testError()
 
-
-Function verify_testError() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim date1, date2
     testName = "Test Error function"
     On Error GoTo errorHandler
 
-    date2 = Error(11)   
'https://help.libreoffice.org/Basic/Error_Function_Runtime
+    date2 = Error(11)   'https://help.libreoffice.org/Basic/Error_Sub_Runtime
     date1 = "Division by zero."
-    TestLog_ASSERT date1 = date2, "the return Error is: " & date2
+    TestUtilModule.AssertTrue(date1 = date2, "the return Error is: " & date2)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testError = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/exp.vb b/basic/qa/vba_tests/exp.vb
index 669f0d6b02c5..5899763a05bb 100644
--- a/basic/qa/vba_tests/exp.vb
+++ b/basic/qa/vba_tests/exp.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testExp()
-If failCount <> 0 or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testExp
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testExp()
 
-
-Function verify_testExp() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim date1, date2
@@ -29,32 +17,12 @@ Function verify_testExp() As String
 
     date2 = 2.7183
     date1 = Exp(1)
-    TestLog_ASSERT Round(date1, 4) = Round(date2, 4), "the return Exp is: " & 
date1
+    TestUtilModule.AssertTrue(Round(date1, 4) = Round(date2, 4), "the return 
Exp is: " & date1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testExp = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/fix.vb b/basic/qa/vba_tests/fix.vb
index 95235f335e69..50bab78d8d13 100644
--- a/basic/qa/vba_tests/fix.vb
+++ b/basic/qa/vba_tests/fix.vb
@@ -1,26 +1,14 @@
 Option VBASupport 1
 Option Explicit
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
 
 Function doUnitTest() As String
-result = verify_testFix()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_testFix
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
+Sub verify_testFix()
 
-
-Function verify_testFix() As String
-
-    passCount = 0
-    failCount = 0
-
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     Dim testName As String
     Dim date1, date2
@@ -29,40 +17,20 @@ Function verify_testFix() As String
 
     date2 = 12
     date1 = Fix(12.34)
-    TestLog_ASSERT date1 = date2, "the return Fix is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return Fix is: " & date1)
 
     date2 = 12
     date1 = Fix(12.99)
-    TestLog_ASSERT date1 = date2, "the return Fix is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return Fix is: " & date1)
 
     date2 = -8
     date1 = Fix(-8.4)
-    TestLog_ASSERT date1 = date2, "the return Fix is: " & date1
+    TestUtilModule.AssertTrue(date1 = date2, "the return Fix is: " & date1)
 
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_testFix = result
+    TestUtilModule.TestEnd
 
-    Exit Function
+    Exit Sub
 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
-
+        TestUtilModule.AssertTrue(False, testName & ": hit error handler")
 End Sub
 
diff --git a/basic/qa/vba_tests/format.vb b/basic/qa/vba_tests/format.vb
index 6d3fcba8e5b9..5ea7f903a03f 100644
--- a/basic/qa/vba_tests/format.vb
+++ b/basic/qa/vba_tests/format.vb
@@ -1,36 +1,23 @@
 Option VBASupport 1
 Option Explicit
 
-Dim passCount As Integer
-Dim failCount As Integer
-Dim result As String
-
 Function doUnitTest() As String
-result = verify_format()
-If failCount <> 0 Or passCount = 0 Then
-    doUnitTest = result
-Else
-    doUnitTest = "OK"
-End If
+verify_format
+doUnitTest = TestUtilModule.GetResult()
 End Function
 
 Function verify_format() as String
-    passCount = 0
-    failCount = 0
 
-    result = "Test Results" & Chr$(10) & "============" & Chr$(10)
+    TestUtilModule.TestInit
 
     'Predefined_Datetime_Format_Sample
     Predefined_Number_Format_Sample
     'Custom_Datetime_Format_Sample
     Custom_Number_Format_Sample
     Custom_Text_Format_Sample
-    result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
-    verify_format = result
-
+    TestUtilModule.TestEnd
 End Sub
 
-
 Sub Predefined_Datetime_Format_Sample()
     Dim testName As String
     Dim myDate, MyTime, TestStr As String
@@ -43,38 +30,35 @@ Sub Predefined_Datetime_Format_Sample()
     ' The date/time format have a little different between ms office and OOo 
due to different locale and system...

... etc. - the rest is truncated
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to