From 940b4d1848e8c70ab7642901a68594e8016caffc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 18:51:28 +0200 Subject: Adding upstream version 1:7.0.4. Signed-off-by: Daniel Baumann --- .../java/ifc/ui/_XContextMenuInterception.java | 201 ++++++++++++ .../ifc/ui/_XModuleUIConfigurationManager.java | 73 +++++ .../ui/_XModuleUIConfigurationManagerSupplier.java | 55 ++++ qadevOOo/tests/java/ifc/ui/_XUIConfiguration.java | 94 ++++++ .../java/ifc/ui/_XUIConfigurationListener.java | 44 +++ .../java/ifc/ui/_XUIConfigurationManager.java | 354 +++++++++++++++++++++ .../java/ifc/ui/_XUIConfigurationPersistence.java | 75 +++++ .../java/ifc/ui/_XUIConfigurationStorage.java | 68 ++++ qadevOOo/tests/java/ifc/ui/_XUIElementFactory.java | 47 +++ .../ifc/ui/_XUIElementFactoryRegistration.java | 72 +++++ .../tests/java/ifc/ui/dialogs/_FilePicker.java | 27 ++ .../tests/java/ifc/ui/dialogs/_XControlAccess.java | 133 ++++++++ .../java/ifc/ui/dialogs/_XControlInformation.java | 178 +++++++++++ .../java/ifc/ui/dialogs/_XExecutableDialog.java | 176 ++++++++++ .../tests/java/ifc/ui/dialogs/_XFilePicker.java | 151 +++++++++ .../ifc/ui/dialogs/_XFilePickerControlAccess.java | 194 +++++++++++ .../java/ifc/ui/dialogs/_XFilePickerNotifier.java | 270 ++++++++++++++++ .../tests/java/ifc/ui/dialogs/_XFilePreview.java | 113 +++++++ .../java/ifc/ui/dialogs/_XFilterGroupManager.java | 55 ++++ .../tests/java/ifc/ui/dialogs/_XFilterManager.java | 97 ++++++ .../tests/java/ifc/ui/dialogs/_XFolderPicker.java | 105 ++++++ 21 files changed, 2582 insertions(+) create mode 100644 qadevOOo/tests/java/ifc/ui/_XContextMenuInterception.java create mode 100644 qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManager.java create mode 100644 qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManagerSupplier.java create mode 100644 qadevOOo/tests/java/ifc/ui/_XUIConfiguration.java create mode 100644 qadevOOo/tests/java/ifc/ui/_XUIConfigurationListener.java create mode 100644 qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java create mode 100644 qadevOOo/tests/java/ifc/ui/_XUIConfigurationPersistence.java create mode 100644 qadevOOo/tests/java/ifc/ui/_XUIConfigurationStorage.java create mode 100644 qadevOOo/tests/java/ifc/ui/_XUIElementFactory.java create mode 100644 qadevOOo/tests/java/ifc/ui/_XUIElementFactoryRegistration.java create mode 100644 qadevOOo/tests/java/ifc/ui/dialogs/_FilePicker.java create mode 100644 qadevOOo/tests/java/ifc/ui/dialogs/_XControlAccess.java create mode 100644 qadevOOo/tests/java/ifc/ui/dialogs/_XControlInformation.java create mode 100644 qadevOOo/tests/java/ifc/ui/dialogs/_XExecutableDialog.java create mode 100644 qadevOOo/tests/java/ifc/ui/dialogs/_XFilePicker.java create mode 100644 qadevOOo/tests/java/ifc/ui/dialogs/_XFilePickerControlAccess.java create mode 100644 qadevOOo/tests/java/ifc/ui/dialogs/_XFilePickerNotifier.java create mode 100644 qadevOOo/tests/java/ifc/ui/dialogs/_XFilePreview.java create mode 100644 qadevOOo/tests/java/ifc/ui/dialogs/_XFilterGroupManager.java create mode 100644 qadevOOo/tests/java/ifc/ui/dialogs/_XFilterManager.java create mode 100644 qadevOOo/tests/java/ifc/ui/dialogs/_XFolderPicker.java (limited to 'qadevOOo/tests/java/ifc/ui') diff --git a/qadevOOo/tests/java/ifc/ui/_XContextMenuInterception.java b/qadevOOo/tests/java/ifc/ui/_XContextMenuInterception.java new file mode 100644 index 000000000..062810730 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XContextMenuInterception.java @@ -0,0 +1,201 @@ +/* + * 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.ui; + +import com.sun.star.accessibility.AccessibleRole; +import com.sun.star.accessibility.XAccessible; +import com.sun.star.accessibility.XAccessibleComponent; +import com.sun.star.accessibility.XAccessibleContext; +import com.sun.star.awt.Point; +import com.sun.star.awt.Rectangle; +import com.sun.star.awt.XExtendedToolkit; +import com.sun.star.awt.XWindow; +import com.sun.star.frame.XModel; +import com.sun.star.lang.IndexOutOfBoundsException; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.ui.XContextMenuInterception; +import com.sun.star.ui.XContextMenuInterceptor; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import helper.ContextMenuInterceptor; +import java.awt.Robot; +import java.awt.event.InputEvent; +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.AccessibilityTools; +import util.DesktopTools; + +public class _XContextMenuInterception extends MultiMethodTest { + + private XModel docModel = null; + private XContextMenuInterceptor xCI = null; + public XContextMenuInterception oObj = null; + private XWindow xWindow = null; + private XMultiServiceFactory xMSF = null; + private Point point = null; + + @Override + public void before() { + docModel = UnoRuntime.queryInterface( + XModel.class,tEnv.getObjRelation("FirstModel")); + + xCI = UnoRuntime.queryInterface( + XContextMenuInterceptor.class, new ContextMenuInterceptor()); + + xMSF = tParam.getMSF(); + + //ensure that the first model is focused + + log.println("ensure that the first model is focused"); + DesktopTools.bringWindowToFront(docModel); + + waitForEventIdle(); + } + + @Override + public void after() { + if (xCI != null) { + oObj.releaseContextMenuInterceptor(xCI); + } + } + + public void _registerContextMenuInterceptor() { + oObj.registerContextMenuInterceptor(xCI); + openContextMenu(docModel); + boolean res = checkHelpEntry(); + releasePopUp(); + tRes.tested("registerContextMenuInterceptor()",res); + } + + public void _releaseContextMenuInterceptor() { + requiredMethod("registerContextMenuInterceptor()"); + oObj.releaseContextMenuInterceptor(xCI); + openContextMenu(docModel); + boolean res = checkHelpEntry(); + releasePopUp(); + tRes.tested("releaseContextMenuInterceptor()",!res); + } + + private boolean checkHelpEntry(){ + XInterface toolkit = null; + boolean res = true; + + log.println("get accessibility..."); + try{ + toolkit = (XInterface) xMSF.createInstance("com.sun.star.awt.Toolkit"); + } catch (com.sun.star.uno.Exception e){ + log.println("could not get Toolkit " + e.toString()); + } + XExtendedToolkit tk = UnoRuntime.queryInterface( + XExtendedToolkit.class, toolkit); + + XAccessible xRoot = null; + + try { + xWindow = UnoRuntime.queryInterface(XWindow.class, + tk.getTopWindow(0)); + + xRoot = AccessibilityTools.getAccessibleObject(xWindow); + AccessibilityTools.printAccessibleTree(log, xRoot, tParam.getBool(util.PropertyName.DEBUG_IS_ACTIVE)); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Couldn't get Window"); + } + + XAccessibleContext oPopMenu = AccessibilityTools.getAccessibleObjectForRole(xRoot, AccessibleRole.POPUP_MENU,true); + + log.println("ImplementationName: " + util.utils.getImplName(oPopMenu)); + + XAccessible xHelp = null; + try{ + log.println("Try to get second entry of context menu..."); + xHelp = oPopMenu.getAccessibleChild(1); + + } catch (IndexOutOfBoundsException e){ + throw new StatusException("Not possible to get second entry of context menu",e); + } + + if (xHelp == null) throw new StatusException(new Status("second entry of context menu is NULL", false)); + + XAccessibleContext xHelpCont = xHelp.getAccessibleContext(); + + if ( xHelpCont == null ) + throw new StatusException(new Status("No able to retrieve accessible context from first entry of context menu",false)); + + String aAccessibleName = xHelpCont.getAccessibleName(); + if ( !aAccessibleName.equals( "Help" )) { + log.println("Accessible name found = "+aAccessibleName ); + log.println("Second entry of context menu is not from context menu interceptor"); + res=false; + } + + return res; + + } + + private void openContextMenu(XModel xModel){ + + log.println("try to open context menu..."); + + xWindow = AccessibilityTools.getCurrentWindow(xModel); + + XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); + + XInterface oObj = AccessibilityTools.getAccessibleObjectForRole(xRoot, AccessibleRole.PANEL); + + XAccessibleComponent window = UnoRuntime.queryInterface( + XAccessibleComponent.class, oObj); + + point = window.getLocationOnScreen(); + Rectangle rect = window.getBounds(); + + log.println("click mouse button..."); + try { + Robot rob = new Robot(); + int x = point.X + (rect.Width / 2); + int y = point.Y + (rect.Height / 2); + rob.mouseMove(x, y); + System.out.println("Press Button"); + rob.mousePress(InputEvent.BUTTON3_MASK); + System.out.println("Release Button"); + rob.mouseRelease(InputEvent.BUTTON3_MASK); + System.out.println("done"); + } catch (java.awt.AWTException e) { + log.println("couldn't press mouse button"); + } + + waitForEventIdle(); + + } + + private void releasePopUp() { + log.println("release the popup menu"); + try { + Robot rob = new Robot(); + int x = point.X; + int y = point.Y; + rob.mouseMove(x, y); + rob.mousePress(InputEvent.BUTTON1_MASK); + rob.mouseRelease(InputEvent.BUTTON1_MASK); + } catch (java.awt.AWTException e) { + log.println("couldn't press mouse button"); + } + } +} diff --git a/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManager.java b/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManager.java new file mode 100644 index 000000000..ec3a14d6b --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManager.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.ui; + +import com.sun.star.container.XIndexAccess; +import com.sun.star.ui.XModuleUIConfigurationManager; +import lib.MultiMethodTest; + +public class _XModuleUIConfigurationManager extends MultiMethodTest { + + public XModuleUIConfigurationManager oObj = null; + private String resourceUrl = null; + + @Override + public void before() { + resourceUrl = (String)tEnv.getObjRelation("XModuleUIConfigurationManager.ResourceURL"); + } + + public void _isDefaultSettings() { + boolean result; + try { + result = oObj.isDefaultSettings(resourceUrl); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("'" + resourceUrl + "' is an illegal resource."); + result = false; + } + String notPossibleUrl = "private:resource/menubar/dingsbums"; + try { + result &= !oObj.isDefaultSettings(notPossibleUrl); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("'" + notPossibleUrl + "' is an illegal resource."); + result = false; + } + + tRes.tested("isDefaultSettings()", result); + } + + public void _getDefaultSettings() { + boolean result; + try { + XIndexAccess xIndexAcc = oObj.getDefaultSettings(resourceUrl); + result = xIndexAcc != null; + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println("'" + resourceUrl + "' is an illegal resource."); + result = false; + } + catch(com.sun.star.container.NoSuchElementException e) { + log.println("No resource '" + resourceUrl + "' available."); + result = false; + } + tRes.tested("getDefaultSettings()", result); + } + +} diff --git a/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManagerSupplier.java b/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManagerSupplier.java new file mode 100644 index 000000000..8a9dfe7b3 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XModuleUIConfigurationManagerSupplier.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.ui; + +import com.sun.star.lang.XServiceInfo; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.ui.XModuleUIConfigurationManagerSupplier; +import lib.MultiMethodTest; + +public class _XModuleUIConfigurationManagerSupplier extends MultiMethodTest { + + public XModuleUIConfigurationManagerSupplier oObj; + + public void _getUIConfigurationManager() { + String configManagerName = null; + String implementationName = null; + try { + configManagerName = (String)tEnv.getObjRelation("XModuleUIConfigurationManagerSupplier.ConfigurationManager"); + implementationName = (String)tEnv.getObjRelation("XModuleUIConfigurationManagerSupplier.ConfigManagerImplementationName"); + + // get a config manager for the StartModule + Object o = oObj.getUIConfigurationManager(configManagerName); + XServiceInfo xServiceInfo = UnoRuntime.queryInterface(XServiceInfo.class, o); + String impName = xServiceInfo.getImplementationName(); + boolean result = impName.equals(implementationName); + if (!result) { + log.println("Returned implementation was '" + impName + + "' but should have been '" + implementationName + "'"); + } + tRes.tested("getUIConfigurationManager()", result); + return; + } + catch(com.sun.star.container.NoSuchElementException e) { + log.println("Could not get a configuration manager called '" + configManagerName + "'"); + e.printStackTrace(log); + } + tRes.tested("getUIConfigurationManager()", false); + } +} \ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/ui/_XUIConfiguration.java b/qadevOOo/tests/java/ifc/ui/_XUIConfiguration.java new file mode 100644 index 000000000..73290288c --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIConfiguration.java @@ -0,0 +1,94 @@ +/* + * 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.ui; + +import com.sun.star.ui.XUIConfiguration; +import com.sun.star.ui.XUIConfigurationListener; +import lib.MultiMethodTest; + +/** +* Testing com.sun.star.ui.XUIConfiguration +* interface methods : +*

+* Test is NOT multithread compliant.

+* After test completion object environment has to be recreated. +* @see com.sun.star.ui.XUIConfiguration +*/ + +public class _XUIConfiguration extends MultiMethodTest { + + public XUIConfiguration oObj; + XUIConfigurationListenerImpl xListener = null; + + /** + * Interface for the Listener of the object relation + * XUIConfiguration.XUIConfigurationListenerImpl + * @see com.sun.star.ui.XUIConfigurationListener + */ + public interface XUIConfigurationListenerImpl + extends XUIConfigurationListener { + void reset(); + void fireEvent(); + boolean actionWasTriggered(); + } + + + /** + * try to get a listener out of the object relation + * XUIConfiguration.XUIConfigurationListenerImpl + */ + @Override + public void before() { + xListener = (XUIConfigurationListenerImpl)tEnv.getObjRelation( + "XUIConfiguration.XUIConfigurationListenerImpl"); + } + + /** + * adds a listener and fires an event + * Has OK status if listener was called + */ + public void _addConfigurationListener() { + oObj.addConfigurationListener(xListener); + xListener.fireEvent(); + tRes.tested("addConfigurationListener()", xListener.actionWasTriggered()); + } + + /** + * removes the listener and calls an event. + * Has OK status if listener is not called. + */ + public void _removeConfigurationListener() { + requiredMethod("addConfigurationListener()"); + oObj.removeConfigurationListener(xListener); + xListener.reset(); + xListener.fireEvent(); + tRes.tested("removeConfigurationListener()", !xListener.actionWasTriggered()); + } + + /** + * Dispose because the UIConfigurationManager has to be recreated + */ + @Override + public void after() { + disposeEnvironment(); + } +} diff --git a/qadevOOo/tests/java/ifc/ui/_XUIConfigurationListener.java b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationListener.java new file mode 100644 index 000000000..b1ef75528 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationListener.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.ui; + +import com.sun.star.ui.ConfigurationEvent; +import com.sun.star.ui.XUIConfigurationListener; +import lib.MultiMethodTest; + +public class _XUIConfigurationListener extends MultiMethodTest { + + public XUIConfigurationListener oObj = null; + + public void _elementInserted() { + ConfigurationEvent event = new ConfigurationEvent(); + oObj.elementInserted(event); + tRes.tested("elementInserted()", true); + } + public void _elementRemoved() { + ConfigurationEvent event = new ConfigurationEvent(); + oObj.elementRemoved(event); + tRes.tested("elementRemoved()", true); + } + public void _elementReplaced() { + ConfigurationEvent event = new ConfigurationEvent(); + oObj.elementReplaced(event); + tRes.tested("elementReplaced()", true); + } +} diff --git a/qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java new file mode 100644 index 000000000..83923634b --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java @@ -0,0 +1,354 @@ +/* + * 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.ui; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XIndexContainer; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.lang.XServiceInfo; +import com.sun.star.lang.XSingleComponentFactory; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XComponentContext; +import com.sun.star.ui.UIElementType; +import com.sun.star.ui.XImageManager; +import com.sun.star.ui.XUIConfigurationManager; +import java.io.PrintWriter; +import lib.MultiMethodTest; + +public class _XUIConfigurationManager extends MultiMethodTest { + + public XUIConfigurationManager oObj; + private static final String msResourceUrl = "private:resource/menubar/menubar"; + private static final String msMyResourceUrl = "private:resource/menubar/mymenubar"; + private XIndexContainer mxSettings = null; + private XIndexAccess mxMenuBarSettings = null; + private XMultiServiceFactory mxMSF = null; + private String sShortCutManagerServiceName = null; + + + /** + * Some stuff before the tests: + * extract the multi service factory. + */ + @Override + protected void before() { + mxMSF = tParam.getMSF(); + sShortCutManagerServiceName = (String)tEnv.getObjRelation("XConfigurationManager.ShortCutManager"); + + } + + /** + * reset all changes: do at the end. + */ + public void _reset() { + requiredMethod("removeSettings()"); + oObj.reset(); + tRes.tested("reset()", true); + } + + public void _getUIElementsInfo() { + boolean result = true; + try { + PropertyValue[][]props = oObj.getUIElementsInfo(UIElementType.UNKNOWN); + for (int i=0; icom.sun.star.ui.XUIConfigurationStorage +* interface methods : +*

+* Test is NOT multithread compliant.

+* @see com.sun.star.ui.XUIConfigurationStorage +*/ + +public class _XUIConfigurationStorage extends MultiMethodTest { + + public XUIConfigurationStorage oObj; + private XStorage xStore = null; + + @Override + public void before() { + xStore = (XStorage)tEnv.getObjRelation("XUIConfigurationStorage.Storage"); + } + + /** + * Set the object relation XUIConfigurationStorage.Storage + * as storage. + * Has OK status if no exception is thrown. + */ + public void _setStorage() { + if (!oObj.hasStorage()) + oObj.setStorage(xStore); + else + log.println("For initializing this object, the setStorage() method was already called at the object."); + tRes.tested("setStorage()", true); + } + + /** + * Queries object for a storage. + * Has OK status if hasStorage returns OK + */ + public void _hasStorage() { + requiredMethod("setStorage()"); + boolean has = oObj.hasStorage(); + tRes.tested("hasStorage()", has); + } + +} \ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/ui/_XUIElementFactory.java b/qadevOOo/tests/java/ifc/ui/_XUIElementFactory.java new file mode 100644 index 000000000..1883c081d --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIElementFactory.java @@ -0,0 +1,47 @@ +/* + * 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.ui; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.ui.XUIElement; +import com.sun.star.ui.XUIElementFactory; +import lib.MultiMethodTest; + +public class _XUIElementFactory extends MultiMethodTest { + + public XUIElementFactory oObj; + + public void _createUIElement() { + boolean result = true; + PropertyValue[] prop = new PropertyValue[0]; + try { + XUIElement element = oObj.createUIElement("private:resource/menubar/menubar", prop); + result = (element!= null); + } + catch(com.sun.star.container.NoSuchElementException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + tRes.tested("createUIElement()", result); + } +} diff --git a/qadevOOo/tests/java/ifc/ui/_XUIElementFactoryRegistration.java b/qadevOOo/tests/java/ifc/ui/_XUIElementFactoryRegistration.java new file mode 100644 index 000000000..e2540e49d --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIElementFactoryRegistration.java @@ -0,0 +1,72 @@ +/* + * 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.ui; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.ui.XUIElementFactory; +import com.sun.star.ui.XUIElementFactoryRegistration; +import lib.MultiMethodTest; + +public class _XUIElementFactoryRegistration extends MultiMethodTest { + + public XUIElementFactoryRegistration oObj; + + public void _registerFactory() { + boolean result = true; + try { + oObj.registerFactory("private:resource/menubar/menubar", "MyOwnMenubar", "", "com.sun.star.comp.framework.MenuBarFactory"); + } + catch(com.sun.star.container.ElementExistException e) { + result = false; + e.printStackTrace(log); + } + tRes.tested("registerFactory()", result); + } + + public void _getRegisteredFactories() { + requiredMethod("registerFactory()"); + PropertyValue[][]props = oObj.getRegisteredFactories(); + if (props == null) { + log.println("Null was returned as PropertyValue[][]"); + props = new PropertyValue[0][0]; + } + for(int i=0; icom.sun.star.ui.XFilePicker +* interface methods : +*

+* +* For testing this interface the component must implement +* com.sun.star.ui.dialogs.XControlInformation +* interface.

+* +* Test is NOT multithread compliant.

+* @see com.sun.star.ui.XFolderPicker +*/ +public class _XControlAccess extends MultiMethodTest { + + public XControlAccess oObj = null; + private String[] supControls = null ; + private String[][] supProperties = null ; + + /** + * Tries to query com.sun.star.ui.dialogs.XControlInformation + * interface, and obtain properties' names of each available + * control.

+ * + * @throw StatusException if interface is not supported or + * properties couldn't be get. + */ + @Override + protected void before() { + XControlInformation xCI = UnoRuntime.queryInterface + (XControlInformation.class, oObj); + + if (xCI == null) throw new StatusException + (Status.failed("XControlInformation not supported")) ; + + supControls = xCI.getSupportedControls(); + supProperties = new String[supControls.length][]; + for (int i = 0; i < supControls.length; i++) { + try { + supProperties[i] = + xCI.getSupportedControlProperties(supControls[i]); + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + throw new StatusException + ("Exception while init.", e) ; + } + } + } + + /** + * Tries to change each property of each control. + * Has OK status if values are properly changed. + */ + public void _setControlProperty() { + boolean result = true ; + String error = ""; + + for (int i = 0; i < supControls.length; i++) { + log.println("Checking properties for control " + supControls[i]); + for (int j = 0; j < supProperties[i].length; j++) { + log.println("\t" + supProperties[i][j]); + try { + Object oldVal = oObj.getControlProperty(supControls[i], + supProperties[i][j]); + Object newVal = util.ValueChanger.changePValue(oldVal); + if (supProperties[i][j].startsWith("Help")) { + newVal = "HID:133"; + } + oObj.setControlProperty + (supControls[i], supProperties[i][j], newVal) ; + Object resVal = oObj.getControlProperty(supControls[i], + supProperties[i][j]); + log.println("\t Old:" + oldVal + ",New:" + newVal + + ",Result:" + resVal); + if (!util.ValueComparer.equalValue(newVal, resVal)) { + error += "####Property '"+supProperties[i][j]+ + " of "+supControls[i]+" didn't work\n\r"+ + "\t Old:" + oldVal + ",New:" + newVal + + ",Result:" + resVal+ "\n\r"; + } + result &= util.ValueComparer.equalValue(newVal, resVal); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Unexpected exception:" ); + e.printStackTrace(log); + result = false ; + } + } + } + + log.println(error); + + tRes.tested("setControlProperty()", result) ; + tRes.tested("getControlProperty()", result) ; + } + + /** + * Does nothing. Testing performed in setControlProperty + * method test. + */ + public void _getControlProperty() {} +} + + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XControlInformation.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XControlInformation.java new file mode 100644 index 000000000..1da743110 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XControlInformation.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.ui.dialogs; + +import lib.MultiMethodTest; + +import com.sun.star.ui.dialogs.XControlInformation; + +/** +* Testing com.sun.star.ui.XControlInformation +* interface methods : +*

+* +* @see com.sun.star.ui.XFolderPicker +*/ +public class _XControlInformation extends MultiMethodTest { + + public XControlInformation oObj = null; + private String[] supControls = null ; + private String[][] supProperties = null ; + + /** + * Gets supported controls and stores them.

+ * Has OK status if not null returned. + */ + public void _getSupportedControls() { + supControls = oObj.getSupportedControls(); + + tRes.tested("getSupportedControls()", supControls != null) ; + } + + /** + * For every available control check if it is supported. + * Also wrong control name (non-existent and empty) are checked.

+ * + * Has OK status if true returned for valid + * control names and false for invalid.

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

+ */ + public void _isControlSupported() { + requiredMethod("getSupportedControls()") ; + + boolean result = true ; + + log.println("Supported controls :"); + for (int i = 0; i < supControls.length; i++) { + log.println(" " + supControls[i]); + result &= oObj.isControlSupported(supControls[i]) ; + } + + result &= !oObj.isControlSupported("SuchNameMustNotExist"); + result &= !oObj.isControlSupported(""); + + tRes.tested("isControlSupported()", result) ; + } + + /** + * For each control obtains its properties and stores them. Then tries to + * obtain properties for control with invalid name.

+ * + * Has OK status if properties arrays are not null and exception + * thrown or null returned for control with invalid name

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

+ */ + public void _getSupportedControlProperties() { + requiredMethod("getSupportedControls()") ; + + supProperties = new String[supControls.length][]; + for (int i = 0; i < supControls.length; i++) { + log.println("Getting properties for control: " + supControls[i]); + try { + supProperties[i] = + oObj.getSupportedControlProperties(supControls[i]); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Unexpected exception:" + e); + } + } + + try { + oObj.getSupportedControlProperties("NoSuchControl"); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Expected exception getting properties " + + "for wrong control:" + e); + } + + tRes.tested("getSupportedControlProperties()", true) ; + } + + /** + * + *

+ * Has OK status if true returned for the first case, + * false for the second, and false or exception + * for the third.

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

+ */ + public void _isControlPropertySupported() { + requiredMethod("getSupportedControlProperties()") ; + + boolean result = true; + + for (int i = 0; i < supControls.length; i++) { + log.println("Checking properties for control " + supControls[i]); + for (int j = 0; j < supProperties[i].length; j++) { + log.println(" " + supProperties[i][j]); + try { + result &= oObj.isControlPropertySupported + (supControls[i], supProperties[i][j]) ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Unexpected exception:" + e); + result = false ; + } + } + + try { + result &= !oObj.isControlPropertySupported + (supControls[i], "NoSuchPropertyForThisControl") ; + result &= !oObj.isControlPropertySupported + (supControls[i], "") ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println + ("Unexpected exception (just false must be returned):" + e); + result = false ; + } + } + + try { + result &= !oObj.isControlPropertySupported("NoSuchControl", "") ; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Expected exception: " + e); + } + + tRes.tested("isControlPropertySupported()", result) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XExecutableDialog.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XExecutableDialog.java new file mode 100644 index 000000000..eddf139c6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XExecutableDialog.java @@ -0,0 +1,176 @@ +/* + * 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.ui.dialogs; + +import lib.MultiMethodTest; + +import com.sun.star.ui.dialogs.XExecutableDialog; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.XCancellable; + +/** + * Testing com.sun.star.ui.dialogs.XExecutableDialog + * interface methods : + *

+ * + * These interface methods can't be checked, thereby methods + * are just called. execute method is not called + * at all as the dialog shown can't be disposed.

+ * + * Test is NOT multithread compliant.

+ * @see com.sun.star.ui.dialogs.XExecutableDialog + */ +public class _XExecutableDialog extends MultiMethodTest { + + public XExecutableDialog oObj = null; + private ExecThread eThread = null; + + /** + * Test calls the method.

+ * Has OK status if the method successfully returns + * and no exceptions were thrown.

+ */ + public void _setTitle() { + oObj.setTitle("The Title"); + tRes.tested("setTitle()",true); + } + + /** + * This method is excluded from automated test since + * we can't close the dialog.

+ * Always has OK status. + */ + public void _execute() { + String aName = tEnv.getTestCase().getObjectName(); + boolean result = false; + if (aName.startsWith("OData") || aName.startsWith("OSQL")) { + log.println("dbaccess dialogs can't be closed via API"); + log.println("therefore they aren't executed"); + log.println("and the result is set to true"); + result = true; + } else { + eThread = new ExecThread(oObj); + log.println("Starting Dialog"); + eThread.start(); + XCancellable canc = UnoRuntime.queryInterface + (XCancellable.class, tEnv.getTestObject()); + waitForEventIdle(); + if (canc != null) { + closeDialog(); + short res = eThread.execRes; + log.println("result: "+res); + result = (res == 0); + } else { + this.disposeEnvironment(); + result=true; + log.println("XCancellable isn't supported and the "+ + "environment is killed hard"); + } + + + } + tRes.tested("execute()",result); + } + + /** + * Calls execute() method in a separate thread. + * Necessary to check if this method works + */ + protected class ExecThread extends Thread { + + public short execRes = (short) 17; + private final XExecutableDialog Diag; + + public ExecThread(XExecutableDialog Diag) { + this.Diag = Diag ; + } + + @Override + public void run() { + try { + execRes = Diag.execute(); + System.out.println("HERE: "+execRes); + } catch(Exception e) { + log.println("Thread has been interrupted ... "); + } + } + } + + @Override + public void after() { + if (eThread.isAlive()) { + log.println("Thread didn't die ... cleaning up"); + disposeEnvironment(); + } + } + + private void closeDialog() { + XCancellable canc = UnoRuntime.queryInterface( + XCancellable.class, tEnv.getTestObject()); + if (canc != null) { + log.println("Cancelling Dialog"); + canc.cancel(); + } else { + this.disposeEnvironment(); + } + + long st = System.currentTimeMillis(); + boolean toLong = false; + + log.println("waiting for dialog to close"); + + while (eThread.isAlive() && !toLong) { + //wait for dialog to close + toLong = (System.currentTimeMillis()-st > 10000); + } + + log.println("done"); + + try { + if (eThread.isAlive()) { + log.println("Interrupting Thread"); + eThread.interrupt(); + Thread.yield(); + } + } catch (Exception e) { + // who cares ;-) + } + + st = System.currentTimeMillis(); + toLong = false; + + log.println("waiting for interruption to work"); + + while (eThread.isAlive() && !toLong) { + //wait for dialog to close + toLong = (System.currentTimeMillis()-st > 10000); + } + + log.println("DialogThread alive: "+eThread.isAlive()); + + log.println("done"); + + } + +} + + diff --git a/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePicker.java b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePicker.java new file mode 100644 index 000000000..3a2a71ec9 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/dialogs/_XFilePicker.java @@ -0,0 +1,151 @@ +/* + * 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.ui.dialogs; + +import lib.MultiMethodTest; + +import com.sun.star.ui.dialogs.XFilePicker2; + +/** +* Testing com.sun.star.ui.XFilePicker +* interface methods : +*

+* The following predefined files needed to complete the test: +*