/************************************************************** * * 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.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 successfully - 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 successfully - 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 occurred 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