diff options
Diffstat (limited to 'qadevOOo/tests/java/ifc/util')
23 files changed, 2860 insertions, 0 deletions
diff --git a/qadevOOo/tests/java/ifc/util/_PathSettings.java b/qadevOOo/tests/java/ifc/util/_PathSettings.java new file mode 100644 index 000000000..7d6e42f7f --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_PathSettings.java @@ -0,0 +1,79 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiPropertyTest; +import util.utils; + +/** + * Testing <code>com.sun.star.util.PathSettings</code> + * service properties : + * <ul> + * <li><code> Addin </code></li> + * <li><code> AutoCorrect </code></li> + * <li><code> AutoText </code></li> + * <li><code> Backup </code></li> + * <li><code> Basic </code></li> + * <li><code> Bitmap </code></li> + * <li><code> Config </code></li> + * <li><code> Dictionary </code></li> + * <li><code> Favorites </code></li> + * <li><code> Filter </code></li> + * <li><code> Gallery </code></li> + * <li><code> Graphic </code></li> + * <li><code> Help </code></li> + * <li><code> Linguistic </code></li> + * <li><code> Module </code></li> + * <li><code> Palette </code></li> + * <li><code> Plugin </code></li> + * <li><code> Storage </code></li> + * <li><code> Temp </code></li> + * <li><code> Template </code></li> + * <li><code> UIConfig </code></li> + * <li><code> UserConfig </code></li> + * <li><code> UserDictionary</code></li> + * <li><code> Work </code></li> + * </ul> <p> + * + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.util.PathSettings + */ +public class _PathSettings extends MultiPropertyTest { + + /** + * This path list could be empty after SO installation. + * And the URL is validated to match the pattern 'file:///*' + * that's why the custom changing of this property required. + */ + public void _UIConfig() { + testProperty("UIConfig", new PropertyTester() { + @Override + public Object getNewValue(String propName, Object oldVal) { + String path = (String) oldVal; + if (path == null) path = ""; + if (path.length() > 0 && !path.endsWith(";")) { + path += ";"; + } + path += utils.getOfficeTemp(tParam.getMSF()); + return path; + } + }); + } +} + diff --git a/qadevOOo/tests/java/ifc/util/_SearchDescriptor.java b/qadevOOo/tests/java/ifc/util/_SearchDescriptor.java new file mode 100644 index 000000000..e9e883e1b --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_SearchDescriptor.java @@ -0,0 +1,44 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiPropertyTest; + +/** + * Testing <code>com.sun.star.util.SearchDescriptor</code> + * service properties : + * <ul> + * <li><code> SearchBackwards</code></li> + * <li><code> SearchCaseSensitive</code></li> + * <li><code> SearchWords</code></li> + * <li><code> SearchRegularExpression</code></li> + * <li><code> SearchStyles</code></li> + * <li><code> SearchSimilarity</code></li> + * <li><code> SearchSimilarityRelax</code></li> + * <li><code> SearchSimilarityRemove</code></li> + * <li><code> SearchSimilarityAdd</code></li> + * <li><code> SearchSimilarityExchange</code></li> + * </ul> <p> + * Properties testing is automated by <code>lib.MultiPropertyTest</code>. + * @see com.sun.star.util.SearchDescriptor + */ +public class _SearchDescriptor extends MultiPropertyTest { + +} //finish class _SearchDescriptor + diff --git a/qadevOOo/tests/java/ifc/util/_XCancellable.java b/qadevOOo/tests/java/ifc/util/_XCancellable.java new file mode 100644 index 000000000..85ab779df --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XCancellable.java @@ -0,0 +1,57 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XCancellable; + +/** +* Testing <code>com.sun.star.util.XCancellable</code> +* interface methods : +* <ul> +* <li><code> cancel()</code></li> +* </ul> <p> +* @see com.sun.star.util.XCancellable +*/ +public class _XCancellable extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XCancellable oObj = null ; + + /** + * Just calls the method. <p> + * Has <b>OK</b> status if no exception has occurred. <p> + */ + public void _cancel() { + oObj.cancel() ; + + tRes.tested("cancel()", true) ; + } + + /** + * Forces object recreation. + */ + @Override + public void after() { + disposeEnvironment() ; + } + +} // finish class _XCancellable + diff --git a/qadevOOo/tests/java/ifc/util/_XChangesBatch.java b/qadevOOo/tests/java/ifc/util/_XChangesBatch.java new file mode 100644 index 000000000..c0e87f3ad --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XChangesBatch.java @@ -0,0 +1,164 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameReplace; +import com.sun.star.util.ElementChange; +import lib.MultiMethodTest; + +import com.sun.star.util.XChangesBatch; +import lib.Status; +import lib.StatusException; + +public class _XChangesBatch extends MultiMethodTest { + + public XChangesBatch oObj; + private Object changeElement = null; + private Object originalElement = null; + private String elementName = null; + private XPropertySet xProp = null; + private XNameReplace xNameReplace = null; + + /** + * add a change that can be committed + */ + @Override + protected void before() { + changeElement = tEnv.getObjRelation("XChangesBatch.ChangeElement"); + originalElement = tEnv.getObjRelation("XChangesBatch.OriginalElement"); + elementName = (String)tEnv.getObjRelation("XChangesBatch.PropertyName"); + + // to do a change, get an XPropertySet + xProp = (XPropertySet)tEnv.getObjRelation("XChangesBatch.PropertySet"); + try { + if (originalElement == null && xProp != null) + originalElement = xProp.getPropertyValue(elementName); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not get property '" + elementName + "'.", e); + } + + // or get an XNameReplace + xNameReplace = (XNameReplace)tEnv.getObjRelation("XChangesBatch.NameReplace"); + try { + if (originalElement == null && xNameReplace != null) + originalElement = xNameReplace.getByName(elementName); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not get element by name '" + elementName + "'.", e); + } + + if (changeElement == null || originalElement == null || elementName == null || (xProp == null && xNameReplace == null)) { + log.println( + (changeElement == null?"Missing property 'XChangesBatch.ChangeElement'\n":"") + + (originalElement == null?"Missing property 'XChangesBatch.OriginalElement'\n":"") + + (elementName == null?"Missing property 'XChangesBatch.PropertyName'\n":"") + + (xProp == null?"Missing property 'XChangesBatch.PropertySet'":"") + + (xNameReplace == null?"Missing property 'XChangesBatch.NameReplace'":"") + ); + throw new StatusException("Some needed object relations are missing.", new Exception()); + } + } + + public void _commitChanges() { + requiredMethod("getPendingChanges()"); + try { + log.println("Committing changes."); + oObj.commitChanges(); + } + catch(com.sun.star.lang.WrappedTargetException e) { + tRes.tested("commitChanges()", Status.exception(e)); + return; + } + try { + executeChange(originalElement); + } + catch(StatusException e) { + tRes.tested("hasPendingChanges()", Status.exception(e)); + return; + } + + try { + log.println("Commit changes back."); + oObj.commitChanges(); + } + catch(com.sun.star.lang.WrappedTargetException e) { + tRes.tested("commitChanges()", Status.exception(e)); + return; + } + tRes.tested("commitChanges()", true); + } + + public void _getPendingChanges() { + requiredMethod("hasPendingChanges()"); + ElementChange[]changes = oObj.getPendingChanges(); + if (changes == null) { + log.println("Returned changes was 'null'"); + log.println("It should have been 1 change."); + tRes.tested("getPendingChanges()", false); + } else if (changes.length != 1) { + int amount = changes.length; + log.println("Found not the right number of changes: " + amount); + log.println("It should have been 1 change."); + for (int i=0; i<amount; i++) { + System.out.println("Detailed Change " + i + " -> new Element: '" + + changes[i].Element.toString() + "' ReplacedElement: '" + + changes[i].ReplacedElement.toString() + "'"); + } + tRes.tested("getPendingChanges()", false); + } + else { + boolean result = changes[0].ReplacedElement.equals(originalElement); + result &= changes[0].Element.equals(changeElement); + tRes.tested("getPendingChanges()", result); + } + } + + public void _hasPendingChanges() { + try { + executeChange(changeElement); + } + catch(StatusException e) { + tRes.tested("hasPendingChanges()", Status.exception(e)); + return; + } + boolean hasPendingChanges = oObj.hasPendingChanges(); + tRes.tested("hasPendingChanges()", hasPendingChanges); + } + + private void executeChange(Object element) throws StatusException { + if (xProp != null) { + try { + xProp.setPropertyValue(elementName, element); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not set property '" + elementName + "'.", e); + } + } + else if (xNameReplace != null) { + try { + xNameReplace.replaceByName(elementName, element); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not replace '" + elementName + "' by name.", e); + } + } + } +} diff --git a/qadevOOo/tests/java/ifc/util/_XChangesNotifier.java b/qadevOOo/tests/java/ifc/util/_XChangesNotifier.java new file mode 100644 index 000000000..73592df4e --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XChangesNotifier.java @@ -0,0 +1,213 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameReplace; +import com.sun.star.util.XChangesBatch; +import com.sun.star.util.XChangesListener; +import com.sun.star.util.XChangesNotifier; +import lib.StatusException; +import lib.MultiMethodTest; + +/** + * Test the XChangesNotifier interface. To produce some changes, + * XChangesBatch is used. + * @see com.sun.star.util.XChangesNotifier + * @see com.sun.star.util.XChangesBatch + */ +public class _XChangesNotifier extends MultiMethodTest { + + public XChangesNotifier oObj = null; + private XChangesBatch xBatch = null; + private Object changeElement = null; + private Object originalElement = null; + private String elementName = null; + private XPropertySet xProp = null; + private XNameReplace xNameReplace = null; + private _XChangesNotifier.MyChangesListener xListener = null; + + /** + * Own implementation of the XChangesListener interface + * @see com.sun.star.util.XChangesListener + */ + private static class MyChangesListener implements XChangesListener { + /** Just lo a call of the listener **/ + boolean bChangesOccurred = false; + + /** A change did occur + * @param changesEvent The event. + **/ + public void changesOccurred(com.sun.star.util.ChangesEvent changesEvent) { + bChangesOccurred = true; + } + + /** Disposing of the listener + * @param eventObject The event. + **/ + public void disposing(com.sun.star.lang.EventObject eventObject) { + bChangesOccurred = true; + } + + /** + * Reset the listener + */ + public void reset() { + bChangesOccurred = false; + } + + /** + * Has the listener been called? + * @return True, if the listener has been called. + */ + public boolean didChangesOccur() { + return bChangesOccurred; + } + } + + /** + * Before the test: get the 'XChangesNotifier.ChangesBatch' object relation + * and create the listener. + */ + @Override + protected void before() { + xBatch = (XChangesBatch)tEnv.getObjRelation("XChangesNotifier.ChangesBatch"); + changeElement = tEnv.getObjRelation("XChangesNotifier.ChangeElement"); + originalElement = tEnv.getObjRelation("XChangesNotifier.OriginalElement"); + elementName = (String)tEnv.getObjRelation("XChangesNotifier.PropertyName"); + + xProp = (XPropertySet)tEnv.getObjRelation("XChangesNotifier.PropertySet"); + try { + if (originalElement == null && xProp != null) + originalElement = xProp.getPropertyValue(elementName); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not get property '" + elementName + "'.", e); + } + + // or get an XNameReplace + xNameReplace = (XNameReplace)tEnv.getObjRelation("XChangesNotifier.NameReplace"); + try { + if (originalElement == null && xNameReplace != null) + originalElement = xNameReplace.getByName(elementName); + } + catch(com.sun.star.uno.Exception e) { + throw new StatusException("Could not get element by name '" + elementName + "'.", e); + } + + if (changeElement == null || originalElement == null || elementName == null || (xProp == null && xNameReplace == null) || xBatch == null) { + log.println( + (changeElement == null?"Missing property 'XChangesNotifier.ChangeElement'\n":"") + + (originalElement == null?"Missing property 'XChangesNotifier.OriginalElement'\n":"") + + (elementName == null?"Missing property 'XChangesNotifier.PropertyName'\n":"") + + (xProp == null?"Missing property 'XChangesNotifier.PropertySet'":"") + + (xNameReplace == null?"Missing property 'XChangesNotifier.NameReplace'":"") + + (xBatch == null?"Missing property 'XChangesNotifier.ChangesBatch'":"") + ); + throw new StatusException("Some needed object relations are missing.", new Exception()); + } + + xListener = new _XChangesNotifier.MyChangesListener(); + } + + /** test addChangesListener **/ + public void _addChangesListener() { + oObj.addChangesListener(xListener); + tRes.tested("addChangesListener()", true); + } + + /** test removeChangesListener **/ + public void _removeChangesListener() { + requiredMethod("addChangesListener()"); + boolean result = true; + result &= commitChanges(); + result &= xListener.didChangesOccur(); + if (!result) + log.println("Listener has not been called."); + oObj.removeChangesListener(xListener); + xListener.reset(); + result &= redoChanges(); + boolean result2 = xListener.didChangesOccur(); + if (result2) + log.println("Removed listener has been called."); + + tRes.tested("removeChangesListener()", result && !result2); + } + + /** + * Commit a change, using an implementation of the XChangesBatch interface. + * @return true, if changing worked. + */ + private boolean commitChanges() { + if (!executeChange(changeElement)) return false; + if (!xBatch.hasPendingChanges()) return false; + try { + xBatch.commitChanges(); + } + catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + return false; + } + return true; + } + + /** + * Redo the change, using an implementation of the XChangesBatch interface. + * @return true, if changing worked. + */ + private boolean redoChanges() { + if (!executeChange(originalElement)) return false; + if (!xBatch.hasPendingChanges()) return false; + try { + xBatch.commitChanges(); + } + catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + return false; + } + return true; + } + + /** + * Execute the change, use XPropertySet or XNameReplace + * @return False, if changing did throw an exception. + */ + private boolean executeChange(Object element) throws StatusException { + if (xProp != null) { + try { + xProp.setPropertyValue(elementName, element); + } + catch(com.sun.star.uno.Exception e) { + e.printStackTrace(log); + return false; + } + } + else if (xNameReplace != null) { + try { + xNameReplace.replaceByName(elementName, element); + } + catch(com.sun.star.uno.Exception e) { + e.printStackTrace(log); + return false; + } + } + return true; + } + +} diff --git a/qadevOOo/tests/java/ifc/util/_XCloneable.java b/qadevOOo/tests/java/ifc/util/_XCloneable.java new file mode 100644 index 000000000..62de17b01 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XCloneable.java @@ -0,0 +1,102 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import java.util.Arrays; + +import com.sun.star.lang.XServiceInfo; +import com.sun.star.lang.XTypeProvider; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import com.sun.star.util.XCloneable; + +/** +* Testing <code>com.sun.star.util.XCloneable</code> +* interface methods : +* <ul> +* <li><code> createClone()</code></li> +* </ul> <p> +* @see com.sun.star.util.XCloneable +*/ +public class _XCloneable extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XCloneable oObj = null ; + protected XCloneable clone = null; + + /** + * calls the method. <p> + * Has <b>OK</b> status if no exception has occurred. <p> + */ + public void _createClone() { + boolean result = true; + clone = oObj.createClone(); + + //check if the implementationname equals + result &= checkImplementationName(oObj,clone); + + //check ImplementationID + result &= checkImplementationID(oObj, clone); + + tRes.tested("createClone()", result) ; + } + + protected byte[] getImplementationID(XInterface ifc) { + byte[] res = new byte[0]; + XTypeProvider provider = UnoRuntime.queryInterface(XTypeProvider.class, ifc); + if (provider != null) { + res = provider.getImplementationId(); + } + return res; + } + + protected boolean checkImplementationID(XInterface org, XInterface clone) { + boolean res = Arrays.equals(getImplementationID(org), getImplementationID(clone)); + if (res && getImplementationID(org).length > 0) { + log.println("ImplementationID equals the clone has the same id as the original Object"); + log.println("------------------------------------------------------------------------"); + } + return res; + } + + protected String getImplementationName(XInterface ifc) { + String res = ""; + XServiceInfo info = UnoRuntime.queryInterface(XServiceInfo.class, ifc); + if (info != null) { + res = info.getImplementationName(); + } + return res; + } + + protected boolean checkImplementationName(XInterface org, XInterface clone) { + boolean res = getImplementationName(org).equals( + getImplementationName(clone)); + if (!res) { + log.println("ImplementationName differs: "); + log.println("Expected: "+getImplementationName(org)); + log.println("Gained: "+getImplementationName(clone)); + log.println("----------------------------------------"); + } + return res; + } + +} // finish class _XCloneable + diff --git a/qadevOOo/tests/java/ifc/util/_XFlushable.java b/qadevOOo/tests/java/ifc/util/_XFlushable.java new file mode 100644 index 000000000..d8a56bd8d --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XFlushable.java @@ -0,0 +1,101 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XFlushListener; +import com.sun.star.util.XFlushable; + +/** + * Testing <code>com.sun.star.util.XFlushable</code> + * interface methods : + * <ul> + * <li><code> flush()</code></li> + * <li><code> addFlushListener()</code></li> + * <li><code> removeFlushListener()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XFlushable + */ +public class _XFlushable extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XFlushable oObj = null ; + + /** + * Simple <code>XFlushListener</code> implementation which + * just registers if any calls to its methods were made. + */ + private static class MyFlushListener implements XFlushListener{ + boolean called = false ; + public void flushed(com.sun.star.lang.EventObject e) { + called = true ; + } + public void disposing(com.sun.star.lang.EventObject e) {} + public boolean wasFlushed() { return called; } + } + + private final MyFlushListener listener1 = new MyFlushListener(), + listener2 = new MyFlushListener() ; + + /** + * Test call method <code>flush</code> and checks if added listener + * was called and removed one wasn't. <p> + * Has OK status if no exception has occurred. <p> + * Methods to be executed before : + * {@link #_addFlushListener}, + * {@link #_removeFlushListener} + */ + public void _flush() { + executeMethod("addFlushListener()") ; + executeMethod("removeFlushListener()") ; + + oObj.flush() ; + + tRes.tested("flush()", true) ; + tRes.tested("addFlushListener()", listener2.wasFlushed()) ; + tRes.tested("removeFlushListener()", !listener1.wasFlushed()) ; + } + + /** + * Test adds two listeners, one of which will be removed then.<p> + * Has OK status if the listener was called on <code>flush()</code> + * method call. + */ + public void _addFlushListener() { + oObj.addFlushListener(listener1) ; + oObj.addFlushListener(listener2) ; + } + + /** + * Test removes one of two listeners added before. <p> + * Has OK status if the listener removed wasn't called on + * <code>flush()</code> method call. + * Methods to be executed before : + * {@link #_addFlushListener}, + */ + public void _removeFlushListener() { + executeMethod("addFlushListener()") ; + + oObj.removeFlushListener(listener1) ; + } + +} // finish class _XFlushable + diff --git a/qadevOOo/tests/java/ifc/util/_XImportable.java b/qadevOOo/tests/java/ifc/util/_XImportable.java new file mode 100644 index 000000000..6a36526db --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XImportable.java @@ -0,0 +1,192 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.table.XCellRange; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.XImportable; + + +/** + * checks the Interface XImportable + */ +public class _XImportable extends MultiMethodTest { + public XImportable oObj; + protected PropertyValue[] descriptor = null; + protected String[] names = new String[] { + "DatabaseName", "SourceType", "SourceObject", "IsNative" + }; + protected Type[] types = new Type[] { + new Type(String.class), new Type(com.sun.star.sheet.DataImportMode.class), + new Type(String.class), new Type(Boolean.class) + }; + + /** + * creates an ImportDescriptor, the gained PropertyValues can be found + * in com.sun.star.sheet.DatabaseImportDescriptor.<br> + * Returns OK state is all propertynames and types are the specified. + */ + + public void _createImportDescriptor() { + boolean res = true; + boolean locResult = false; + + descriptor = oObj.createImportDescriptor(true); + log.print("Getting when calling createImportDescriptor(true) --"); + + + log.println("done"); + + log.print("Checking PropertyNames -- "); + locResult = checkPropertyNames(descriptor, names); + log.println("Worked: " + locResult); + res &= locResult; + + log.print("Checking PropertyTypes -- "); + locResult = checkPropertyTypes(descriptor, types); + log.println("Worked: " + locResult); + res &= locResult; + + descriptor = oObj.createImportDescriptor(false); + log.print("Getting when calling createImportDescriptor(false) -- "); + + + log.println("done"); + + log.print("Checking PropertyNames -- "); + locResult = checkPropertyNames(descriptor, names); + log.println("Worked: " + locResult); + res &= locResult; + + log.print("Checking PropertyTypes -- "); + locResult = checkPropertyTypes(descriptor, types); + log.println("Worked - " + locResult); + res &= locResult; + + tRes.tested("createImportDescriptor()", res); + } + + public void _doImport() { + requiredMethod("createImportDescriptor()"); + boolean res = true; + + log.print("Setting the ImportDescriptor (Bibliograpy, Table, biblio) -- "); + descriptor[0].Value = "Bibliography"; + descriptor[1].Value = com.sun.star.sheet.DataImportMode.TABLE; + descriptor[2].Value = "biblio"; + log.println("done"); + + log.print("Importing data (Bibliograpy, Table, biblio) -- "); + oObj.doImport(descriptor); + log.println("done"); + + log.println("Checking data"); + res &= checkA1("Identifier"); + + log.print("Setting the ImportDescriptor (Bibliograpy, SQL, select Author from biblio) -- "); + descriptor[0].Value = "Bibliography"; + descriptor[1].Value = com.sun.star.sheet.DataImportMode.SQL; + descriptor[2].Value = "select Author from biblio"; + log.println("done"); + + log.print("Importing data (Bibliograpy, SQL, select Author from biblio) -- "); + oObj.doImport(descriptor); + log.println("done"); + + log.println("Checking data"); + res &= checkA1("Author"); + + tRes.tested("doImport()",res); + } + + protected void printPropertyValue(PropertyValue[] props) { + for (int i = 0; i < props.length; i++) { + log.println("\tName: " + props[i].Name); + log.println("\tValue: " + props[i].Value); + } + } + + protected boolean checkPropertyNames(PropertyValue[] props, String[] names) { + boolean res = true; + + for (int i = 0; i < props.length; i++) { + boolean locResult = props[i].Name.equals(names[i]); + + if (!locResult) { + log.println("PropertyName differs for index " + i); + log.println("\tGetting: " + props[i].Name); + log.println("\tExpected: " + names[i]); + } + + res &= locResult; + } + + return res; + } + + protected boolean checkPropertyTypes(PropertyValue[] props, Type[] types) { + boolean res = true; + + for (int i = 0; i < props.length; i++) { + Type ValueType = new Type(props[i].Value.getClass()); + boolean locResult = ValueType.equals(types[i]); + + if (!locResult) { + log.println("PropertyType differs for " + props[i].Name); + log.println("\tGetting: " + ValueType.getTypeName()); + log.println("\tExpected: " + types[i].getTypeName()); + } + + res &= locResult; + } + + return res; + } + + protected boolean checkA1(String expected) { + XCellRange range = UnoRuntime.queryInterface(XCellRange.class, tEnv.getTestObject()); + boolean res = false; + try{ + String a1 = range.getCellByPosition(0,0).getFormula(); + res = a1.equals(expected); + if (!res) { + log.println("\tResult differs from expectation"); + log.println("\tGetting: "+a1); + log.println("\tExpected: "+expected); + } else { + log.println("successful"); + } + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Couldn't get Cell to check"); + } + return res; + } + + /** + * Dispose environment. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/util/_XModeSelector.java b/qadevOOo/tests/java/ifc/util/_XModeSelector.java new file mode 100644 index 000000000..d787eea42 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XModeSelector.java @@ -0,0 +1,95 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XModeSelector; + +/** +* Testing <code>com.sun.star.util.XModeSelector</code> +* interface methods : +* <ul> +* <li><code>setMode()</code></li> +* <li><code>getMode()</code></li> +* <li><code>getSupportedModes()</code></li> +* <li><code>supportsMode()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.util.XModeSelector +*/ +public class _XModeSelector extends MultiMethodTest { + public XModeSelector oObj = null; + + String[] supportedModes; + /** + * Calls the method and as argument pass one of the supported modes + * that was returned by method getSupportedMode.<p> + * Has <b> OK </b> status if no runtime exceptions occurred. + */ + public void _setMode() { + requiredMethod("getSupportedModes()"); + try { + oObj.setMode(supportedModes[0]); + } catch(com.sun.star.lang.NoSupportException e) { + log.println("Method setMode() doesn't support mode '" + + supportedModes[0] + "'"); + tRes.tested("setMode()", false); + return ; + } + tRes.tested("setMode()", true); + } + + /** + * Calls the method and check returned value.<p> + * Has <b> OK </b> status if no runtime exceptions occurred + * and returned value is equal to value that was set by method setMode. + */ + public void _getMode() { + requiredMethod("setMode()"); + String curMode = oObj.getMode(); + tRes.tested("getMode()", curMode.equals(supportedModes[0])); + } + + /** + * Calls the method and checks value returned by method.<p> + * Has <b> OK </b> status if no runtime exceptions occurred + * and returned value is not null. + */ + public void _getSupportedModes() { + supportedModes = oObj.getSupportedModes(); + tRes.tested("getSupportedModes()", supportedModes != null); + } + + /** + * Calls the method. First one of the supported modes that was returned + * by method getSupportedMode is passed as argument. + * Then the method is called again and the mode that is certainly not supported + * is passed. Checks up returned values in both cases.<p> + * Has <b> OK </b> status if no runtime exceptions occurred, + * returned value is true in first call and is false in second call. + */ + public void _supportsMode() { + requiredMethod("getSupportedModes()"); + boolean result = oObj.supportsMode(supportedModes[0]) && + ! oObj.supportsMode(supportedModes[0] + "_ForTest"); + tRes.tested("supportsMode()", result); + } +}// finish class _XModeSelector + diff --git a/qadevOOo/tests/java/ifc/util/_XModifiable.java b/qadevOOo/tests/java/ifc/util/_XModifiable.java new file mode 100644 index 000000000..df3e00021 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XModifiable.java @@ -0,0 +1,48 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XModifiable; + + +public class _XModifiable extends MultiMethodTest { + public XModifiable oObj; + + public void _isModified() { + requiredMethod("setModified()"); + tRes.tested("isModified()", true); + } + + public void _setModified() { + boolean res = true; + + try { + oObj.setModified(true); + res = oObj.isModified(); + oObj.setModified(false); + res &= !oObj.isModified(); + } catch (com.sun.star.beans.PropertyVetoException e) { + log.println("Exception while using method " + e.getMessage()); + res = false; + } + + tRes.tested("setModified()", res); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/util/_XModifyBroadcaster.java b/qadevOOo/tests/java/ifc/util/_XModifyBroadcaster.java new file mode 100644 index 000000000..22fa066ab --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XModifyBroadcaster.java @@ -0,0 +1,73 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.lang.EventObject; +import com.sun.star.util.XModifyBroadcaster; +import com.sun.star.util.XModifyListener; + +/** +* Testing <code>com.sun.star.util.XModifyBroadcaster</code> +* interface methods : +* <ul> +* <li><code>addModifyListener()</code></li> +* <li><code>removeModifyListener()</code></li> +* </ul> <p> +* +* Result checking is not performed. Modify +* listeners are called only in case of +* interaction with UI. <p> +* +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.util.XModifyBroadcaster +*/ +public class _XModifyBroadcaster extends MultiMethodTest { + public XModifyBroadcaster oObj = null; + + private static class TestModifyListener implements XModifyListener { + public void disposing ( EventObject oEvent ) {} + public void modified (EventObject aEvent ) {} + } + + private final TestModifyListener listener = new TestModifyListener(); + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _addModifyListener() { + log.println("'Modified' events are called only in case"+ + " of user interaction."); + oObj.addModifyListener(listener); + tRes.tested("addModifyListener()", true); + } + + /** + * Just calls the method. <p> + * Has <b> OK </b> status if no runtime exceptions occurred + */ + public void _removeModifyListener() { + requiredMethod("addModifyListener()"); + oObj.removeModifyListener(listener); + tRes.tested("removeModifyListener()", true); + } +}// finish class _XModifyBroadcaster + diff --git a/qadevOOo/tests/java/ifc/util/_XNumberFormatsSupplier.java b/qadevOOo/tests/java/ifc/util/_XNumberFormatsSupplier.java new file mode 100644 index 000000000..65785807d --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XNumberFormatsSupplier.java @@ -0,0 +1,89 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.util.XNumberFormats; +import com.sun.star.util.XNumberFormatsSupplier; + +/** + * Testing <code>com.sun.star.util.XNumberFormatsSupplier</code> + * interface methods : + * <ul> + * <li><code> getNumberFormatSettings()</code></li> + * <li><code> getNumberFormats()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XNumberFormatsSupplier + */ +public class _XNumberFormatsSupplier extends MultiMethodTest { + + public XNumberFormatsSupplier oObj = null; + + /** + * Get format settings and checks some properties for existence. <p> + * + * Has <b> OK </b> status if a number properties inherent to + * <code>NumberFormatSettings</code> service exist in the + * returned <code>XPropertySet</code>. <p> + * + * @see com.sun.star.util.NumberFormatSettings + */ + public void _getNumberFormatSettings() { + boolean result = true ; + XPropertySet props = oObj.getNumberFormatSettings(); + + if (props != null) { + try { + result &= props.getPropertyValue("NullDate") != null && + props.getPropertyValue("StandardDecimals") != null && + props.getPropertyValue("NoZero") != null && + props.getPropertyValue("TwoDigitDateStart") != null ; + } catch (com.sun.star.beans.UnknownPropertyException e) { + log.println("Some property doesn't exist") ; + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log) ; + result = false ; + } + } else { + log.println("Method returns null") ; + result = false ; + } + + tRes.tested("getNumberFormatSettings()", result) ; + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getNumberFormats() { + XNumberFormats formats = oObj.getNumberFormats(); + + tRes.tested("getNumberFormats()", formats != null) ; + } + +} + + diff --git a/qadevOOo/tests/java/ifc/util/_XNumberFormatter.java b/qadevOOo/tests/java/ifc/util/_XNumberFormatter.java new file mode 100644 index 000000000..01f419ac7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XNumberFormatter.java @@ -0,0 +1,119 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XNumberFormatter; + + +/** + * Testing <code>com.sun.star.util.XNumberFormatter</code> + * interface methods : + * <ul> + * <li><code> attachNumberFormatsSupplier()</code></li> + * <li><code> convertNumberToString() </code></li> + * <li><code> convertStringToNumber() </code></li> + * <li><code> detectNumberFormat() </code></li> + * <li><code> formatString() </code></li> + * <li><code> getInputString() </code></li> + * <li><code> getNumberFormatsSupplier() </code></li> + * <li><code> queryColorForNumber() </code></li> + * <li><code> queryColorForString() </code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XNumberFormatter + */ +public class _XNumberFormatter extends MultiMethodTest { + + public XNumberFormatter oObj = null; + + /** + * Not implemented yet. + */ + public void _attachNumberFormatsSupplier() { + log.println("Not yet implemented"); + } + + /** + * Tries to convert a number to a string. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _convertNumberToString() { + double dValue = 1.56; + int key = 15; + + String gString = oObj.convertNumberToString(key,dValue); + + log.println("Getting: "+gString); + tRes.tested("convertNumberToString",gString!=null); + } + + /** + * Not implemented yet. + */ + public void _convertStringToNumber() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _detectNumberFormat() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _formatString() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _getInputString() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _getNumberFormatsSupplier() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _queryColorForNumber() { + log.println("Not yet implemented"); + } + + /** + * Not implemented yet. + */ + public void _queryColorForString() { + log.println("Not yet implemented"); + } +} // finish class _XNumberFormatter + + diff --git a/qadevOOo/tests/java/ifc/util/_XProtectable.java b/qadevOOo/tests/java/ifc/util/_XProtectable.java new file mode 100644 index 000000000..127d30971 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XProtectable.java @@ -0,0 +1,75 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ +package ifc.util; + +import com.sun.star.util.XProtectable; +import lib.MultiMethodTest; + +/** + * Check the XProtectable interface. + */ +public class _XProtectable extends MultiMethodTest { + public XProtectable oObj = null; + String sPassWord = "TopSecret"; + + /** + * Check, if the sheet is protected. + * Has OK status, if this is the case. + */ + public void _isProtected() { + requiredMethod("protect()"); + boolean result = oObj.isProtected(); + tRes.tested("isProtected()", result); + } + + /** + * Protect the sheet + */ + public void _protect() { + oObj.protect(sPassWord); + tRes.tested("protect()", true); + } + + /** + * Unprotect with wrong password, see if it's still protected. + * Unprotect with correct password, see if it's unprotected. + */ + public void _unprotect() { + requiredMethod("isProtected()"); + boolean result = true; + try { + oObj.unprotect("WrongPassword"); +// result = false; + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Correct Exception thrown."); + } + // just check if it's still protected + result &= oObj.isProtected(); + try { + oObj.unprotect(sPassWord); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("Wrong Exception thrown: password is correct."); + result = false; + } + result &= !oObj.isProtected(); + tRes.tested("unprotect()", result); + } + +} diff --git a/qadevOOo/tests/java/ifc/util/_XRefreshable.java b/qadevOOo/tests/java/ifc/util/_XRefreshable.java new file mode 100644 index 000000000..1edfae0d5 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XRefreshable.java @@ -0,0 +1,110 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XRefreshListener; +import com.sun.star.util.XRefreshable; + +/** +* Testing <code>com.sun.star.util.XRefreshable</code> +* interface methods : +* <ul> +* <li><code> refresh()</code></li> +* <li><code> addRefreshListener()</code></li> +* <li><code> removeRefreshListener()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.util.XRefreshable +*/ +public class _XRefreshable extends MultiMethodTest { + + public XRefreshable oObj = null; + + final boolean listenerCalled[] = new boolean[1]; + + + /** + * <code>XRefreshListener</code> implementation which + * sets a flag when <code>refreshed</code> method is + * called. + */ + public class MyRefreshListener implements XRefreshListener { + public void refreshed (com.sun.star.lang.EventObject e) { + listenerCalled[0] = true; + } + + public void disposing (com.sun.star.lang.EventObject obj) {} + } + + XRefreshListener listener = new MyRefreshListener(); + + /** + * Just adds a listener. <p> + * Always has <b>OK</b> status. + */ + public void _addRefreshListener() { + + oObj.addRefreshListener(listener) ; + tRes.tested("addRefreshListener()", true); + } + + /** + * Calls the method and checks if the listener was called. <p> + * Has <b>OK</b> status if listener's flag is set after call. + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addRefreshListener </code> : to have a listener added.</li> + * </ul> + */ + public void _refresh() { + + requiredMethod("addRefreshListener()"); + + oObj.refresh(); + + tRes.tested("refresh()", listenerCalled[0]); + if (!listenerCalled[0]) + log.println("RefreshListener wasn't called after refresh"); + + } + + /** + * Removes the listener added before and calls <code>refresh</code> + * method. Listener must not be called. <p> + * Has <b>OK</b> status if listener's flag isn't changed. + * <ul> + * <li> <code> refresh </code> : listener added must be already + * tested.</li> + * </ul> + */ + public void _removeRefreshListener() { + requiredMethod("refresh()"); + listenerCalled[0] = false; + + oObj.removeRefreshListener(listener) ; + oObj.refresh(); + + tRes.tested("removeRefreshListener()", !listenerCalled[0]); + if (listenerCalled[0]) + log.println("RefreshListener was called after removing"); + } +} // finish class _XRefreshable + diff --git a/qadevOOo/tests/java/ifc/util/_XReplaceDescriptor.java b/qadevOOo/tests/java/ifc/util/_XReplaceDescriptor.java new file mode 100644 index 000000000..98249a9db --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XReplaceDescriptor.java @@ -0,0 +1,65 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XReplaceDescriptor; + +/** + * Testing <code>com.sun.star.util.XReplaceDescriptor</code> + * interface methods : + * <ul> + * <li><code> getReplaceString()</code></li> + * <li><code> setReplaceString()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XReplaceDescriptor + */ +public class _XReplaceDescriptor extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XReplaceDescriptor oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getReplaceString(){ + log.println("test for getReplaceString() "); + tRes.tested("getReplaceString()", oObj.getReplaceString()!=null); + } + + /** + * Set a new string and checks the result. <p> + * Has <b> OK </b> status if the string before setting differs + * from string after setting. <p> + */ + public void _setReplaceString(){ + log.println("test for setReplaceString() "); + String oldReplaceStr = oObj.getReplaceString(); + oObj.setReplaceString("XReplaceDescriptor"); + String cmpReplaceStr = oObj.getReplaceString(); + tRes.tested("setReplaceString()", !(cmpReplaceStr.equals(oldReplaceStr))); + } + +} // finish class _XReplaceDescriptor + + diff --git a/qadevOOo/tests/java/ifc/util/_XReplaceable.java b/qadevOOo/tests/java/ifc/util/_XReplaceable.java new file mode 100644 index 000000000..db80a4ed3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XReplaceable.java @@ -0,0 +1,140 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import com.sun.star.table.XCell; +import lib.MultiMethodTest; + +import com.sun.star.util.XReplaceDescriptor; +import com.sun.star.util.XReplaceable; +import com.sun.star.util.XSearchDescriptor; + +/** + * Testing <code>com.sun.star.util.XReplaceable</code> + * interface methods : + * <ul> + * <li><code> createReplaceDescriptor()</code></li> + * <li><code> replaceAll()</code></li> + * </ul> <p> + * + * The requipment for the tested object is that it + * <b>must contain</b> string 'xTextDoc'. Only + * in that case this interface is tested correctly. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XReplaceable + */ +public class _XReplaceable extends MultiMethodTest { + + public XReplaceable oObj = null; + public XReplaceDescriptor Rdesc = null; + private String mSearchString = "xTextDoc"; + private static final String mReplaceString = "** xTextDoc"; + private boolean mDispose = false; + + /** + * Creates an entry to search for, if the current object does not provide + * one. In this case, the environment is disposed after the test, since + * the inserted object may influence following tests. + * + */ + @Override + protected void before() { + Object o = tEnv.getObjRelation("SEARCHSTRING"); + if (o != null) { + mSearchString = (String)o; + } + // use object relation for XSearchable + o = tEnv.getObjRelation("XSearchable.MAKEENTRYINCELL"); + if (o != null) { + XCell[] cells = new XCell[0]; + if (o instanceof XCell) { + cells = new XCell[]{(XCell)o}; + } + else if (o instanceof XCell[]) { + cells = (XCell[])o; + } + else { + log.println("Needed object relation 'XSearchable.MAKEENTRYINCELL' is there, but is of type '" + + o.getClass().getName() + "'. Should be 'XCell' or 'XCell[]' instead."); + } + for (int i=0; i<cells.length; i++) { + cells[i].setFormula(mSearchString); + } + mDispose = true; + } + } + + /** + * Creates the descriptor for replacing string 'xTextDoc' + * with string '** xTextDoc'. <p> + * Has <b> OK </b> status if the returned descriptor is not + * <code>null</code>. <p> + */ + public void _createReplaceDescriptor() { + + log.println("testing createReplaceDescriptor() ... "); + + Rdesc = oObj.createReplaceDescriptor(); + Rdesc.setSearchString(mSearchString); + Rdesc.setReplaceString(mReplaceString); + tRes.tested("createReplaceDescriptor()", true); + + } + + /** + * Replaces the text using descriptor created before. Then + * search is performed in the target text. <p> + * + * Has <b> OK </b> status if the string '**' is found in + * the text. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createReplaceDescriptor() </code> : replace + * descriptor is created. </li> + * </ul> + */ + public void _replaceAll() { + requiredMethod("createReplaceDescriptor()"); + oObj.replaceAll(Rdesc); + XSearchDescriptor SDesc = oObj.createSearchDescriptor(); + SDesc.setSearchString("**"); + boolean res = (oObj.findFirst(SDesc) != null); + // redo replacement + Rdesc.setSearchString(mReplaceString); + Rdesc.setReplaceString(mSearchString); + oObj.replaceAll(Rdesc); + res &= (oObj.findFirst(SDesc) == null); + + tRes.tested("replaceAll()",res); + } + + /** + * In case the interface itself made the entry to search for, the environment + * must be disposed + */ + @Override + protected void after() { + if(mDispose) { + disposeEnvironment(); + } + } +} + diff --git a/qadevOOo/tests/java/ifc/util/_XSearchDescriptor.java b/qadevOOo/tests/java/ifc/util/_XSearchDescriptor.java new file mode 100644 index 000000000..bc7fc1510 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XSearchDescriptor.java @@ -0,0 +1,77 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XSearchDescriptor; + +/** + * Testing <code>com.sun.star.util.XSearchDescriptor</code> + * interface methods : + * <ul> + * <li><code> getSearchString()</code></li> + * <li><code> setSearchString()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XSearchDescriptor + */ +public class _XSearchDescriptor extends MultiMethodTest { + + // oObj filled by MultiMethodTest + public XSearchDescriptor oObj = null; + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getSearchString(){ + boolean bResult = false; + String searchStr = null; + + log.println("test for getSearchString() "); + searchStr = oObj.getSearchString(); + + if (searchStr != null){ bResult = true; } + tRes.tested("getSearchString()", bResult); + } + + /** + * Set a new string and checks the result. <p> + * Has <b> OK </b> status if the string before setting differs + * from string after setting. <p> + */ + public void _setSearchString(){ + boolean bResult = false; + String oldSearchStr = null; + String cmpSearchStr = null; + String newSearchStr = "_XSearchDescriptor"; + log.println("test for setSearchString() "); + + oldSearchStr = oObj.getSearchString(); + oObj.setSearchString(newSearchStr); + cmpSearchStr = oObj.getSearchString(); + + if(!(cmpSearchStr.equals(oldSearchStr))){ bResult = true; } + tRes.tested("setSearchString()", bResult); + } + +} // finish class _XSearchDescriptor + diff --git a/qadevOOo/tests/java/ifc/util/_XSearchable.java b/qadevOOo/tests/java/ifc/util/_XSearchable.java new file mode 100644 index 000000000..5c0f6789a --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XSearchable.java @@ -0,0 +1,178 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.table.XCell; +import com.sun.star.util.XSearchDescriptor; +import com.sun.star.util.XSearchable; + +/** + * Testing <code>com.sun.star.util.XSearchable</code> + * interface methods : + * <ul> + * <li><code> createSearchDescriptor()</code></li> + * <li><code> findAll()</code></li> + * <li><code> findFirst()</code></li> + * <li><code> findNext()</code></li> + * </ul> <p> + * + * The requipment for the tested object is that it + * <b>must contain</b> string 'xTextDoc'. Only + * in that case this interface is tested correctly. <p> + * + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XSearchable + */ +public class _XSearchable extends MultiMethodTest { + + public XSearchable oObj = null; // oObj filled by MultiMethodTest + public XSearchDescriptor Sdesc = null; + public Object start = null; + private String mSearchString = "xTextDoc"; + private boolean mDispose = false; + private boolean mExcludeFindNext = false; + + /** + * Creates an entry to search for, if the current object does not provide + * one. In this case, the environment is disposed after the test, since + * the inserted object may influence following tests. + * + */ + @Override + protected void before() { + Object o = tEnv.getObjRelation("SEARCHSTRING"); + if (o != null) { + mSearchString = (String)o; + } + o = tEnv.getObjRelation("XSearchable.MAKEENTRYINCELL"); + if (o != null) { + XCell[] cells = new XCell[0]; + if (o instanceof XCell) { + cells = new XCell[]{(XCell)o}; + } + else if (o instanceof XCell[]) { + cells = (XCell[])o; + } + else { + log.println("Needed object relation 'XSearchable.MAKEENTRYINCELL' is there, but is of type '" + + o.getClass().getName() + "'. Should be 'XCell' or 'XCell[]' instead."); + } + for (int i=0; i<cells.length; i++) { + cells[i].setFormula(mSearchString); + } + mDispose = true; + } + mExcludeFindNext = (tEnv.getObjRelation("EXCLUDEFINDNEXT")==null)?false:true; + } + + /** + * Creates the search descriptor which searches for + * 'xTextDoc' string. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _createSearchDescriptor() { + + log.println("testing createSearchDescriptor() ... "); + + Sdesc = oObj.createSearchDescriptor(); + Sdesc.setSearchString(mSearchString); + tRes.tested("createSearchDescriptor()", true); + + } + + /** + * Performs search using descriptor created before. <p> + * Has <b> OK </b> status if the method not <code>null</code> + * collections. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createSearchDescriptor() </code> : creates the descriptor + * required for search. </li> + * </ul> + */ + public void _findAll() { + + requiredMethod("createSearchDescriptor()"); + log.println("testing findAll()"); + + XIndexAccess IA = oObj.findAll(Sdesc); + tRes.tested("findAll()", IA != null); + } + + /** + * Performs search using descriptor created before. Storing the + * first occurrence result. <p> + * Has <b> OK </b> status if the method not <code>null</code> + * value. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createSearchDescriptor() </code> : creates the descriptor + * required for search. </li> + * </ul> + */ + public void _findFirst() { + + requiredMethod("createSearchDescriptor()"); + log.println("testing findFirst()"); + start = oObj.findFirst(Sdesc); + tRes.tested("findFirst()", start != null); + } + + /** + * Performs search using descriptor and first search result + * created before. <p> + * Has <b> OK </b> status if the method not <code>null</code> + * value. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> findFirst() </code> : to have first search result. </li> + * </ul> + */ + public void _findNext() { + if (mExcludeFindNext) { + log.println("Testing findNext() excluded, because only one" + + " search result is available."); + tRes.tested("findNext()", true); + } + else{ + requiredMethod("findFirst()"); + + log.println("testing findNext()"); + Object xI = oObj.findNext(start,Sdesc); + tRes.tested("findNext()", xI != null); + } + } + + /** + * In case the interface itself made the entry to search for, the environment + * must be disposed + */ + @Override + protected void after() { + if(mDispose) { + disposeEnvironment(); + } + } +} + + diff --git a/qadevOOo/tests/java/ifc/util/_XSortable.java b/qadevOOo/tests/java/ifc/util/_XSortable.java new file mode 100644 index 000000000..e43c93c16 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XSortable.java @@ -0,0 +1,231 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ +package ifc.util; + +import java.io.PrintWriter; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.table.TableSortField; +import com.sun.star.util.XSortable; + + +/** + * Testing <code>com.sun.star.util.XSortable</code> + * interface methods : + * <ul> + * <li><code> createSortDescriptor()</code></li> + * <li><code> sort()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'SORTCHECKER'</code> : <code> +* _XSortable.XSortChecker</code> interface implementation + * </li> + * <ul><p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.util.XSortable + */ +public class _XSortable extends MultiMethodTest { + // oObj filled by MultiMethodTest + public XSortable oObj = null; + XSortChecker checker = null; + PropertyValue[] oPV = null; + + @Override + protected void before() { + checker = (XSortChecker) tEnv.getObjRelation("SORTCHECKER"); + + if (checker == null) { + throw new StatusException(Status.failed( + "Couldn't get relation 'SORTCHECKER'")); + } + + checker.setPrintWriter(log); + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the length of the returned array + * is greater than zero. <p> + */ + public void _createSortDescriptor() { + boolean bResult = false; + + log.println("test for createSortDescriptor() "); + oPV = oObj.createSortDescriptor(); + + if (oPV.length > 0) { + bResult = true; + + for (int k = 0; k < oPV.length; k++) { + log.println("DescriptorProperty " + k + ": Name=" + + oPV[k].Name + "; Value=" + oPV[k].Value); + + if (oPV[k].Name.equals("SortFields")) { + TableSortField[] tsf = (TableSortField[]) oPV[k].Value; + + for (int l = 0; l < tsf.length; l++) { + log.println("\t isAscending: " + + tsf[l].IsAscending); + log.println("\t IsCaseSensitive: " + + tsf[l].IsCaseSensitive); + log.println("\t CollatorAlgorithm: " + + tsf[l].CollatorAlgorithm); + } + } + } + } + + log.println("Found " + oPV.length + " PropertyValues"); + tRes.tested("createSortDescriptor()", bResult); + } + + /** + * Test calls the method using descriptor created before as + * parameter. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createSortDescriptor() </code> : to have a descriptor + * for sort. </li> + * </ul> + */ + public void _sort() { + + checker.prepareToSort(); + + log.println( + "############## Sort algorithm: Alphanumeric Order: Ascending"); + modifyDescriptor(false, true); + oObj.sort(oPV); + + boolean res = checker.checkSort(false, true); + log.println( + "############################################################"); + + log.println( + "############# Sort algorithm: Alphanumeric Order: Descending"); + modifyDescriptor(false, false); + oObj.sort(oPV); + res = checker.checkSort(false, false); + log.println( + "############################################################"); + + log.println( + "################# Sort algorithm: Numeric Order: Ascending"); + modifyDescriptor(true, true); + oObj.sort(oPV); + res = checker.checkSort(true, true); + log.println( + "############################################################"); + + log.println( + "################## Sort algorithm: Numeric Order: Descending"); + modifyDescriptor(true, false); + oObj.sort(oPV); + res = checker.checkSort(true, false); + log.println( + "############################################################"); + + tRes.tested("sort()", res); + } + + protected void modifyDescriptor(boolean isSortNumeric, + boolean isSortAscending) { + for (int i = 0; i < oPV.length; i++) { + if (oPV[i].Name.equals("SortFields")) { + TableSortField[] TableFields = (TableSortField[]) oPV[i].Value; + + if (TableFields.length == 0) { + TableFields = new TableSortField[1]; + TableFields[0] = new TableSortField(); + } + + for (int k = 0; k < TableFields.length; k++) { + TableFields[k].IsAscending = isSortAscending; + + if (isSortNumeric) { + TableFields[k].FieldType = com.sun.star.table.TableSortFieldType.NUMERIC; + TableFields[k].CollatorAlgorithm = "numeric"; + } else { + TableFields[k].FieldType = com.sun.star.table.TableSortFieldType.ALPHANUMERIC; + TableFields[k].CollatorAlgorithm = "alphanumeric"; + } + } + + oPV[i].Value = TableFields; + } + + if (oPV[i].Name.equals("isSortInTable")) { + oPV[i].Value = Boolean.TRUE; + } + + if (oPV[i].Name.equals("IsSortColumns")) { + oPV[i].Value = Boolean.FALSE; + } + } + + log.println("Modified sort descriptor: "); + + if (oPV.length > 0) { + for (int k = 0; k < oPV.length; k++) { + log.println("DescriptorProperty " + k + ": Name=" + + oPV[k].Name + "; Value=" + oPV[k].Value); + + if (oPV[k].Name.equals("SortFields")) { + TableSortField[] tsf = (TableSortField[]) oPV[k].Value; + + for (int l = 0; l < tsf.length; l++) { + log.println("\t isAscending: " + + tsf[l].IsAscending); + log.println("\t IsCaseSensitive: " + + tsf[l].IsCaseSensitive); + log.println("\t CollatorAlgorithm: " + + tsf[l].CollatorAlgorithm); + } + } + } + } + } + + /** + * The interface for sort checking. + */ + public interface XSortChecker { + void prepareToSort(); + + boolean checkSort(boolean isSortNumbering, + boolean isSortAscending); + + void setPrintWriter(PrintWriter log); + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} // finish class _XSortable diff --git a/qadevOOo/tests/java/ifc/util/_XStringEscape.java b/qadevOOo/tests/java/ifc/util/_XStringEscape.java new file mode 100644 index 000000000..edd4a2d83 --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XStringEscape.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import lib.MultiMethodTest; + +import com.sun.star.util.XStringEscape; + +public class _XStringEscape extends MultiMethodTest { + + public XStringEscape oObj; + + public void _escapeString() { + log.println("The Implementation of this Interface doesn't really do anything"); + boolean res = true; + try { + String toCheck = ";:<>/*"; + String eString = oObj.escapeString(toCheck); + res = toCheck.equals(eString); + } catch (com.sun.star.lang.IllegalArgumentException e) { + System.out.println("IllegalArgument"); + } + tRes.tested("escapeString()",res); + } + + public void _unescapeString() { + log.println("The Implementation of this Interface doesn't really do anything"); + boolean res = true; + try { + String toCheck = ";:<>/*"; + String ueString = oObj.unescapeString(toCheck); + res = toCheck.equals(ueString); + } catch (com.sun.star.lang.IllegalArgumentException e) { + System.out.println("IllegalArgument"); + } + tRes.tested("unescapeString()",res); + } + +} diff --git a/qadevOOo/tests/java/ifc/util/_XStringSubstitution.java b/qadevOOo/tests/java/ifc/util/_XStringSubstitution.java new file mode 100644 index 000000000..77d5fe5fb --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XStringSubstitution.java @@ -0,0 +1,92 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import com.sun.star.util.XStringSubstitution; +import lib.MultiMethodTest; + +public class _XStringSubstitution extends MultiMethodTest { + + public XStringSubstitution oObj; + + public void _getSubstituteVariableValue() { + boolean res = true; + try { + log.println("try to get the valid variable $(user) ..."); + String toCheck = "$(user)"; + String eString = oObj.getSubstituteVariableValue(toCheck); + res = eString.startsWith("file:///"); + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("$(user) does not exist"); + tRes.tested("getSubstituteVariableValue()",false); + } + try { + log.println("try to get an invalid variable..."); + String toCheck = "$(ThisVariableShouldNoExist)"; + oObj.getSubstituteVariableValue(toCheck); + log.println("$(ThisVariableShouldNoExist) should not exist"); + tRes.tested("getSubstituteVariableValue()",false); + + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("expected exception was thrown."); + res &= true; + } + + tRes.tested("getSubstituteVariableValue()",res); + } + + public void _substituteVariables() { + boolean res = true; + try { + log.println("try to get a valid variable..."); + String toCheck = "$(user)"; + String eString = oObj.substituteVariables(toCheck, false); + log.println(eString); + res = eString.startsWith("file:///"); + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("$(user) does not exist"); + tRes.tested("substituteVariables()",false); + } + try { + log.println("try to get an invalid variable..."); + String toCheck = "$(ThisVariableShouldNoExist)"; + oObj.substituteVariables(toCheck,true); + log.println("$(ThisVariableShouldNoExist) should not exist"); + tRes.tested("substituteVariables()",false); + + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("expected exception was thrown."); + res &= true; + } + + tRes.tested("substituteVariables()",res); + } + + public void _reSubstituteVariables() { + boolean res = true; + log.println("try to get a valid variable..."); + String toCheck = "file:///"; + String eString = oObj.reSubstituteVariables(toCheck); + log.println(eString); + res = eString.startsWith("file:///"); + + tRes.tested("reSubstituteVariables()",res); + } + +} diff --git a/qadevOOo/tests/java/ifc/util/_XURLTransformer.java b/qadevOOo/tests/java/ifc/util/_XURLTransformer.java new file mode 100644 index 000000000..9ce968cdf --- /dev/null +++ b/qadevOOo/tests/java/ifc/util/_XURLTransformer.java @@ -0,0 +1,461 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.util; + +import com.sun.star.util.URL; +import com.sun.star.util.XURLTransformer; +import lib.MultiMethodTest; + +/** +* Testing <code>com.sun.star.util.XURLTransformer</code> +* interface methods : +* <ul> +* <li><code> assemble() </code></li> +* <li><code> parseStrict() </code></li> +* <li><code> parseSmart() </code></li> +* <li><code> getPresentation() </code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.util.XURLTransformer +*/ +public class _XURLTransformer extends MultiMethodTest { + + public XURLTransformer oObj = null; + + static final String user = "user"; + static final String invalidUserPrefix = "1"; + static final String password = "password"; + static final String server = "server"; + static final String invalidServerPrefix = "1"; + static final String port = "8080"; + static final String path = "/pub/path"; + static final String name = "file.txt"; + static final String arguments = "a=b"; + static final String mark = "mark"; + + static final String expectedCompleteHTTP = "http://" + + server + ":" + port + path + + "/" + name + "?" + arguments + "#" + mark; + static final String expectedCompleteFTP = "ftp://" + + user + ":" + password + "@" + server + ":" + port + path + + "/" + name; + + /** + * First the complete URL (all URL fields are filled) is + * passed and assembled. Then incomplete URL (only + * <code>Server</code> field is set) is passed. <p> + * Has <b> OK </b> status if in the first case <code>true</code> + * returned and <code>Complete</code> field is set and in the + * second case <code>false</code> is returned. <p> + */ + public void _assemble(){ + URL[] url = new URL[1]; + url[0] = new URL(); + + url[0].Protocol = "http://"; + url[0].Server = server; + url[0].Port = Short.parseShort(port); + url[0].Path = path; + url[0].Name = name; + url[0].Arguments = arguments; + url[0].Mark = mark; + url[0].Main = "http://" + server + ":" + + port + path + "/" + name; + + boolean res = true; + + log.print("assemble http-URL: "); + boolean complete = oObj.assemble(url); + log.println(complete); + res &= complete; + + if (!expectedCompleteHTTP.equals(url[0].Complete)) { + log.println("assemble works wrong"); + log.println("complete field : " + url[0].Complete); + log.println("expected : " + expectedCompleteHTTP); + res = false; + } + + url[0] = new URL(); + url[0].Protocol = "ftp://"; + url[0].User = user; + url[0].Password = password; + url[0].Server = server; + url[0].Port = Short.parseShort(port); + url[0].Path = path; + url[0].Name = name; + url[0].Main = "ftp://" + user + ":" + password + "@" + server + ":" + + port + path + "/" + name; + + log.print("assemble ftp-URL: "); + complete = oObj.assemble(url); + log.println(complete); + res &= complete; + + if (!expectedCompleteFTP.equals(url[0].Complete)) { + log.println("assemble works wrong"); + log.println("complete field : " + url[0].Complete); + log.println("expected : " + expectedCompleteFTP); + res = false; + } + + URL[] incompleteUrl = new URL[1]; + incompleteUrl[0] = new URL(); + incompleteUrl[0].Server = server; + + log.print("assemble incomplete URL: "); + complete = oObj.assemble(incompleteUrl); + log.println(complete); + res &= !complete; + + // should be incomplete + tRes.tested("assemble()", res); + } + + /** + * First the complete URL (<code>Complete</code> field is set + * to proper URL) is passed and parsed. Then incomplete URL (only + * <code>Server</code> field is set) is passed. <p> + * Has <b> OK </b> status if in the first case <code>true</code> + * returned and all URL fields are set to proper values and in the + * second case <code>false</code> is returned. <p> + */ + public void _parseStrict() { + URL[] url = new URL[1]; + + url[0] = new URL(); + url[0].Complete = expectedCompleteHTTP; + + boolean res = true; + log.print("parseStrict(" + expectedCompleteHTTP + "): "); + boolean complete = oObj.parseStrict(url); + log.println(complete); + res &= complete; + + if (!url[0].Protocol.equals("http://")) { + log.println("parseStrict works wrong"); + log.println("protocol field : " + url[0].Protocol); + log.println("expected : http://"); + res = false; + } + + if (!url[0].Server.equals(server)) { + log.println("parseStrict works wrong"); + log.println("server field : " + url[0].Server); + log.println("expected : " + server); + res = false; + } + + if (url[0].Port != Short.parseShort(port)) { + log.println("parseStrict works wrong"); + log.println("port field : " + url[0].Port); + log.println("expected : " + port); + res = false; + } + + if ((!url[0].Path.equals(path)) && (!url[0].Path.equals(path + "/"))) { + log.println("parseStrict works wrong"); + log.println("path field : " + url[0].Path); + log.println("expected : " + path); + res = false; + } + + if (!url[0].Name.equals(name)) { + log.println("parseStrict works wrong"); + log.println("name field : " + url[0].Name); + log.println("expected : " + name); + res = false; + } + + if (!url[0].Arguments.equals(arguments)) { + log.println("parseStrict works wrong"); + log.println("arguments field : " + url[0].Arguments); + log.println("expected : " + arguments); + res = false; + } + + if (!url[0].Mark.equals(mark)) { + log.println("parseStrict works wrong"); + log.println("mark field : " + url[0].Mark); + log.println("expected : " + mark); + res = false; + } + + url[0] = new URL(); + url[0].Complete = expectedCompleteFTP; + + log.print("parseStrict(" + expectedCompleteFTP + "): "); + complete = oObj.parseStrict(url); + log.println(complete); + res &= complete; + + if (!url[0].Protocol.equals("ftp://")) { + log.println("parseStrict works wrong"); + log.println("protocol field : " + url[0].Protocol); + log.println("expected : ftp://"); + res = false; + } + + if (!url[0].User.equals(user)) { + log.println("parseStrict works wrong"); + log.println("user field : " + url[0].User); + log.println("expected : " + user); + res = false; + } + + if (!url[0].Password.equals(password)) { + log.println("parseStrict works wrong"); + log.println("password field : " + url[0].Password); + log.println("expected : " + password); + res = false; + } + + if (!url[0].Server.equals(server)) { + log.println("parseStrict works wrong"); + log.println("server field : " + url[0].Server); + log.println("expected : " + server); + res = false; + } + + if (url[0].Port != Short.parseShort(port)) { + log.println("parseStrict works wrong"); + log.println("port field : " + url[0].Port); + log.println("expected : " + port); + res = false; + } + + if ((!url[0].Path.equals(path)) && (!url[0].Path.equals(path + "/"))) { + log.println("parseStrict works wrong"); + log.println("path field : " + url[0].Path); + log.println("expected : " + path); + res = false; + } + + if (!url[0].Name.equals(name)) { + log.println("parseStrict works wrong"); + log.println("name field : " + url[0].Name); + log.println("expected : " + name); + res = false; + } + + URL[] incompleteUrl = new URL[1]; + incompleteUrl[0] = new URL(); + incompleteUrl[0].Complete = server; + + log.print("parseStrict(" + server + "): "); + complete = oObj.parseStrict(incompleteUrl); + log.println(complete); + // should be incomplete + res &= !complete; + + tRes.tested("parseStrict()", res); + } + + /** + * Tries to parse WWW server name. <p> + * Has <b> OK </b> status if the method return <code>true</code> + * value and <code>Protocol, Server, Port</code> URL fields are + * set properly. + */ + public void _parseSmart() { + URL[] url = new URL[1]; + + String httpURL = invalidServerPrefix + server + ":" + port + path + "/" + name + "?" + + arguments + "#" + mark; + + url[0] = new URL(); + url[0].Complete = httpURL; + + boolean res = true; + log.print("parseSmart('" + httpURL + "', 'http://'): "); + boolean complete = oObj.parseSmart(url, "http://"); + log.println(complete); + res &= complete; + + if (!url[0].Protocol.equals("http://")) { + log.println("parseSmart works wrong"); + log.println("protocol field : " + url[0].Protocol); + log.println("expected : http://"); + res = false; + } + + if (!url[0].Server.equals(invalidServerPrefix+server)) { + log.println("parseSmart works wrong"); + log.println("server field : " + url[0].Server); + log.println("expected : " + server); + res = false; + } + + if (url[0].Port != Short.parseShort(port)) { + log.println("parseSmart works wrong"); + log.println("port field : " + url[0].Port); + log.println("expected : " + port); + res = false; + } + + if ((!url[0].Path.equals(path)) && (!url[0].Path.equals(path + "/"))) { + log.println("parseSmart works wrong"); + log.println("path field : " + url[0].Path); + log.println("expected : " + path); + res = false; + } + + if (!url[0].Name.equals(name)) { + log.println("parseSmart works wrong"); + log.println("name field : " + url[0].Name); + log.println("expected : " + name); + res = false; + } + + if (!url[0].Arguments.equals(arguments)) { + log.println("parseSmart works wrong"); + log.println("arguments field : " + url[0].Arguments); + log.println("expected : " + arguments); + res = false; + } + + if (!url[0].Mark.equals(mark)) { + log.println("parseSmart works wrong"); + log.println("mark field : " + url[0].Mark); + log.println("expected : " + mark); + res = false; + } + + String ftpURL = invalidUserPrefix +user + ":" + password + "@" + server + ":" + + port + path + "/" + name; + + url[0] = new URL(); + url[0].Complete = ftpURL; + log.print("parseSmart('" + ftpURL + "', 'ftp://'): "); + complete = oObj.parseSmart(url, "ftp://"); + log.println(complete); + res &= complete; + + if (!url[0].Protocol.equals("ftp://")) { + log.println("parseSmart works wrong"); + log.println("protocol field : " + url[0].Protocol); + log.println("expected : ftp://"); + res = false; + } + + if (!url[0].User.equals(invalidUserPrefix+user)) { + log.println("parseSmart works wrong"); + log.println("user field : " + url[0].User); + log.println("expected : " + user); + res = false; + } + + if (!url[0].Password.equals(password)) { + log.println("parseSmart works wrong"); + log.println("password field : " + url[0].Password); + log.println("expected : " + password); + res = false; + } + + if (!url[0].Server.equals(server)) { + log.println("parseSmart works wrong"); + log.println("server field : " + url[0].Server); + log.println("expected : " + server); + res = false; + } + + if (url[0].Port != Short.parseShort(port)) { + log.println("parseSmart works wrong"); + log.println("port field : " + url[0].Port); + log.println("expected : " + port); + res = false; + } + + if ((!url[0].Path.equals(path)) && (!url[0].Path.equals(path + "/"))) { + log.println("parseSmart works wrong"); + log.println("path field : " + url[0].Path); + log.println("expected : " + path); + res = false; + } + + if (!url[0].Name.equals(name)) { + log.println("parseSmart works wrong"); + log.println("name field : " + url[0].Name); + log.println("expected : " + name); + res = false; + } + + tRes.tested("parseSmart()", res); + } + + /** + * Gets the presentation of a URL. <p> + * Has <b> OK </b> status if the method returns the same + * URL as was passed in parameter. + */ + public void _getPresentation() { + URL url = new URL(); + + url.Complete = expectedCompleteHTTP; + + log.println("getPresentation('" + expectedCompleteHTTP + "', true): "); + String presentation = oObj.getPresentation(url, true); + boolean res = presentation.equals(expectedCompleteHTTP); + log.println("Resulted presentation: " + presentation); + log.println("Expected presentation: " + expectedCompleteHTTP); + log.println("Result: " + res); + + url.Complete = expectedCompleteFTP; + log.println("getPresentation('" + expectedCompleteFTP + "', false): "); + // the password must be masquerade with <****> + StringBuilder sb = new StringBuilder(); + for (int n = 0 ; n < password.length(); n++){ + sb.append("*"); + } + String asterisk = sb.toString(); + asterisk = "<" + asterisk.substring(1,asterisk.length()); + asterisk = asterisk.substring(0,asterisk.length()-1) + ">"; + + presentation = oObj.getPresentation(url, false); + String expectedPresentation = "ftp://" + user + ":" + asterisk + "@" + + server + ":" + port + path + "/" + name; + res &= presentation.equals(expectedPresentation); + log.println("Resulted presentation: " + presentation); + log.println("Expected presentation: " + expectedPresentation); + log.println("Result: " + res); + + log.println("getPresentation('" + expectedCompleteFTP + "', true): "); + presentation = oObj.getPresentation(url, true); + expectedPresentation = "ftp://" + user + ":" + password + "@" + + server + ":" + port + path + "/" + name; + res &= presentation.equals(expectedPresentation); + log.println("Resulted presentation: " + presentation); + log.println("Expected presentation: " + expectedPresentation); + log.println("Result: " + res); + + String incorrectURL = "*bla-bla*"; + url.Complete = incorrectURL; + log.println("getPresentation('" + incorrectURL + "', false): "); + presentation = oObj.getPresentation(url, false); + expectedPresentation = ""; + res &= presentation.equals(expectedPresentation); + log.println("Resulted presentation: " + presentation); + log.println("Expected presentation: " + expectedPresentation); + log.println("Result: " + res); + + tRes.tested("getPresentation()", res); + } + +} // finish class _XURLTransformer + |