1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package ifc.io; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import lib.MultiMethodTest; 27*b1cdbd2cSJim Jagielski import lib.Status; 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski import com.sun.star.io.XInputStream; 30*b1cdbd2cSJim Jagielski import com.sun.star.io.XOutputStream; 31*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 32*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface; 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski /** 35*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.io.XInputStream</code> 36*b1cdbd2cSJim Jagielski * interface methods: 37*b1cdbd2cSJim Jagielski * <ul> 38*b1cdbd2cSJim Jagielski * <li><code>readBytes()</code></li> 39*b1cdbd2cSJim Jagielski * <li><code>readSomeBytes()</code></li> 40*b1cdbd2cSJim Jagielski * <li><code>skipBytes()</code></li> 41*b1cdbd2cSJim Jagielski * <li><code>available()</code></li> 42*b1cdbd2cSJim Jagielski * <li><code>closeInput()</code></li> 43*b1cdbd2cSJim Jagielski * </ul> <p> 44*b1cdbd2cSJim Jagielski * This test needs the following object relations : 45*b1cdbd2cSJim Jagielski * <ul> 46*b1cdbd2cSJim Jagielski * <li> <code>'StreamWriter'</code>: 47*b1cdbd2cSJim Jagielski * object that supports interface <code>XOutputStream</code>; 48*b1cdbd2cSJim Jagielski * a stream to write data to</li> 49*b1cdbd2cSJim Jagielski * <li> <code>'ByteData'</code> (of type <code>byte []</code>): 50*b1cdbd2cSJim Jagielski * data to write to the stream</li> 51*b1cdbd2cSJim Jagielski * <ul> <p> 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski * @see com.sun.star.io.XInputStream 54*b1cdbd2cSJim Jagielski */ 55*b1cdbd2cSJim Jagielski public class _XInputStream extends MultiMethodTest { 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski public XInputStream oObj = null; 58*b1cdbd2cSJim Jagielski public XOutputStream oStream = null; 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski byte[] bytes = null; 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski int bytesReady = 0 ; 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski /** 65*b1cdbd2cSJim Jagielski * Before the test, the stream writer and the data are ecxtracted from 66*b1cdbd2cSJim Jagielski * the object relations and the data is written to the stream. 67*b1cdbd2cSJim Jagielski */ before()68*b1cdbd2cSJim Jagielski public void before() { 69*b1cdbd2cSJim Jagielski XInterface x = (XInterface)tEnv.getObjRelation("StreamWriter"); 70*b1cdbd2cSJim Jagielski oStream = (XOutputStream)UnoRuntime.queryInterface( 71*b1cdbd2cSJim Jagielski XOutputStream.class, x) ; 72*b1cdbd2cSJim Jagielski bytes = (byte[])tEnv.getObjRelation("ByteData"); 73*b1cdbd2cSJim Jagielski try { 74*b1cdbd2cSJim Jagielski oStream.writeBytes(bytes); 75*b1cdbd2cSJim Jagielski } 76*b1cdbd2cSJim Jagielski catch(com.sun.star.io.NotConnectedException e) {} 77*b1cdbd2cSJim Jagielski catch(com.sun.star.io.BufferSizeExceededException e) {} 78*b1cdbd2cSJim Jagielski catch(com.sun.star.io.IOException e) {} 79*b1cdbd2cSJim Jagielski } 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski /** 82*b1cdbd2cSJim Jagielski * After the test, the stream writer is closed and the 83*b1cdbd2cSJim Jagielski * environment is disposed. 84*b1cdbd2cSJim Jagielski */ after()85*b1cdbd2cSJim Jagielski public void after() { 86*b1cdbd2cSJim Jagielski try { 87*b1cdbd2cSJim Jagielski oStream.flush(); 88*b1cdbd2cSJim Jagielski oStream.closeOutput(); 89*b1cdbd2cSJim Jagielski } 90*b1cdbd2cSJim Jagielski catch(com.sun.star.io.NotConnectedException e) {} 91*b1cdbd2cSJim Jagielski catch(com.sun.star.io.BufferSizeExceededException e) {} 92*b1cdbd2cSJim Jagielski catch(com.sun.star.io.IOException e) {} 93*b1cdbd2cSJim Jagielski this.disposeEnvironment(); 94*b1cdbd2cSJim Jagielski } 95*b1cdbd2cSJim Jagielski /** 96*b1cdbd2cSJim Jagielski * Test calls the method and stores number of available bytes. <p> 97*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method successfully returns 98*b1cdbd2cSJim Jagielski * and no exceptions were thrown. <p> 99*b1cdbd2cSJim Jagielski */ _available()100*b1cdbd2cSJim Jagielski public void _available() { 101*b1cdbd2cSJim Jagielski boolean result = true ; 102*b1cdbd2cSJim Jagielski try { 103*b1cdbd2cSJim Jagielski bytesReady = oObj.available() ; 104*b1cdbd2cSJim Jagielski log.println("Bytes available :" + bytesReady) ; 105*b1cdbd2cSJim Jagielski } catch (com.sun.star.io.IOException e){ 106*b1cdbd2cSJim Jagielski e.printStackTrace(log) ; 107*b1cdbd2cSJim Jagielski result = false ; 108*b1cdbd2cSJim Jagielski } 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski tRes.tested("available()", result) ; 111*b1cdbd2cSJim Jagielski } 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski /** 114*b1cdbd2cSJim Jagielski * Test reads one byte from stream. If no bytes available 115*b1cdbd2cSJim Jagielski * then test of method is skipped. <p> 116*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if returned value equal to number of read bytes, 117*b1cdbd2cSJim Jagielski * no exceptions were thrown and read data is not null. <p> 118*b1cdbd2cSJim Jagielski * The following method tests are to be completed successfully before : 119*b1cdbd2cSJim Jagielski * <ul> 120*b1cdbd2cSJim Jagielski * <li> <code> available() </code> : to have available number 121*b1cdbd2cSJim Jagielski * of bytes in stream </li> 122*b1cdbd2cSJim Jagielski * </ul> 123*b1cdbd2cSJim Jagielski */ _readBytes()124*b1cdbd2cSJim Jagielski public void _readBytes() { 125*b1cdbd2cSJim Jagielski requiredMethod("available()") ; 126*b1cdbd2cSJim Jagielski boolean result ; 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski if (bytesReady-- > 0) { 129*b1cdbd2cSJim Jagielski try { 130*b1cdbd2cSJim Jagielski byte[][] data = new byte[1][1] ; 131*b1cdbd2cSJim Jagielski int read = oObj.readBytes(data, 1) ; 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski result = read == 1 && 134*b1cdbd2cSJim Jagielski data != null && 135*b1cdbd2cSJim Jagielski data.length == 1 ; 136*b1cdbd2cSJim Jagielski } catch (com.sun.star.io.IOException e){ 137*b1cdbd2cSJim Jagielski e.printStackTrace(log) ; 138*b1cdbd2cSJim Jagielski result = false ; 139*b1cdbd2cSJim Jagielski } 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski tRes.tested("readBytes()", result) ; 142*b1cdbd2cSJim Jagielski } else { 143*b1cdbd2cSJim Jagielski log.println("No more bytes available in the stream"); 144*b1cdbd2cSJim Jagielski tRes.tested("readBytes()", Status.skipped(false)); 145*b1cdbd2cSJim Jagielski } 146*b1cdbd2cSJim Jagielski } 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski /** 149*b1cdbd2cSJim Jagielski * Test reads one byte from stream. If no bytes available 150*b1cdbd2cSJim Jagielski * then test of method is skipped. <p> 151*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if returned value equal to number of read bytes, 152*b1cdbd2cSJim Jagielski * no exceptions were thrown and read data is not null. <p> 153*b1cdbd2cSJim Jagielski * The following method tests are to be completed successfully before : 154*b1cdbd2cSJim Jagielski * <ul> 155*b1cdbd2cSJim Jagielski * <li> <code> available() </code> : to have available number 156*b1cdbd2cSJim Jagielski * of bytes in stream </li> 157*b1cdbd2cSJim Jagielski * </ul> 158*b1cdbd2cSJim Jagielski */ _readSomeBytes()159*b1cdbd2cSJim Jagielski public void _readSomeBytes() { 160*b1cdbd2cSJim Jagielski requiredMethod("available()") ; 161*b1cdbd2cSJim Jagielski boolean result ; 162*b1cdbd2cSJim Jagielski 163*b1cdbd2cSJim Jagielski if (bytesReady-- > 0) { 164*b1cdbd2cSJim Jagielski try { 165*b1cdbd2cSJim Jagielski byte[][] data = new byte [1][1] ; 166*b1cdbd2cSJim Jagielski int read = oObj.readSomeBytes(data, 1) ; 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski result = read == 1 && 169*b1cdbd2cSJim Jagielski data != null && 170*b1cdbd2cSJim Jagielski data.length == 1 ; 171*b1cdbd2cSJim Jagielski } catch (com.sun.star.io.IOException e){ 172*b1cdbd2cSJim Jagielski e.printStackTrace(log) ; 173*b1cdbd2cSJim Jagielski result = false ; 174*b1cdbd2cSJim Jagielski } 175*b1cdbd2cSJim Jagielski tRes.tested("readSomeBytes()", result) ; 176*b1cdbd2cSJim Jagielski } else { 177*b1cdbd2cSJim Jagielski log.println("No more bytes available in the stream") ; 178*b1cdbd2cSJim Jagielski tRes.tested("readBytes()", Status.skipped(false)); 179*b1cdbd2cSJim Jagielski } 180*b1cdbd2cSJim Jagielski } 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski /** 183*b1cdbd2cSJim Jagielski * Test skips one byte from stream. If no bytes available 184*b1cdbd2cSJim Jagielski * then test of method is skipped. <p> 185*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method successfully returns 186*b1cdbd2cSJim Jagielski * and no exceptions were thrown. <p> 187*b1cdbd2cSJim Jagielski * The following method tests are to be completed successfully before : 188*b1cdbd2cSJim Jagielski * <ul> 189*b1cdbd2cSJim Jagielski * <li> <code> available() </code> : to have available number 190*b1cdbd2cSJim Jagielski * of bytes in stream </li> 191*b1cdbd2cSJim Jagielski * </ul> 192*b1cdbd2cSJim Jagielski */ _skipBytes()193*b1cdbd2cSJim Jagielski public void _skipBytes() { 194*b1cdbd2cSJim Jagielski requiredMethod("available()") ; 195*b1cdbd2cSJim Jagielski boolean result ; 196*b1cdbd2cSJim Jagielski 197*b1cdbd2cSJim Jagielski if (bytesReady-- > 0) { 198*b1cdbd2cSJim Jagielski try { 199*b1cdbd2cSJim Jagielski oObj.skipBytes(1) ; 200*b1cdbd2cSJim Jagielski 201*b1cdbd2cSJim Jagielski result = true ; 202*b1cdbd2cSJim Jagielski } catch (com.sun.star.io.IOException e){ 203*b1cdbd2cSJim Jagielski e.printStackTrace(log) ; 204*b1cdbd2cSJim Jagielski result = false ; 205*b1cdbd2cSJim Jagielski } 206*b1cdbd2cSJim Jagielski tRes.tested("skipBytes()", result) ; 207*b1cdbd2cSJim Jagielski } else { 208*b1cdbd2cSJim Jagielski log.println("No more bytes available in the stream") ; 209*b1cdbd2cSJim Jagielski tRes.tested("readBytes()", Status.skipped(false)); 210*b1cdbd2cSJim Jagielski } 211*b1cdbd2cSJim Jagielski } 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski /** 214*b1cdbd2cSJim Jagielski * Test calls the method and forces object environment recreation. <p> 215*b1cdbd2cSJim Jagielski * Has <b> OK </b> status if the method successfully returns 216*b1cdbd2cSJim Jagielski * and no exceptions were thrown. <p> 217*b1cdbd2cSJim Jagielski * The following method tests are to be executed before : 218*b1cdbd2cSJim Jagielski * <ul> 219*b1cdbd2cSJim Jagielski * <li> <code> available() </code> </li> 220*b1cdbd2cSJim Jagielski * <li> <code> readBytes() </code> </li> 221*b1cdbd2cSJim Jagielski * <li> <code> readSomeBytes() </code> </li> 222*b1cdbd2cSJim Jagielski * <li> <code> skipBytes() </code> </li> 223*b1cdbd2cSJim Jagielski * </ul> 224*b1cdbd2cSJim Jagielski */ _closeInput()225*b1cdbd2cSJim Jagielski public void _closeInput() { 226*b1cdbd2cSJim Jagielski executeMethod("available()") ; 227*b1cdbd2cSJim Jagielski executeMethod("readBytes()") ; 228*b1cdbd2cSJim Jagielski executeMethod("readSomeBytes()") ; 229*b1cdbd2cSJim Jagielski executeMethod("skipBytes()") ; 230*b1cdbd2cSJim Jagielski 231*b1cdbd2cSJim Jagielski boolean result = true ; 232*b1cdbd2cSJim Jagielski try { 233*b1cdbd2cSJim Jagielski oObj.closeInput() ; 234*b1cdbd2cSJim Jagielski } catch (com.sun.star.io.IOException e){ 235*b1cdbd2cSJim Jagielski e.printStackTrace(log) ; 236*b1cdbd2cSJim Jagielski result = false ; 237*b1cdbd2cSJim Jagielski } 238*b1cdbd2cSJim Jagielski 239*b1cdbd2cSJim Jagielski tRes.tested("closeInput()", result) ; 240*b1cdbd2cSJim Jagielski this.disposeEnvironment() ; 241*b1cdbd2cSJim Jagielski } 242*b1cdbd2cSJim Jagielski } 243*b1cdbd2cSJim Jagielski 244