/************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ package ifc.frame; import lib.MultiMethodTest; import util.utils; import com.sun.star.beans.PropertyValue; import com.sun.star.frame.XStorable; import com.sun.star.io.IOException; import com.sun.star.lang.XMultiServiceFactory; /** * Testing com.sun.star.frame.XStorable * interface methods: *

* Test is NOT multithread compilant.

* @see com.sun.star.frame.XStorable */ public class _XStorable extends MultiMethodTest { public XStorable oObj = null; // oObj filled by MultiMethodTest String storeUrl; boolean stored; /** * Test calls the method.

* Has OK status in three cases: *

    *
  1. An object has location stored in. Then if method does not return * null, it has OK status
  2. *
  3. An object has no location stored in. Then method storeAsURL() is * called, and if url is not null and equals to a url where component * was stored, method has OK status
  4. *
  5. An object has no location stored in. Then method storeAsURL() is * called, and if url is null and method returns null too, method * has OK status
  6. *

* The following method tests are to be completed successfully before : *

*/ public void _getLocation() { if (oObj.hasLocation()) { // if it has location it should know it tRes.tested("getLocation()", oObj.getLocation() != null); } else { // else try to obtain location requiredMethod("storeAsURL()"); if (storeUrl != null) { // if stored succesfully - check location log.println(oObj.getLocation() + "--" + storeUrl); tRes.tested("getLocation()", storeUrl.equals(oObj.getLocation())); } else { // if not - it should not have a location tRes.tested("getLocation()", oObj.getLocation() == null); } } } /** * Test calls the method, then result is checked.

* Has OK status if stored url is not null and method does not * return null or if stored url is null and the method returns null.

* The following method tests are to be completed successfully before : *

*/ public void _hasLocation() { requiredMethod("storeAsURL()"); if (storeUrl != null) { // if stored succesfully - it should have a location tRes.tested("hasLocation()", oObj.hasLocation()); } else { // if not - it should not tRes.tested("hasLocation()", !oObj.hasLocation()); } } /** * Test calls the method.

* Has OK status if value, returned by the method is not equal to * 'stored' variable. ( If it's readonly it should not have been stored. ) *

* The following method tests are to be completed successfully before : *

*/ public void _isReadonly() { requiredMethod("store()"); tRes.tested("isReadonly()", oObj.isReadonly() != stored); } /** * Object is stored into temporary directory.

* Has OK status if the method successfully returns * and no exceptions were thrown. */ public void _storeAsURL() { // getting an url to store String url = (String) utils.getOfficeTemp( (XMultiServiceFactory)tParam.getMSF()); if (url != null) { url += "xstorable.store.as.test"; log.println("store as '" + url + "'"); try { oObj.storeAsURL(url, new PropertyValue[0]); storeUrl = url; tRes.tested("storeAsURL()", true); } catch (IOException e) { log.println("Couldn't store as "+url+" : "+e.getMessage()); e.printStackTrace(log); storeUrl = null; tRes.tested("storeAsURL()", false); } } else { log.println("an url to store is not found"); } } /** * Object is stored into temporary directory.

* Has OK status if the method successfully returns * and no exceptions were thrown. */ public void _storeToURL() { // getting an url to store String url = (String) utils.getOfficeTemp( (XMultiServiceFactory)tParam.getMSF()); if (url != null) { url += "xstorable.store.as.test"; log.println("store to '" + url + "'"); try { oObj.storeToURL(url, new PropertyValue[0]); tRes.tested("storeToURL()", true); } catch (IOException e) { log.println("Couldn't store to "+url+" : "+e.getMessage()); e.printStackTrace(log); tRes.tested("storeToURL()", false); } } else { log.println("an url to store is not found"); } } /** * Test calls the method. Then result is checked.

* Has OK status if: *

    *
  1. component was stored, object is not readonly and has location
  2. *
  3. exception occured because of component is readonly * and wasn't stored
  4. *
*/ public void _store() { IOException ioE = null; try { oObj.store(); stored = true; } catch (IOException e) { stored = false; ioE = e; } if (oObj.hasLocation() && !oObj.isReadonly()) { tRes.tested("store()", stored); if (!stored) { log.println("Couldn't store : " + ioE.getMessage()); ioE.printStackTrace(log); } } else { tRes.tested("store()", !stored); if (stored) { if (!oObj.hasLocation()) { log.println("Shouldn't store successfully" + " a document without location"); } else { log.println("Shouldn't store successfully" + " a read-only document"); } } } } }// finished class _XStorable