blob: 25b3ea16dbc7039201d8f6180e92087c7b826684 [file] [log] [blame]
/**************************************************************
*
* 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.
*
*************************************************************/
package ifc.io;
import lib.MultiMethodTest;
import lib.Status;
import com.sun.star.io.XInputStream;
import com.sun.star.io.XOutputStream;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XInterface;
/**
* Testing <code>com.sun.star.io.XInputStream</code>
* interface methods:
* <ul>
* <li><code>readBytes()</code></li>
* <li><code>readSomeBytes()</code></li>
* <li><code>skipBytes()</code></li>
* <li><code>available()</code></li>
* <li><code>closeInput()</code></li>
* </ul> <p>
* This test needs the following object relations :
* <ul>
* <li> <code>'StreamWriter'</code>:
* object that supports interface <code>XOutputStream</code>;
* a stream to write data to</li>
* <li> <code>'ByteData'</code> (of type <code>byte []</code>):
* data to write to the stream</li>
* <ul> <p>
* @see com.sun.star.io.XInputStream
*/
public class _XInputStream extends MultiMethodTest {
public XInputStream oObj = null;
public XOutputStream oStream = null;
byte[] bytes = null;
int bytesReady = 0 ;
/**
* Before the test, the stream writer and the data are ecxtracted from
* the object relations and the data is written to the stream.
*/
public void before() {
XInterface x = (XInterface)tEnv.getObjRelation("StreamWriter");
oStream = (XOutputStream)UnoRuntime.queryInterface(
XOutputStream.class, x) ;
bytes = (byte[])tEnv.getObjRelation("ByteData");
try {
oStream.writeBytes(bytes);
}
catch(com.sun.star.io.NotConnectedException e) {}
catch(com.sun.star.io.BufferSizeExceededException e) {}
catch(com.sun.star.io.IOException e) {}
}
/**
* After the test, the stream writer is closed and the
* environment is disposed.
*/
public void after() {
try {
oStream.flush();
oStream.closeOutput();
}
catch(com.sun.star.io.NotConnectedException e) {}
catch(com.sun.star.io.BufferSizeExceededException e) {}
catch(com.sun.star.io.IOException e) {}
this.disposeEnvironment();
}
/**
* Test calls the method and stores number of available bytes. <p>
* Has <b> OK </b> status if the method successfully returns
* and no exceptions were thrown. <p>
*/
public void _available() {
boolean result = true ;
try {
bytesReady = oObj.available() ;
log.println("Bytes available :" + bytesReady) ;
} catch (com.sun.star.io.IOException e){
e.printStackTrace(log) ;
result = false ;
}
tRes.tested("available()", result) ;
}
/**
* Test reads one byte from stream. If no bytes available
* then test of method is skipped. <p>
* Has <b> OK </b> status if returned value equal to number of read bytes,
* no exceptions were thrown and read data is not null. <p>
* The following method tests are to be completed successfully before :
* <ul>
* <li> <code> available() </code> : to have available number
* of bytes in stream </li>
* </ul>
*/
public void _readBytes() {
requiredMethod("available()") ;
boolean result ;
if (bytesReady-- > 0) {
try {
byte[][] data = new byte[1][1] ;
int read = oObj.readBytes(data, 1) ;
result = read == 1 &&
data != null &&
data.length == 1 ;
} catch (com.sun.star.io.IOException e){
e.printStackTrace(log) ;
result = false ;
}
tRes.tested("readBytes()", result) ;
} else {
log.println("No more bytes available in the stream");
tRes.tested("readBytes()", Status.skipped(false));
}
}
/**
* Test reads one byte from stream. If no bytes available
* then test of method is skipped. <p>
* Has <b> OK </b> status if returned value equal to number of read bytes,
* no exceptions were thrown and read data is not null. <p>
* The following method tests are to be completed successfully before :
* <ul>
* <li> <code> available() </code> : to have available number
* of bytes in stream </li>
* </ul>
*/
public void _readSomeBytes() {
requiredMethod("available()") ;
boolean result ;
if (bytesReady-- > 0) {
try {
byte[][] data = new byte [1][1] ;
int read = oObj.readSomeBytes(data, 1) ;
result = read == 1 &&
data != null &&
data.length == 1 ;
} catch (com.sun.star.io.IOException e){
e.printStackTrace(log) ;
result = false ;
}
tRes.tested("readSomeBytes()", result) ;
} else {
log.println("No more bytes available in the stream") ;
tRes.tested("readBytes()", Status.skipped(false));
}
}
/**
* Test skips one byte from stream. If no bytes available
* then test of method is skipped. <p>
* Has <b> OK </b> status if the method successfully returns
* and no exceptions were thrown. <p>
* The following method tests are to be completed successfully before :
* <ul>
* <li> <code> available() </code> : to have available number
* of bytes in stream </li>
* </ul>
*/
public void _skipBytes() {
requiredMethod("available()") ;
boolean result ;
if (bytesReady-- > 0) {
try {
oObj.skipBytes(1) ;
result = true ;
} catch (com.sun.star.io.IOException e){
e.printStackTrace(log) ;
result = false ;
}
tRes.tested("skipBytes()", result) ;
} else {
log.println("No more bytes available in the stream") ;
tRes.tested("readBytes()", Status.skipped(false));
}
}
/**
* Test calls the method and forces object environment recreation. <p>
* Has <b> OK </b> status if the method successfully returns
* and no exceptions were thrown. <p>
* The following method tests are to be executed before :
* <ul>
* <li> <code> available() </code> </li>
* <li> <code> readBytes() </code> </li>
* <li> <code> readSomeBytes() </code> </li>
* <li> <code> skipBytes() </code> </li>
* </ul>
*/
public void _closeInput() {
executeMethod("available()") ;
executeMethod("readBytes()") ;
executeMethod("readSomeBytes()") ;
executeMethod("skipBytes()") ;
boolean result = true ;
try {
oObj.closeInput() ;
} catch (com.sun.star.io.IOException e){
e.printStackTrace(log) ;
result = false ;
}
tRes.tested("closeInput()", result) ;
this.disposeEnvironment() ;
}
}