'************************************************************************* ' ' Licensed to the Apache Software Foundation (ASF) under one ' or more contributor license agreements. See the NOTICE file ' distributed with this work for additional information ' regarding copyright ownership. The ASF licenses this file ' to you under the Apache License, Version 2.0 (the ' "License"); you may not use this file except in compliance ' with the License. You may obtain a copy of the License at ' ' http://www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, ' software distributed under the License is distributed on an ' "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ' KIND, either express or implied. See the License for the ' specific language governing permissions and limitations ' under the License. ' '************************************************************************* ' Be sure that all variables are dimensioned: option explicit Sub RunTest() '************************************************************************* ' INTERFACE: ' com.sun.star.io.XMarkableStream '************************************************************************* On Error Goto ErrHndl Dim bOK As Boolean Dim Bytes(20) As Integer Dim rBytes(0) Dim lastRByte As Integer Dim i As Integer Dim oOutStream As Object Dim oInStream As Object Dim iMark1 As Integer Dim iMark2 As Integer Dim iByte As Integer Dim iBytes As Integer Dim iByteAfterMark As Integer Dim iByteAfterMark1 As Integer Dim iByteAfterMark2 As Integer Dim iOffset As Integer Dim sFileStr As String if (cObjectName = "stm.MarkableInputStream" OR cObjectName = "stm.ObjectInputStream") then for i = 0 to ubound(Bytes()) Bytes(i) = i * 2 next i Out.Log("First reset streams and write some bytes...") oOutStream = getOutStream() oOutStream.writeBytes(Bytes()) ResetStreams() Test.StartMethod("createMark()") bOK = true Out.Log("Skip 3 bytes.") oObj.skipBytes(3) iMark1 = oObj.createMark() Out.Log("Mark" + iMark1 + " was created.") oObj.readBytes(rBytes(), 1) iByteAfterMark1 = rBytes(0) Out.Log("Byte after Mark" + iMark1 + " is " + int(iByteAfterMark1)) Out.Log("Skip 5 bytes.") oObj.skipBytes(5) iMark2 = oObj.createMark() Out.Log("Mark" + iMark2 + " was created.") oObj.readBytes(rBytes(), 1) iByteAfterMark2 = rBytes(0) Out.Log("Byte after Mark" + iMark2 + " is " + int(iByteAfterMark2)) Out.Log("Skip 7 bytes.") oObj.skipBytes(7) oObj.readBytes(rBytes(), 1) lastRByte = rBytes(0) Out.Log("Jump to Mark" + iMark2) oObj.jumpToMark(iMark2) oObj.readBytes(rBytes(), 1) iByteAfterMark = rBytes(0) Out.Log("Byte after Mark" + iMark2 + " is " + int(iByteAfterMark) + ", expected " + int(iByteAfterMark2)) bOK = bOK AND iByteAfterMark = iByteAfterMark2 Out.Log("Jump to Mark" + iMark1) oObj.jumpToMark(iMark1) oObj.readBytes(rBytes(), 1) iByteAfterMark = rBytes(0) Out.Log("Byte after Mark" + iMark1 + " is " + int(iByteAfterMark) + ", expected " + int(iByteAfterMark1)) bOK = bOK AND iByteAfterMark = iByteAfterMark1 Test.MethodTested("createMark()", bOK) Test.MethodTested("jumpToMark()", bOK) Test.StartMethod("offsetToMark()") bOK = true iOffset = oObj.offsetToMark(iMark2) Out.Log("Offset from current position to Mark" + iMark2 + " is " + iOffset) bOK = bOK AND iOffset = -5 Test.MethodTested("offsetToMark()", bOK) Test.StartMethod("deleteMark()") bOK = true Out.Log("Delete Mark" + iMark1) oObj.deleteMark(iMark1) On Error goto ErrHndl1 Out.Log("Trying to jump to deleted mark") oObj.jumpToMark(iMark1) Out.Log("No exception occured. FAILED") bOK = false goto Cont1 ErrHndl1: Out.Log("Expected exception: " + error) Cont1: Test.MethodTested("deleteMark()", bOK) Test.StartMethod("jumpToFurthest()") bOK = true oObj.readBytes(rBytes(), 1) iByte = rBytes(0) Out.Log("Perform a reading operation from the current position. Byte " + int(iByte) + " was read.") Out.Log("Changing position.") oObj.jumpToMark(iMark2) Out.Log("Changing position with jumpToFurthest()") oObj.jumpToFurthest() oObj.readBytes(rBytes(), 1) Out.Log("From the current position byte " + int(rBytes(0)) + " was read. Expected byte is " + int(lastRByte) + 2) bOK = bOK AND lastRByte + 2 = rBytes(0) Test.MethodTested("jumpToFurthest()", bOK) else bOK = true Out.Log("Write 3 bytes to stream") ReDim Bytes(2) As Integer for i = 0 to ubound(Bytes()) Bytes(i) = i next i oObj.writeBytes(Bytes()) Out.Log("Creating a Mark.") iMark1 = oObj.createMark() Out.Log("Write 4 bytes to stream") ReDim Bytes(3) As Integer for i = 0 to ubound(Bytes()) Bytes(i) = i + 3 next i oObj.writeBytes(Bytes()) Out.Log("Creating a Mark.") iMark2 = oObj.createMark() iOffset = oObj.offsetToMark(iMark1) Out.Log("Offset from current position to Mark" + iMark1 + " is " + iOffset) bOK = bOK AND iOffset = 4 Test.MethodTested("offsetToMark()", bOK) Out.Log("Write 5 bytes to stream") ReDim Bytes(4) As Integer for i = 0 to ubound(Bytes()) Bytes(i) = i + 7 next i oObj.writeBytes(Bytes()) Out.Log("Testing jumpToMark()") Out.Log("Testing deleteMark()") bOK = true Out.Log("Deleting Mark1") oObj.deleteMark(iMark2) On Error goto ErrHndl2 Out.Log("Trying to jump to Mark1") oObj.jumpToMark(iMark2) Out.Log("No exception occured - FAILED") bOK = false goto Cont2 ErrHndl2: Out.Log("Expected exception: " + error) Cont2: Test.MethodTested("deleteMark()", bOK) bOK = true Out.Log("Jump to Mark0") oObj.jumpToMark(iMark1) Test.MethodTested("jumpToMark()", bOK) Test.MethodTested("createMark()", bOK) bOK = true Out.Log("Write 2 bytes to stream") ReDim Bytes(1) As Integer for i = 0 to ubound(Bytes()) Bytes(i) = i + 12 next i oObj.writeBytes(Bytes()) Out.Log("Changing position") oObj.jumpToMark(iMark1) Out.Log("Changing position with jumpToFurthest()") oObj.jumpToFurthest() Out.Log("Write 2 bytes to stream") ReDim Bytes(1) As Integer for i = 0 to ubound(Bytes()) Bytes(i) = i + 14 next i oObj.writeBytes(Bytes()) Out.Log("Comparing file with expected {0, 1, 2, 12, 13, 5, 6, 7, 8, 9, 10, 11, 14, 15}") oInStream = getInStream() iBytes = oInStream.readBytes(rBytes(), 20) Out.Log("There are " + iBytes + " in stream:") sFileStr = "" + int(rBytes(0)) for i = 1 to ubound(rBytes()) sFileStr = sFileStr + ", " + int(rBytes(i)) next i Out.Log("They are {" + sFileStr + "}") bOK = bOK AND sFileStr = "0, 1, 2, 12, 13, 5, 6, 7, 8, 9, 10, 11, 14, 15" Test.MethodTested("jumpToFurthest()", bOK) end if ResetStreams() DisposeObj() CreateObj() Exit Sub ErrHndl: Test.Exception() bOK = false resume next End Sub