office-gobmx/basic/qa/vba_tests/split.vb
Alain Romedenne fd19bc83cf tdf#141474 tdf#151901 BASIC functions argument names do not match that of VBA
Basic function argument names can be used either by position either by name, keyword arguments ae called 'named arguments' in VBA
- VBA doc:
https://learn.microsoft.com/en-us/office/vba/language/concepts/getting-started/understanding-named-arguments-and-optional-arguments
- libO Basic function signatures:
https://help.libreoffice.org/latest/en-US/text/sbasic/shared/03090401.html?DbPAR=BASIC#bm_id3154422

This patch attempts to correct - all in one - malformed keyword names in BASIC function signatures.

It reflects keyword arguments usage inside QA BASIC unit tests.

In the end Online help pages may incorporate such practice.

Change-Id: Iab0c92b2c152d2564662e51e68f1f736b8deefd0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145720
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
2023-02-26 16:14:47 +00:00

63 lines
2.5 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
Option Explicit
Function doUnitTest() As String
TestUtil.TestInit
verify_testSplit
doUnitTest = TestUtil.GetResult()
End Function
Sub verify_testSplit
On Error GoTo errorHandler
' SPLIT
TestUtil.AssertEqual(Split( "Hello world" )(1), "world", "Split( ""Hello world"" )(1)")
' tdf#123025 - split function sets the datatype of the array to empty,
' preventing any subsequent assignments of values to the array and to the elements itself.
Dim arr(1) As String
arr = Split("a/b", "/")
TestUtil.AssertEqual(arr(0), "a", "Split(""a/b"", ""/"")(0)")
TestUtil.AssertEqual(arr(1), "b", "Split(""a/b"", ""/"")(1)")
ReDim Preserve arr(1)
TestUtil.AssertEqual(arr(0), "a", "ReDim Preserve arr(1)(0)")
TestUtil.AssertEqual(arr(1), "b", "ReDim Preserve arr(1)(1)")
ReDim arr(1)
TestUtil.AssertEqual(arr(0), "", "ReDim arr(1)(0)")
TestUtil.AssertEqual(arr(1), "", "ReDim arr(1)(1)")
arr(0) = "a"
arr(1) = "b"
TestUtil.AssertEqual(arr(0), "a", "arr(0)")
TestUtil.AssertEqual(arr(1), "b", "arr(1)")
ReDim Preserve arr(1)
TestUtil.AssertEqual(arr(0), "a", "ReDim Preserve arr(1)(0) after assignment")
TestUtil.AssertEqual(arr(1), "b", "ReDim Preserve arr(1)(1) after assignment")
' tdf#144924 - using VBASupport 1, the split function returns an array of substrings, hence no
' assignment of different data types to the individual elements is possible
Dim splitArr
splitArr = Split("a/b&&c/d", "&&")
' Without the fix in place, this test would have failed with:
' - Expected: 8 (8 for String)
' - Actual : 8200 (8192 for Array and 8 for String)
TestUtil.AssertEqual(VarType(splitArr(0)), 8, "VarType(splitArr(0))")
' tdf#141474 keyword names need to match that of VBA
TestUtil.AssertEqual(Split(expression:="LibreOffice StarOffice")(1), "StarOffice", "Split with 1 keyword name" )
Dim txt As String : txt = "Libre_Office_Star_Office"
TestUtil.AssertEqual(Split(delimiter:="_", expression:=txt)(2), "Star", "Split with 2 keyword names" )
TestUtil.AssertEqual(Split(limit:=3, delimiter:="_", expression:=txt)(2), "Star_Office", "Split with 3 keyword names" )
Exit Sub
errorHandler:
TestUtil.ReportErrorHandler("verify_testSplit", Err, Error$, Erl)
End Sub