diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2024-08-18 02:31:00 +0500 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2024-08-19 23:05:52 +0200 |
commit | 89476d1b95945871645a044c6f80ef6419e08db0 (patch) | |
tree | 593fb26089b8ecca0942c45cd0ba897b10d9085b /basic/qa/vba_tests | |
parent | 46dfd2c75bfc9a56659db00f1a8b3946bc8d8340 (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.vb | 43 |
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 |