Files
odfstudio/basic/qa/basic_coverage/test_split_method.bas
T
Andreas Heinisch 529407e9a8 tdf#146873 - Inspect elements when they are non-fixed
For instance, when they were created using Split(), since they may have
been reassigned to a different type.

Change-Id: Ib562dad0156fac267982a224395559713831042c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209107
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
Tested-by: Jenkins
(cherry picked from commit 0f8dcc20df)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209286
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-19 08:39:29 +02:00

79 lines
3.3 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 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 - allow the assignment of different data types to the individual elements
Dim splitArr
splitArr = Split("a/b&&c/d", "&&")
Dim i As Integer
For i = 0 To UBound(splitArr)
' Without the fix in place, this assignment would have failed
splitArr(i) = Split(splitArr(i), "/")
' Without the fix in place, this test would have failed with:
' - Expected: 8200 (8192 for Array and 8 for String)
' - Actual : 8 (8 for String)
TestUtil.AssertEqual(VarType(splitArr(i)), 8200, "VarType(splitArr(i))")
Next
' tdf#146873 - CoreReflection.getType() must not error after Split() elements are wrapped in Array()
splitArr = Split("a-b-c", "-")
For i = 0 To UBound(splitArr)
splitArr(i) = Array(splitArr(i))
Next
Dim oReflection As Object : oReflection = CreateUnoService("com.sun.star.reflection.CoreReflection")
' Without the fix in place, this assignment would have failed
Dim oObject As Object : oObject = oReflection.GetType(splitArr)
' Without the fix in place, this test would have failed with:
' - Expected: 20 (20 for typelib_TypeClass_SEQUENCE)
' - Actual : Object variable not set
TestUtil.AssertEqual(oObject.TypeClass, 20, "CoreReflection.getType() for oObject.TypeClass after Split() + Array()")
' 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