| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> |
| <script:module xmlns:script="http://openoffice.org/2000/script" script:name="io_XMarkableStream" script:language="StarBasic"> |
| |
| |
| '************************************************************************* |
| ' |
| ' 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 |
| </script:module> |