Files
libreoffice/basic/qa/vba_tests/for.vb
Mike Kaganski afb46ee880 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>
2024-08-18 09:08:49 +02:00

44 lines
1.1 KiB
VB.net

'
' 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