summaryrefslogtreecommitdiff
path: root/basic/qa/vba_tests
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2024-08-18 02:31:00 +0500
committerXisco Fauli <xiscofauli@libreoffice.org>2024-08-19 23:05:52 +0200
commit89476d1b95945871645a044c6f80ef6419e08db0 (patch)
tree593fb26089b8ecca0942c45cd0ba897b10d9085b /basic/qa/vba_tests
parent46dfd2c75bfc9a56659db00f1a8b3946bc8d8340 (diff)
tdf#150458: evaluate for loop's end and step once in VBA support mode
As required by [MS-VBAL], and actual VBA implementation. It is a question if we also need to change it likewise in other modes (normal, compatible) - see tdf#150460. Change-Id: I1e83d57fe4be3bf264a64fe977909cf7684bc798 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172005 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit afb46ee8803a04664f26da3e1f8f88a75d92cb7f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171994 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'basic/qa/vba_tests')
-rw-r--r--basic/qa/vba_tests/for.vb43
1 files changed, 43 insertions, 0 deletions
diff --git a/basic/qa/vba_tests/for.vb b/basic/qa/vba_tests/for.vb
new file mode 100644
index 000000000000..62e886cdd056
--- /dev/null
+++ b/basic/qa/vba_tests/for.vb
@@ -0,0 +1,43 @@
+'
+' This file is part of the LibreOffice project.
+'
+' This Source Code Form is subject to the terms of the Mozilla Public
+' License, v. 2.0. If a copy of the MPL was not distributed with this
+' file, You can obtain one at http://mozilla.org/MPL/2.0/.
+'
+
+Option VBASupport 1
+
+Function doUnitTest() As String
+ TestUtil.TestInit
+ test_for
+ doUnitTest = TestUtil.GetResult()
+End Function
+
+Sub test_for()
+ On Error GoTo errorHandler
+
+ Dim i As Long, j As Long, k As Long
+ ' Test that loop end value is evaluated only once,
+ ' and then changing the variable doesn't affect it
+ k=10
+ For i=1 To k
+ k=1
+ j=i
+ Next i
+ TestUtil.AssertEqual(j, 10, "Last loop control value (changing end variable)")
+
+ ' Test that loop step value is evaluated only once,
+ ' and then changing the variable doesn't affect it
+ k=1
+ j=0
+ For i=1 To 10 Step k
+ k=10
+ j=j+1
+ Next i
+ TestUtil.AssertEqual(j, 10, "Number of iterations (changing step variable)")
+
+ Exit Sub
+errorHandler:
+ TestUtil.ReportErrorHandler("verify_testOptionalsVba", Err, Error$, Erl)
+End Sub