summaryrefslogtreecommitdiffstats
path: root/basic/qa/basic_coverage/test_split_method.bas
blob: 52ba91fe3a65befdc52485a8638051b0bb3ac1e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
' 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

    Exit Sub
errorHandler:
    TestUtil.ReportErrorHandler("verify_testSplit", Err, Error$, Erl)
End Sub