1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 package ifc.io; 29 30 import lib.MultiMethodTest; 31 import lib.Status; 32 import lib.StatusException; 33 34 import com.sun.star.beans.XPropertySet; 35 import com.sun.star.io.XObjectInputStream; 36 import com.sun.star.io.XObjectOutputStream; 37 import com.sun.star.io.XPersistObject; 38 import com.sun.star.uno.UnoRuntime; 39 40 /** 41 * Testing <code>com.sun.star.io.XObjectOutputStream</code> 42 * interface methods: 43 * <ul> 44 * <li><code>writeObject()</code></li> 45 * </ul> <p> 46 * This test needs the following object relations : 47 * <ul> 48 * <li> <code>'InputStream'</code> (of type <code>XObjectInputStream</code>)</li> 49 * persist object for testing of write to stream</ul> 50 * @see com.sun.star.io.XObjectInputStream 51 * @see com.sun.star.io.XObjectOutputStream 52 * @see com.sun.star.io.XPersistObject 53 */ 54 public class _XObjectOutputStream extends MultiMethodTest { 55 56 public XObjectOutputStream oObj = null; 57 58 /** 59 * Test creates persist object, sets label of object, 60 * calls the method for created persist object 61 * and checks label of object that was read from input stream. <p> 62 * Has <b> OK </b> status if the method successfully returns 63 * and labels are equals. <p> 64 */ 65 public void _writeObject() throws Exception { 66 XObjectInputStream oInStream = (XObjectInputStream) 67 tEnv.getObjRelation("InputStream"); 68 if (oInStream == null) throw 69 new StatusException(Status.failed("Relation 'InputStream' failed")); 70 71 // use own implementation of XPersistObject, so test runs 72 // without an office 73 XPersistObject objWrite = (XPersistObject) 74 tEnv.getObjRelation("PersistObject"); 75 if (objWrite == null) throw 76 new StatusException(Status.failed("Relation 'PersistObject' failed")); 77 78 XPropertySet propObjWrite = (XPropertySet) 79 UnoRuntime.queryInterface(XPropertySet.class, objWrite); 80 81 // This XPersistObject has a property called 'String' 82 propObjWrite.setPropertyValue("String", "XObjectOutputStream"); 83 84 log.println("Writing object with label 'XObjectOutputStream'"); 85 oObj.writeObject(objWrite); 86 XPersistObject readObj = oInStream.readObject(); 87 XPropertySet propSet = (XPropertySet) 88 UnoRuntime.queryInterface(XPropertySet.class, readObj); 89 String label = (String)propSet.getPropertyValue("String"); 90 log.println("Object with label '" + label + "' was read"); 91 92 tRes.tested("writeObject()", label.equals("XObjectOutputStream")) ; 93 } 94 } 95 96