[Libreoffice-commits] core.git: basic/qa

Eike Rathke erack at redhat.com
Fri Nov 24 11:02:12 UTC 2017


 basic/qa/vba_tests/dateadd.vb |   67 +++++++++++++++++++++++-------------------
 1 file changed, 38 insertions(+), 29 deletions(-)

New commits:
commit 2408a1b1de7a7d08ed5c18d18e3007912e292b96
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Nov 24 00:29:21 2017 +0100

    Don't pass the test when all tests fail
    
    Due to the locale dependent date format used here in strings that
    neither matches en-US nor en-GB (in which the tests seem to be
    executed) all tests failed, and then with passCount==0 the check
    was
    
        If failCount <> 0 And passCount > 0 Then
    
    instead of
    
        If failCount <> 0 Or passCount = 0 Then
    
    so the end result was OK.
    
    Also fixed the one case that was commented with
    Rem why this fails in excel?
    It actually also failed for us, just that because all tests failed
    (see above) it never seemed to fail..
    Problem seems to be the accuracy of the underlying date+time
    double for this specific calculation. Good to know it happens in
    Excel as well ;-)
    As a workaround, conversion to string does the necessary rounding
    internally.
    
    Change-Id: If0302b2feab9e1233d66da4eccff732f61542a69
    Reviewed-on: https://gerrit.libreoffice.org/45196
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/basic/qa/vba_tests/dateadd.vb b/basic/qa/vba_tests/dateadd.vb
index 8de4f86ff040..84135f34c69e 100644
--- a/basic/qa/vba_tests/dateadd.vb
+++ b/basic/qa/vba_tests/dateadd.vb
@@ -6,7 +6,7 @@ Dim result As String
 
 Function doUnitTest() As String
 result = verify_testDateAdd()
-If failCount <> 0 And passCount > 0 Then
+If failCount <> 0 Or passCount = 0 Then
     doUnitTest = result
 Else
     doUnitTest = "OK"
@@ -27,61 +27,70 @@ Function verify_testDateAdd() As String
     testName = "Test DateAdd function"
     On Error GoTo errorHandler
 
-    date2 = CDate("28.02.1995")
-    date1 = DateAdd("m", 1, "31.1.1995")
+    date2 = CDate("1995-02-28")
+    date1 = DateAdd("m", 1, "1995-01-31")
     TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
 
-    date2 = CDate("28.02.1995")
-    date1 = DateAdd("m", 1, "31.1.1995")
+    date2 = CDate("1995-02-28")
+    date1 = DateAdd("m", 1, "1995-01-31")
     TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
 
-    date2 = CDate("28.02.1995")
-    date1 = DateAdd("m", 1, "31.1.1995")
+    date2 = CDate("1995-02-28")
+    date1 = DateAdd("m", 1, "1995-01-31")
     TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
 
-    date2 = CDate("31.01.1996")
-    date1 = DateAdd("yyyy", 1, "31.1.1995")
+    date2 = CDate("1996-01-31")
+    date1 = DateAdd("yyyy", 1, "1995-01-31")
     TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
 
-    date2 = CDate("30.04.1995")
-    date1 = DateAdd("q", 1, "31.1.1995")
+    date2 = CDate("1995-04-30")
+    date1 = DateAdd("q", 1, "1995-01-31")
     TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
 
-    date2 = CDate("1.02.1995")
-    date1 = DateAdd("y", 1, "31.1.1995")
+    date2 = CDate("1995-02-01")
+    date1 = DateAdd("y", 1, "1995-01-31")
     TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
 
-    date2 = CDate("1.02.1995")
-    date1 = DateAdd("d", 1, "31.1.1995")
+    date2 = CDate("1995-02-01")
+    date1 = DateAdd("d", 1, "1995-01-31")
     TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
 
-    date2 = CDate("1.02.1995")
-    date1 = DateAdd("w", 1, "31.1.1995")
+    date2 = CDate("1995-02-01")
+    date1 = DateAdd("w", 1, "1995-01-31")
     TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
 
-    date2 = CDate("7.02.1995")
-    date1 = DateAdd("ww", 1, "31.1.1995")
+    date2 = CDate("1995-02-07")
+    date1 = DateAdd("ww", 1, "1995-01-31")
     TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
 
-Rem why this fails in excel?
-    date2 = CDate("1.1.1995 22:48:29")
-    date1 = DateAdd("h", 1, "1.1.1995 21:48:29")
+Rem This fails when directly comparing date1=date2, probably due to rounding.
+Rem Workaround convert to string which does the rounding.
+    Dim date1s, date2s As String
+    date2 = CDate("1995-01-01 22:48:29")
+    date1 = DateAdd("h", 1, "1995-01-01 21:48:29")
+    date1s = "" & date1
+    date2s = "" & date2
+    TestLog_ASSERT 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
 
-    date2 = CDate("31.1.1995 21:49:29")
-    date1 = DateAdd("n", 1, "31.1.1995 21:48:29")
-    TestLog_ASSERT date1 = date2, "the return DateAdd is: " & date1
-
-    date2 = CDate("31.1.1995 21:48:30")
-    date1 = DateAdd("s", 1, "31.1.1995 21:48:29")
+    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
 
+exitFunc:
     result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & "Tests failed: " & failCount & Chr$(10)
     verify_testDateAdd = result
 
     Exit Function
+
 errorHandler:
-        TestLog_ASSERT (False), testName & ": hit error handler"
+    On Error GoTo 0
+    TestLog_ASSERT (False), testName & ": hit error handler"
+    GoTo exitFunc
+
 End Function
 
 Sub TestLog_ASSERT(assertion As Boolean, Optional testId As String, Optional testComment As String)


More information about the Libreoffice-commits mailing list