'************************************************************************* '* '* $RCSfile: io_XMarkableStream.xba,v $ '* '* $Revision: 1.1 $ '* '* last change:$Date: 2003-01-27 17:50:48 $ '* '* The Contents of this file are made available subject to the terms of '* either of the following licenses '* '* - GNU Lesser General Public License Version 2.1 '* - Sun Industry Standards Source License Version 1.1 '* '* Sun Microsystems Inc., October, 2000 '* '* GNU Lesser General Public License Version 2.1 '* ============================================= '* Copyright 2000 by Sun Microsystems, Inc. '* 901 San Antonio Road, Palo Alto, CA 94303, USA '* '* This library is free software; you can redistribute it and/or '* modify it under the terms of the GNU Lesser General Public '* License version 2.1, as published by the Free Software Foundation. '* '* This library is distributed in the hope that it will be useful, '* but WITHOUT ANY WARRANTY; without even the implied warranty of '* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU '* Lesser General Public License for more details. '* '* You should have received a copy of the GNU Lesser General Public '* License along with this library; if not, write to the Free Software '* Foundation, Inc., 59 Temple Place, Suite 330, Boston, '* MA 02111-1307 USA '* '* '* Sun Industry Standards Source License Version 1.1 '* ================================================= '* The contents of this file are subject to the Sun Industry Standards '* Source License Version 1.1 (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.openoffice.org/license.html. '* '* Software provided under this License is provided on an "AS IS" basis, '* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, '* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, '* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. '* See the License for the specific provisions governing your rights and '* obligations concerning the Software. '* '* The Initial Developer of the Original Code is: Sun Microsystems, Inc. '* '* Copyright: 2000 by Sun Microsystems, Inc. '* '* All Rights Reserved. '* '* Contributor(s): _______________________________________ '* '* '************************************************************************* '************************************************************************* ' 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