103 lines
3.2 KiB
QBasic
103 lines
3.2 KiB
QBasic
'
|
|
' 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
|
|
test_with
|
|
doUnitTest = TestUtil.GetResult()
|
|
End Function
|
|
|
|
Sub DEV_TST : MsgBox doUnitTesT : End Sub
|
|
|
|
Type foo
|
|
n As Integer
|
|
s As String
|
|
End Type
|
|
|
|
Dim get_foo_count As Integer
|
|
|
|
Function get_foo As foo
|
|
get_foo_count = get_foo_count + 1
|
|
get_foo = New foo
|
|
End Function
|
|
|
|
Sub with_in_another_procedure
|
|
On Local Error GoTo errorHandler
|
|
' tdf#162962 "End With" clears the internal variable; it used to fail,
|
|
' when several module's procedures used With blocks, using Option Explicit
|
|
Dim foo_var As New foo
|
|
With foo_var
|
|
.n = 6
|
|
TestUtil.AssertEqual(.n, 6, ".n")
|
|
End With ' Here (or in similar places in other tests) a "Variable Not Defined" error was generated
|
|
|
|
Exit Sub
|
|
errorHandler:
|
|
TestUtil.ReportErrorHandler("with_in_another_procedure", Err, Error$, Erl)
|
|
End Sub
|
|
|
|
Sub test_with
|
|
On Local Error GoTo errorHandler
|
|
|
|
Dim fields As String
|
|
With get_foo()
|
|
.n = 5
|
|
.s = "bar"
|
|
fields = "n = " & .n & " s = " & .s
|
|
End With
|
|
' get_foo must be called only once; before the fix, it failed with
|
|
' Number of calls to get_foo returned 4, expected 1
|
|
TestUtil.AssertEqual(get_foo_count, 1, "Number of calls to get_foo")
|
|
' Before the fix, each use of . resulted in creation of a new 'foo' object,
|
|
' and previous assignments didn't reflect in the result; it failed with
|
|
' Field values returned n = 0 s = , expected n = 5 s = bar
|
|
TestUtil.AssertEqual(fields, "n = 5 s = bar", "Field values")
|
|
|
|
' Make sure that With works with the original object, modifies it, and does not destroy
|
|
Dim foo_var As New foo
|
|
With foo_var
|
|
.n = 6
|
|
.s = "baz"
|
|
End With
|
|
fields = "n = " & foo_var.n & " s = " & foo_var.s
|
|
TestUtil.AssertEqual(fields, "n = 6 s = baz", "Field values of foo_var")
|
|
|
|
' tdf#163219: make sure that assigning the variable in the block works
|
|
Set foo_var = Nothing
|
|
TestUtil.Assert(foo_var Is Nothing, "foo_var Is Nothing")
|
|
With foo_var
|
|
foo_var = New foo
|
|
.n = 7
|
|
.s = "something"
|
|
End With
|
|
TestUtil.AssertEqual(foo_var.n, 7, "foo_var.n")
|
|
TestUtil.AssertEqual(foo_var.s, "something", "foo_var.s")
|
|
|
|
' tdf#162935: Test an UNO struct - it used to copy into the With variable, not used by ref
|
|
Dim uno_struct As New com.sun.star.table.CellRangeAddress
|
|
With uno_struct
|
|
.Sheet = 1
|
|
.StartColumn = 2
|
|
.StartRow = 3
|
|
.EndColumn = 4
|
|
.EndRow = 5
|
|
End With
|
|
TestUtil.AssertEqual(uno_struct.Sheet, 1, "uno_struct.Sheet")
|
|
TestUtil.AssertEqual(uno_struct.StartColumn, 2, "uno_struct.StartColumn")
|
|
TestUtil.AssertEqual(uno_struct.StartRow, 3, "uno_struct.StartRow")
|
|
TestUtil.AssertEqual(uno_struct.EndColumn, 4, "uno_struct.EndColumn")
|
|
TestUtil.AssertEqual(uno_struct.EndRow, 5, "uno_struct.EndRow")
|
|
|
|
with_in_another_procedure() ' test tdf#162962
|
|
|
|
Exit Sub
|
|
errorHandler:
|
|
TestUtil.ReportErrorHandler("test_with", Err, Error$, Erl)
|
|
End Sub
|