diff options
Diffstat (limited to 'qadevOOo/tests/java/ifc/script/_XEventAttacherManager.java')
-rw-r--r-- | qadevOOo/tests/java/ifc/script/_XEventAttacherManager.java | 492 |
1 files changed, 492 insertions, 0 deletions
diff --git a/qadevOOo/tests/java/ifc/script/_XEventAttacherManager.java b/qadevOOo/tests/java/ifc/script/_XEventAttacherManager.java new file mode 100644 index 000000000..b0375c257 --- /dev/null +++ b/qadevOOo/tests/java/ifc/script/_XEventAttacherManager.java @@ -0,0 +1,492 @@ +/* + * 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.script; + +import lib.MultiMethodTest; + +import com.sun.star.lang.EventObject; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.script.ScriptEvent; +import com.sun.star.script.ScriptEventDescriptor; +import com.sun.star.script.XEventAttacherManager; +import com.sun.star.script.XScriptListener; + +/** +* Testing <code>com.sun.star.script.XEventAttacherManager</code> +* interface methods : +* <ul> +* <li><code> registerScriptEvent()</code></li> +* <li><code> registerScriptEvents()</code></li> +* <li><code> revokeScriptEvent()</code></li> +* <li><code> revokeScriptEvents()</code></li> +* <li><code> insertEntry()</code></li> +* <li><code> removeEntry()</code></li> +* <li><code> getScriptEvents()</code></li> +* <li><code> attach()</code></li> +* <li><code> detach()</code></li> +* <li><code> addScriptListener()</code></li> +* <li><code> removeScriptListener()</code></li> +* </ul> <p> +* @see com.sun.star.script.XEventAttacherManager +*/ +public class _XEventAttacherManager extends MultiMethodTest { + + /** + * oObj filled by MultiMethodTest + */ + public XEventAttacherManager oObj = null; + + private static final int index = 0; + + /** + * Test calls the method and stores index of new entry. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + */ + public void _insertEntry() { + try { + oObj.insertEntry(index); + tRes.tested("insertEntry()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("insertEntry(" + index + + ") throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("insertEntry()", false); + } + } + + ScriptEventDescriptor desc; + + /** + * Test creates <code>ScriptEventDescriptor</code>, registers + * the script event and stores the descriptor. <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> insertEntry() </code> : to have entry's index</li> + * </ul> + * @see com.sun.star.script.ScriptEventDescriptor + */ + public void _registerScriptEvent() { + requiredMethod("insertEntry()"); + desc = new ScriptEventDescriptor( + "XEventListener1", + "disposing", "", "Basic", ""); + + try { + oObj.registerScriptEvent(index, desc); + tRes.tested("registerScriptEvent()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("registerScriptEvent() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("registerScriptEvent()", false); + } + } + + ScriptEventDescriptor descs[]; + + /** + * Test creates array of <code>ScriptEventDescriptor</code>, registers + * this script events and stores the descriptors. <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> insertEntry() </code> : to have entry's index</li> + * </ul> + * @see com.sun.star.script.ScriptEventDescriptor + */ + public void _registerScriptEvents() { + requiredMethod("insertEntry()"); + descs = new ScriptEventDescriptor[] { + new ScriptEventDescriptor( + "XEventListener2", + "disposing", "", "Basic", ""), + new ScriptEventDescriptor( + "XEventListener3", + "disposing", "", "Basic", "") + }; + + try { + oObj.registerScriptEvents(index, descs); + tRes.tested("registerScriptEvents()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("registerScriptEvents() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("registerScriptEvents()", false); + } + } + + /** + * Test calls the method and checks returned value. <p> + * Has <b> OK </b> status if returned array of descriptors contains + * array of descriptors registered by methods <code>registerScriptEvents</code> + * and <code>registerScriptEvent</code> and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerScriptEvent() </code> : + * to have registered descriptor </li> + * <li> <code> registerScriptEvents() </code> : + * to have registered descriptors </li> + * </ul> + */ + public void _getScriptEvents() { + requiredMethod("registerScriptEvent()"); + requiredMethod("registerScriptEvents()"); + + ScriptEventDescriptor[] res; + + try { + res = oObj.getScriptEvents(index); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("registerScriptEvents() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("registerScriptEvents()", false); + return; + } + + // checking the desc and descs are in script events + tRes.tested("getScriptEvents()", + contains(res, desc) && containsArray(res, descs)); + + log.println("Script events :") ; + printEvents(res) ; + } + + /** + * Method checks that array of descriptors contains the concrete descriptor. + * @param container the array of descriptors + * @param evt the descriptor which presence in the array is checked + * @return true if the descriptor presence in the array + */ + boolean contains(ScriptEventDescriptor[] container, + ScriptEventDescriptor evt) { + for (int i = 0; i < container.length; i++) { + if (equal(container[i], evt)) { + return true; + } + } + + return false; + } + + /** + * Method checks that one array of descriptors contains + * another array of descriptors. + * @param container the array of descriptors + * @param events the array of descriptors which presence + * in array <code>container</code> is checked + * @return true if the array <code>events</code> contains in the array + * <code>container</code> + */ + boolean containsArray(ScriptEventDescriptor[] container, + ScriptEventDescriptor[] events) { + for (int i = 0; i < events.length; i++) { + if (!contains(container, events[i])) { + return false; + } + } + + return true; + } + + /** + * Compares descriptor <code>evt1</code> to descriptor <code>evt2</code>. + * Two descriptors are considered equal if all their fields are equal. + * @return true if the argument is not <code>null</code> and + * the descriptors are equal; false otherwise + */ + boolean equal(ScriptEventDescriptor evt1, + ScriptEventDescriptor evt2) { + return evt1.ListenerType.equals(evt2.ListenerType) + && evt1.EventMethod.equals(evt2.EventMethod) + && evt1.ScriptType.equals(evt2.ScriptType) + && evt1.ScriptCode.equals(evt2.ScriptCode) + && evt1.AddListenerParam.equals(evt2.AddListenerParam); + } + + /** + * Prints fields of descriptor <code>evt</code> to log. + * @param evt the descriptor that needs to be printed to log + */ + void printEvent(ScriptEventDescriptor evt) { + if (evt == null) { + log.println("null"); + } else { + log.println("\"" + evt.ListenerType + "\",\"" + + evt.EventMethod + "\",\"" + + evt.ScriptType + "\",\"" + + evt.ScriptCode + "\",\"" + + evt.AddListenerParam + "\""); + } + } + + /** + * Prints the descriptors to log. + * @param events the array of descriptors that need to be printed to log + */ + void printEvents(ScriptEventDescriptor events[]) { + if (events == null) { + log.println("null"); + } else { + for (int i = 0; i < events.length; i++) { + printEvent(events[i]); + } + } + } + + Object attachedObject; + + /** + * Test creates instance of <code>NamingService</code> (arbitrarily), + * stores it and attaches it to the entry with index stored in the method + * <code>insertEntry()</code>. <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> insertEntry() </code> : to have entry's index for attach</li> + */ + public void _attach() { + requiredMethod("insertEntry()"); + + try { + XMultiServiceFactory xMSF = tParam.getMSF(); + attachedObject = xMSF.createInstance + ( "com.sun.star.uno.NamingService" ); + } catch( com.sun.star.uno.Exception e ) { + log.println("com.sun.star.uno.NamingService not available" ); + e.printStackTrace(log); + tRes.tested("attach()", false); + return; + } + if (attachedObject == null) { + log.println("com.sun.star.uno.NamingService not available" ); + tRes.tested("attach()", false); + return; + } + + try { + oObj.attach(index, attachedObject, "param"); + tRes.tested("attach()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("attach() throws exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("attach()", false); + } catch (com.sun.star.lang.ServiceNotRegisteredException e) { + log.println("attach() throws exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("attach()", false); + } + } + + /** + * Test calls the method for the object that was stored in the method + * <code>attach()</code>. <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> attach() </code> : to have attached object </li> + * </ul> + */ + public void _detach() { + requiredMethod("attach()"); + + try { + oObj.detach(index, attachedObject); + tRes.tested("detach()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("detach() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("detach()", false); + } + } + + /** + * Test revokes script event that was registered by method + * <code>registerScriptEvent()</code> and checks that the description + * was removed. <p> + * Has <b> OK </b> status if description was successfully removed. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerScriptEvent() </code> : + * to have registered descriptor </li> + * </ul> + * The following method tests are to be executed before : + * <ul> + * <li> <code> getScriptEvents() </code> : + * this method must be executed first </li> + * </ul> + */ + public void _revokeScriptEvent() { + requiredMethod("registerScriptEvent()"); + executeMethod("getScriptEvents()") ; + + try { + oObj.revokeScriptEvent(index, desc.ListenerType, + desc.EventMethod, ""); + + ScriptEventDescriptor[] res = oObj.getScriptEvents(index); + // checking that the desc has been removed + tRes.tested("revokeScriptEvent()", !contains(res, desc)); + printEvents(res) ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("revokeScriptEvent() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("revokeScriptEvent()", false); + } + } + + /** + * Test revokes script events that was registered by method + * <code>registerScriptEvents()</code> and checks that the descriptions + * were removed. <p> + * Has <b> OK </b> status if descriptions were successfully removed. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> revokeScriptEvent() </code> : + * this method must be executed first </li> + * </ul> + * The following method tests are to be executed before : + * <ul> + * <li> <code> getScriptEvents() </code> : + * this method must be executed first </li> + * </ul> + */ + public void _revokeScriptEvents() { + requiredMethod("revokeScriptEvent()"); + executeMethod("getScriptEvents()") ; + + try { + oObj.revokeScriptEvents(index); + + ScriptEventDescriptor[] res = oObj.getScriptEvents(index); + // checking that all events have been removed + tRes.tested("revokeScriptEvents()", + res == null || res.length == 0); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("revokeScriptEvents() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("revokeScriptEvents()", false); + } + } + + /** + * Test calls the method with entry's index that was stored in method + * <code>insertEntry()</code>. <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> insertEntry() </code> : + * to have entry's index </li> + */ + public void _removeEntry() { + requiredMethod("insertEntry()"); + try { + oObj.removeEntry(index); + tRes.tested("removeEntry()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("removeEntry(" + index + + ") throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("removeEntry()", false); + } + } + + XScriptListener listener; + + /** + * Test creates object that supports interface <code>XScriptListener</code>, + * stores it and adds this scripts listener. <p> + * Has <b> OK </b> status if the method successfully returns + * and no exceptions were thrown. <p> + * @see com.sun.star.script.XScriptListener + */ + public void _addScriptListener() { + listener = new MyScriptListener(); + + try { + oObj.addScriptListener(listener); + tRes.tested("addScriptListener()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("addScriptListener() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("addScriptListener()", false); + } + } + + /** + * Test removes script listener that was stored in method + * <code>addScriptListener()</code>. <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> addScriptListener() </code> : + * to have script listener </li> + * </ul> + */ + public void _removeScriptListener() { + requiredMethod("addScriptListener()"); + + try { + oObj.removeScriptListener(listener); + tRes.tested("removeScriptListener()", true); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("removeScriptListener() throws unexpected exception " + + e.getMessage()); + e.printStackTrace(log); + tRes.tested("removeScriptListener()", false); + } + } + + /** + * Class implement interface <code>XScriptListener</code> + * for test of the method <code>addScriptListener()</code>. + * No functionality implemented. + * @see com.sun.star.script.XScriptListener + */ + static class MyScriptListener implements XScriptListener { + public void firing(ScriptEvent evt) { + } + + public Object approveFiring(ScriptEvent evt) { + return evt.Helper; + } + + public void disposing(EventObject evt) { + } + } + +} + |