/**************************************************************
*
* 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 java.util.Vector;
import lib.MultiMethodTest;
import lib.Status;
import lib.StatusException;
import com.sun.star.io.XDataInputStream;
import com.sun.star.io.XDataOutputStream;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XInterface;
/**
* Testing com.sun.star.io.XDataInputStream
* interface methods:
*
readBoolean()
readByte()
readChar()
readShort()
readLong()
readHyper()
readFloat()
readDouble()
readUTF()
* This test needs the following object relations : *
'StreamData'
(of type Vector
):
* vector of data for comparing with data that obtained from stream 'StreamWriter'
(of type XDataOutputStream
):
* a possiblitiy to write values to the stream. * After test completion object environment has to be recreated. * @see com.sun.star.io.XDataInputStream * @see java.util.Vector */ public class _XDataInputStream extends MultiMethodTest { public XDataInputStream oObj = null; public XDataOutputStream oStream = null; // values that are written private boolean writeBoolean; private byte writeByte; private char writeChar; private double writeDouble; private float writeFloat; private long writeHyper; private int writeLong; private short writeShort; private String writeUTF; /** * Retrieves relations. From relation 'StreamData' extracts * data of different types and fills the appropriate variables. * @throws StatusException If one of relations not found. */ public void before(){ XInterface x = (XInterface)tEnv.getObjRelation("StreamWriter") ; oStream = (XDataOutputStream)UnoRuntime.queryInterface( XDataOutputStream.class, x); Vector data = (Vector) tEnv.getObjRelation("StreamData") ; if (data == null || oStream == null) { throw new StatusException(Status.failed("Object relation not found.")); } // extract data from vector Object dataElem = null ; for (int i = 0; i < data.size(); i++) { dataElem = data.get(i) ; if (dataElem instanceof Boolean) { writeBoolean = ((Boolean)dataElem).booleanValue(); } else if (dataElem instanceof Byte) { writeByte = ((Byte)dataElem).byteValue(); } else if (dataElem instanceof Character) { writeChar = ((Character)dataElem).charValue(); } else if (dataElem instanceof Short) { writeShort = ((Short)dataElem).shortValue(); } else if (dataElem instanceof Integer) { writeLong = ((Integer)dataElem).intValue(); } else if (dataElem instanceof Long) { writeHyper = ((Long)dataElem).longValue(); } else if (dataElem instanceof Float) { writeFloat = ((Float)dataElem).floatValue(); } else if (dataElem instanceof Double) { writeDouble = ((Double)dataElem).doubleValue(); } else if (dataElem instanceof String) { writeUTF = (String)dataElem; } } } /** * First writes a value to outStream then reads it from input.
* * Has OK status if read and written values are equal.
*/ public void _readBoolean() { boolean res = true ; try { oStream.writeBoolean(writeBoolean); } catch (com.sun.star.io.IOException e) { e.printStackTrace(log); throw new StatusException("Can't write data to the stream", e); } byte readElem; try { readElem = oObj.readBoolean(); res = ((readElem != 0) == writeBoolean); if (!res) log.println("Must be read " + writeBoolean + " but was read " + (readElem != 0)) ; } catch (com.sun.star.io.IOException e) { log.println("Couldn't read Boolean from stream"); e.printStackTrace(log); res = false; } tRes.tested("readBoolean()", res) ; } /** * First writes a value to outStream then reads it from input.
* * Has OK status if read and written values are equal.
*/ public void _readByte() { boolean res = true ; try { oStream.writeByte(writeByte); } catch (com.sun.star.io.IOException e) { e.printStackTrace(log); throw new StatusException("Can't write data to the stream", e); } byte readElem; try { readElem = oObj.readByte() ; res = (readElem == writeByte); if (!res) log.println("Must be read " + writeByte + " but was read " + readElem); } catch(com.sun.star.io.IOException e) { log.println("Couldn't read Byte from stream"); e.printStackTrace(log); res = false; } tRes.tested("readByte()", res) ; } /** * First writes a value to outStream then reads it from input.
* * Has OK status if read and written values are equal.
*/ public void _readChar() { boolean res = true ; try { oStream.writeChar(writeChar); } catch (com.sun.star.io.IOException e) { e.printStackTrace(log); throw new StatusException("Can't write data to the stream", e); } char readElem; try { readElem = oObj.readChar() ; res = (readElem == writeChar); if (!res) log.println("Must be read " + writeChar + " but was read " + readElem) ; } catch( com.sun.star.io.IOException e ) { log.println("Couldn't read Char from stream"); e.printStackTrace(log); res = false; } tRes.tested("readChar()", res); } /** * First writes a value to outStream then reads it from input.
* * Has OK status if read and written values are equal.
*/ public void _readShort() { boolean res = true ; try { oStream.writeShort(writeShort); } catch (com.sun.star.io.IOException e) { e.printStackTrace(log); throw new StatusException("Can't write data to the stream", e); } short readElem; try { readElem = oObj.readShort() ; res = (readElem == writeShort); if (!res) log.println("Must be read " + writeShort + " but was read " + readElem) ; } catch( com.sun.star.io.IOException e ) { log.println("Couldn't read Short from stream"); e.printStackTrace(log); res = false; } tRes.tested("readShort()", res); } /** * First writes a value to outStream then reads it from input.
* * Has OK status if read and written values are equal.
*/ public void _readLong() { try { oStream.writeLong(writeLong); } catch (com.sun.star.io.IOException e) { e.printStackTrace(log); throw new StatusException("Can't write data to the stream", e); } boolean res = true ; int readElem; try { readElem = oObj.readLong() ; res = (readElem == writeLong); if (!res) log.println("Must be read " + writeLong + " but was read " + readElem) ; } catch( com.sun.star.io.IOException e ) { log.println("Couldn't read Long from stream"); e.printStackTrace(log); res = false; } tRes.tested("readLong()", res); } /** * First writes a value to outStream then reads it from input.
* * Has OK status if read and written values are equal.
*/ public void _readHyper() { boolean res = true ; try { oStream.writeHyper(writeHyper); } catch (com.sun.star.io.IOException e) { e.printStackTrace(log); throw new StatusException("Can't write data to the stream", e); } long readElem; try { readElem = oObj.readHyper() ; res = (readElem == writeHyper); if (!res) log.println("Must be read " + writeHyper + " but was read " + readElem) ; } catch( com.sun.star.io.IOException e ) { log.println("Couldn't read Hyper from stream"); e.printStackTrace(log); res = false; } tRes.tested("readHyper()", res); } /** * First writes a value to outStream then reads it from input.
* * Has OK status if read and written values are equal.
*/ public void _readFloat() { boolean res = true ; try { oStream.writeFloat(writeFloat); } catch (com.sun.star.io.IOException e) { e.printStackTrace(log); throw new StatusException("Can't write data to the stream", e); } float readElem; try { readElem = oObj.readFloat() ; res = (readElem == writeFloat); if (!res) log.println("Must be read " + writeFloat + " but was read " + readElem) ; } catch( com.sun.star.io.IOException e ) { log.println("Couldn't read Float from stream"); e.printStackTrace(log); res = false; } tRes.tested("readFloat()", res); } /** * First writes a value to outStream then reads it from input.
* * Has OK status if read and written values are equal.
*/ public void _readDouble() { boolean res = true ; try { oStream.writeDouble(writeDouble); } catch (com.sun.star.io.IOException e) { e.printStackTrace(log); throw new StatusException("Can't write data to the stream", e); } double readElem; try { readElem = oObj.readDouble() ; res = (readElem == writeDouble); if (!res) log.println("Must be read " + writeDouble + " but was read " + readElem) ; } catch( com.sun.star.io.IOException e ) { log.println("Couldn't read Double from stream"); e.printStackTrace(log); res = false; } tRes.tested("readDouble()", res); } /** * First writes a value to outStream then reads it from input.
* * Has OK status if read and written values are equal.
*/ public void _readUTF() { boolean res = true ; try { oStream.writeUTF(writeUTF); } catch (com.sun.star.io.IOException e) { e.printStackTrace(log); throw new StatusException("Can't write data to the stream", e); } String readElem; try { readElem = oObj.readUTF() ; res = writeUTF.equals(readElem) ; if (!res) log.println("Must be read '" + writeUTF + "' but was read '" + readElem + "'") ; } catch( com.sun.star.io.IOException e ) { log.println("Couldn't read String from stream"); e.printStackTrace(log); res = false; } tRes.tested("readUTF()", res); } /** * Forces object environment recreation. */ public void after() { try { oStream.flush(); } catch (com.sun.star.io.NotConnectedException e) { e.printStackTrace(log); } catch (com.sun.star.io.BufferSizeExceededException e) { e.printStackTrace(log); } catch (com.sun.star.io.IOException e) { e.printStackTrace(log); } this.disposeEnvironment() ; } }