diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
commit | ed5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch) | |
tree | 7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /qadevOOo/tests/java/ifc/ucb | |
parent | Initial commit. (diff) | |
download | libreoffice-upstream.tar.xz libreoffice-upstream.zip |
Adding upstream version 4:7.4.7.upstream/4%7.4.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
20 files changed, 2625 insertions, 0 deletions
diff --git a/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetFactory.java b/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetFactory.java new file mode 100644 index 000000000..d3174d926 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetFactory.java @@ -0,0 +1,106 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.sdbc.XResultSet; +import com.sun.star.ucb.XCachedContentResultSetFactory; + +/** +* Testing <code>com.sun.star.ucb.XCachedContentResultSetFactory</code> +* interface methods : +* <ul> +* <li><code> createCachedContentResultSet()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CachedContentResultSetStub'</code> (of type +* <code>com.sun.star.sdbc.XResultSet</code>): +* this must be an implementation of <code> +* com.sun.star.ucb.CachedContentResultSetStub</code> service.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XCachedContentResultSetFactory +*/ +public class _XCachedContentResultSetFactory extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XCachedContentResultSetFactory oObj; + private XResultSet resSetStub = null ; + + /** + * Retrieves object relation. + * @throws StatusException If relation not found. + */ + @Override + public void before() { + resSetStub = (XResultSet) + tEnv.getObjRelation("CachedContentResultSetStub") ; + if (resSetStub == null) { + log.println("!!! Relation not found !!!") ; + throw new StatusException + (Status.failed("!!! Relation not found !!!")) ; + } + } + + /** + * Creates result set from result set stub. After that number + * of rows from result set created and its stub are retrieved + * using their static representations and comared. <p> + * Has <b>OK</b> status if numbers of rows are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _createCachedContentResultSet() { + boolean result = true ; + + XResultSet resSet = oObj.createCachedContentResultSet + (resSetStub, null) ; + + if (resSet == null) { + log.println("!!! Method returned null !!!") ; + result = false ; + } else { + try { + resSetStub.last() ; + int stubRowNum = resSetStub.getRow() ; + + resSet.last() ; + int setRowNum = resSet.getRow() ; + + result = stubRowNum == setRowNum && setRowNum > 0 ; + + log.println("Number of rows : stub=" + stubRowNum + + " set=" + setRowNum) ; + } catch (com.sun.star.sdbc.SQLException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } + } + + tRes.tested("createCachedContentResultSet()", result) ; + + } +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetStubFactory.java b/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetStubFactory.java new file mode 100644 index 000000000..90f3d4688 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCachedContentResultSetStubFactory.java @@ -0,0 +1,104 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.sdbc.XResultSet; +import com.sun.star.ucb.XCachedContentResultSetStubFactory; + +/** +* Testing <code>com.sun.star.ucb.XCachedContentResultSetStubFactory</code> +* interface methods : +* <ul> +* <li><code> createCachedContentResultSetStub()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'ContentResultSet'</code> (of type +* <code>com.sun.star.sdbc.XResultSet</code>): +* this must be an implementation of <code> +* com.sun.star.ucb.ContentResultSet</code> service.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XCachedContentResultSetStubFactory +*/ +public class _XCachedContentResultSetStubFactory extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XCachedContentResultSetStubFactory oObj; + private XResultSet resSet = null ; + + /** + * Retrieves object relation. + * @throws StatusException If relation not found. + */ + @Override + public void before() { + resSet = (XResultSet) tEnv.getObjRelation("ContentResultSet") ; + if (resSet == null) { + log.println("!!! Relation not found !!!") ; + throw new StatusException(Status.failed("!!! Relation not found !!!")) ; + } + } + + /** + * Creates cached result set stub from static result set. After that number + * of rows in cached result set created and its source set are retrieved + * and comared. <p> + * Has <b>OK</b> status if numbers of rows are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _createCachedContentResultSetStub() { + boolean result = true ; + + XResultSet resSetStub = oObj.createCachedContentResultSetStub + (resSet) ; + + if (resSetStub == null) { + log.println("!!! Method returned null !!!") ; + result = false ; + } else { + try { + resSetStub.last() ; + int stubRowNum = resSetStub.getRow() ; + + resSet.last() ; + int setRowNum = resSet.getRow() ; + + result = stubRowNum == setRowNum && setRowNum > 0 ; + + log.println("Number of rows : set=" + setRowNum + + " stub=" + stubRowNum) ; + } catch (com.sun.star.sdbc.SQLException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } + } + + tRes.tested("createCachedContentResultSetStub()", result) ; + + } +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetFactory.java b/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetFactory.java new file mode 100644 index 000000000..06dc4974f --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetFactory.java @@ -0,0 +1,114 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.sdbc.XResultSet; +import com.sun.star.ucb.XCachedDynamicResultSetFactory; +import com.sun.star.ucb.XDynamicResultSet; + +/** +* Testing <code>com.sun.star.ucb.XCachedDynamicResultSetFactory</code> +* interface methods : +* <ul> +* <li><code> createCachedDynamicResultSet()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'CachedDynamicResultSetStub'</code> (of type +* <code>com.sun.star.sdbc.XDynamicResultSet</code>): +* this must be an implementation of <code> +* com.sun.star.ucb.CachedDynamicResultSetStub</code> service.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XCachedDynamicResultSetFactory +*/ +public class _XCachedDynamicResultSetFactory extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XCachedDynamicResultSetFactory oObj; + private XDynamicResultSet resSetStub = null ; + + /** + * Retrieves object relation. + * @throws StatusException If relation not found. + */ + @Override + public void before() { + resSetStub = (XDynamicResultSet) + tEnv.getObjRelation("CachedDynamicResultSetStub") ; + if (resSetStub == null) { + log.println("!!! Relation not found !!!") ; + throw new StatusException + (Status.failed("!!! Relation not found !!!")) ; + } + } + + /** + * Creates result set from result set stub. After that number + * of rows from result set created and its stub are retrieved + * using their static representations and comared. <p> + * Has <b>OK</b> status if numbers of rows are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _createCachedDynamicResultSet() { + boolean result = true ; + + XDynamicResultSet resSet = oObj.createCachedDynamicResultSet + (resSetStub, null) ; + + if (resSet == null) { + log.println("!!! Method returned null !!!") ; + result = false ; + } else { + try { + XResultSet resSetS = resSet.getStaticResultSet() ; + XResultSet resSetStubS = resSetStub.getStaticResultSet() ; + + resSetStubS.last() ; + int stubRowNum = resSetStubS.getRow() ; + + resSetS.last() ; + int setRowNum = resSetS.getRow() ; + + result = stubRowNum == setRowNum && setRowNum > 0 ; + + log.println("Number of rows : stub=" + stubRowNum + + " set=" + setRowNum) ; + } catch (com.sun.star.sdbc.SQLException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.ucb.ListenerAlreadySetException e) { + log.println("!!! Can't get static result sets :") ; + e.printStackTrace(log) ; + result = false ; + } + } + + tRes.tested("createCachedDynamicResultSet()", result) ; + + } +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetStubFactory.java b/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetStubFactory.java new file mode 100644 index 000000000..cb38aff5b --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCachedDynamicResultSetStubFactory.java @@ -0,0 +1,174 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.sdbc.XResultSet; +import com.sun.star.ucb.XCachedDynamicResultSetFactory; +import com.sun.star.ucb.XCachedDynamicResultSetStubFactory; +import com.sun.star.ucb.XDynamicResultSet; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.ucb.XCachedDynamicResultSetStubFactory</code> +* interface methods : +* <ul> +* <li><code> createCachedDynamicResultSetStub()</code></li> +* <li><code> connectToCache()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'DynamicResultSet'</code> (of type +* <code>com.sun.star.sdbc.XDynamicResultSet</code>): +* this must be an implementation of <code> +* com.sun.star.ucb.DynamicResultSet</code> service.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XCachedDynamicResultSetStubFactory +*/ +public class _XCachedDynamicResultSetStubFactory extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XCachedDynamicResultSetStubFactory oObj; + private XDynamicResultSet resSet = null ; + + /** + * Retrieves object relation. + * @throws StatusException If relation not found. + */ + @Override + public void before() { + resSet = (XDynamicResultSet) tEnv.getObjRelation("DynamicResultSet") ; + if (resSet == null) { + log.println("!!! Relation not found !!!") ; + throw new StatusException(Status.failed("!!! Relation not found !!!")) ; + } + } + + /** + * Creates result set stub from result set. After that number + * of rows from result set stub created and its source set are retrieved + * using their static representations and compared. <p> + * Has <b>OK</b> status if numbers of rows are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _createCachedDynamicResultSetStub() { + boolean result = true ; + + XDynamicResultSet resSetStub = oObj.createCachedDynamicResultSetStub(resSet) ; + + if (resSetStub == null) { + log.println("!!! Method returned null !!!") ; + result = false ; + } else { + try { + XResultSet resSetS = resSet.getStaticResultSet() ; + XResultSet resSetStubS = resSetStub.getStaticResultSet() ; + + resSetStubS.last() ; + int stubRowNum = resSetStubS.getRow() ; + + resSetS.last() ; + int setRowNum = resSetS.getRow() ; + + result = stubRowNum == setRowNum && setRowNum > 0 ; + + log.println("Number of rows : stub=" + stubRowNum + + " set=" + setRowNum) ; + } catch (com.sun.star.sdbc.SQLException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.ucb.ListenerAlreadySetException e) { + log.println("!!! Can't get static result sets :") ; + e.printStackTrace(log) ; + result = false ; + } + } + + tRes.tested("createCachedDynamicResultSetStub()", result) ; + } + + /** + * Creates an instance of <code>CachedDynamicResultSet</code> service + * which is not connected to any stub. Then tries to connect it to + * <code>DynamicResultSet</code> created and passed as relation. + * Connection is checked by retrieving and comparing of row numbers + * of connected set and its source set. <p> + * Has <b>OK</b> status if row numbers are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _connectToCache() throws Exception { + boolean result = true ; + + Object fac = tParam.getMSF().createInstance + ("com.sun.star.ucb.CachedDynamicResultSetFactory") ; + + XCachedDynamicResultSetFactory setFac = UnoRuntime.queryInterface + (XCachedDynamicResultSetFactory.class, fac) ; + + XDynamicResultSet rmtSet = setFac.createCachedDynamicResultSet(null, null) ; + + try { + oObj.connectToCache(resSet, rmtSet, null, null) ; + } catch (com.sun.star.ucb.ListenerAlreadySetException e) { + log.println("!!! Unexpected exception :" + e) ; + result = false ; + } catch (com.sun.star.ucb.AlreadyInitializedException e) { + log.println("!!! Unexpected exception :" + e) ; + result = false ; + } + + if (result) { + // checking connection to the source + try { + XResultSet statRmtSet = rmtSet.getStaticResultSet() ; + XResultSet statResSet = resSet.getStaticResultSet() ; + + statRmtSet.last() ; + int rmtRowNum = statRmtSet.getRow() ; + + statResSet.last() ; + int resRowNum = statResSet.getRow() ; + + result = rmtRowNum == resRowNum && resRowNum > 0 ; + + log.println("Number of rows : destination=" + rmtRowNum + + " source=" + resRowNum) ; + } catch (com.sun.star.sdbc.SQLException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.ucb.ListenerAlreadySetException e) { + log.println("!!! Something wrong with result sets :") ; + e.printStackTrace(log) ; + result = false ; + } + } + + tRes.tested("connectToCache()", result) ; + } + +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor.java b/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor.java new file mode 100644 index 000000000..7fa27bbc8 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor.java @@ -0,0 +1,234 @@ +/* + * 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.ucb; + +import com.sun.star.ucb.Command; +import com.sun.star.ucb.CommandAbortedException; +import com.sun.star.ucb.CommandInfo; +import com.sun.star.ucb.GlobalTransferCommandArgument; +import com.sun.star.ucb.NameClash; +import com.sun.star.ucb.TransferCommandOperation; +import com.sun.star.ucb.UnsupportedCommandException; +import com.sun.star.ucb.XCommandInfo; +import com.sun.star.ucb.XCommandProcessor; +import com.sun.star.uno.Exception; +import com.sun.star.uno.UnoRuntime; +import lib.MultiMethodTest; +import lib.StatusException; + +/** +* Tests <code>XCommandProcessor</code>. The TestCase can pass (but doesn't have +* to) "XCommandProcessor.AbortCommand" relation, to specify command to abort in +* <code>abort()</code> test. +* +* Testing <code>com.sun.star.ucb.XCommandProcessor</code> +* interface methods : +* <ul> +* <li><code> createCommandIdentifier()</code></li> +* <li><code> execute()</code></li> +* <li><code> abort()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'XCommandProcessor.AbortCommand'</code> <b>optional</b> +* (of type <code>com.sun.star.ucb.Command</code>): +* specify command to abort in <code>abort()</code> test. +* If the relation is not specified the 'GlobalTransfer' +* command is used.</li> +* <ul> <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code>poliball.gif</code> : this file is required in case +* if the relation <code>'XCommandProcessor.AbortCommand'</code> +* is not specified. This file is used by 'GlobalTransfer' +* command as a source file for copying.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XCommandProcessor +*/ +public class _XCommandProcessor extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XCommandProcessor oObj; + + /** + * Contains the command id returned by <code>createCommandIdentifier() + * </code>. It is used in <code>abort()</code> test. + */ + int cmdId; + + /** + * Tests <code>createCommandIdentifier()</code>. Calls it for two times + * and checks returned values. <p> + * Has <b>OK</b> status if values are unique correct identifiers: not 0. + */ + public void _createCommandIdentifier() { + log.println("creating a command line identifier"); + + int testCmdId = oObj.createCommandIdentifier(); + cmdId = oObj.createCommandIdentifier(); + + if (cmdId == 0 || testCmdId == 0) { + log.println("createCommandLineIdentifier() returned 0 - FAILED"); + } + + if (cmdId == testCmdId) { + log.println("the command identifier is not unique"); + } + + tRes.tested("createCommandIdentifier()", + testCmdId != 0 && cmdId != 0 && cmdId != testCmdId); + } + + /** + * First executes 'geCommandInfo' command and examines returned + * command info information. Second tries to execute improper + * command. <p> + * Has <b> OK </b> status if in the first case returned information + * contains info about 'getCommandInfo' command and in the second + * case an exception is thrown. <p> + */ + public void _execute() { + String commandName = "getCommandInfo"; + Command command = new Command(commandName, -1, null); + + Object result; + + log.println("executing command " + commandName); + try { + result = oObj.execute(command, 0, null); + } catch (CommandAbortedException e) { + log.println("The command aborted " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } catch (Exception e) { + log.println("Unexpected exception " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } + + XCommandInfo xCmdInfo = UnoRuntime.queryInterface( + XCommandInfo.class, result); + + CommandInfo[] cmdInfo = xCmdInfo.getCommands(); + + boolean found = false; + + for (int i = 0; i < cmdInfo.length; i++) { + if (cmdInfo[i].Name.equals(commandName)) { + found = true; + break; + } + } + + log.println("testing execute with wrong command"); + + Command badCommand = new Command("bad command", -1, null); + + try { + oObj.execute(badCommand, 0, null); + } catch (CommandAbortedException e) { + log.println("CommandAbortedException thrown - OK"); + } catch (UnsupportedCommandException e) { + log.println("UnsupportedCommandException thrown - OK"); + } catch (Exception e) { + log.println("Wrong exception thrown " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } + + tRes.tested("execute()", found); + } + + /** + * First a separate thread where <code>abort</code> method + * is called permanently. Then a "long" command (for example, + * "transfer") is started. I case if relation is not + * specified 'GlobalTransfer' command starts to + * copy a file to temporary directory (if the relation is present + * then the its command starts to work). <p> + * Has <b> OK </b> status if the command execution is aborted, i.e. + * <code>CommandAbortedException</code> is thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> createCommandIdentifier() </code> : to have a unique + * identifier which is used to abort started command. </li> + * </ul> + */ + public void _abort() { + executeMethod("createCommandIdentifier()"); + + Command command = (Command)tEnv.getObjRelation( + "XCommandProcessor.AbortCommand"); + + if (command == null) { + String commandName = "globalTransfer"; + + String srcURL = util.utils.getFullTestURL("SwXTextEmbeddedObject.sdw") ; + String tmpURL = util.utils.getOfficeTemp(tParam.getMSF()) ; + log.println("Copying '" + srcURL + "' to '" + tmpURL) ; + + GlobalTransferCommandArgument arg = new + GlobalTransferCommandArgument( + TransferCommandOperation.COPY, srcURL, + tmpURL, "", NameClash.OVERWRITE); + + command = new Command(commandName, -1, arg); + } + + Thread aborter = new Thread() { + @Override + public void run() { + for (int i = 0; i < 10; i++) { + log.println("try to abort command"); + oObj.abort(cmdId); + util.utils.pause(10); + } + } + }; + + aborter.start(); + + util.utils.pause(15); + + log.println("executing command"); + try { + oObj.execute(command, cmdId, null); + log.println("Command execution completed"); + log.println("CommandAbortedException is not thrown"); + log.println("This is OK since there is no command implemented "+ + "that can be aborted"); + tRes.tested("abort()", true); + } catch (CommandAbortedException e) { + tRes.tested("abort()", true); + } catch (Exception e) { + log.println("Unexpected exception " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } + + try { + aborter.join(5000); + aborter.interrupt(); + } catch(InterruptedException e) { + } + } +} diff --git a/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor2.java b/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor2.java new file mode 100644 index 000000000..9c0223696 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XCommandProcessor2.java @@ -0,0 +1,41 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XCommandProcessor2; + + +public class _XCommandProcessor2 extends MultiMethodTest { + /** + * Contains the tested object. + */ + public XCommandProcessor2 oObj; + + public void _releaseCommandIdentifier() { + int id = oObj.createCommandIdentifier(); + oObj.releaseCommandIdentifier(id); + oObj.createCommandIdentifier(); + System.out.println("id: "+id); + System.out.println("id2: "+id); + tRes.tested("releaseCommandIdentifier()", true); + } + +} diff --git a/qadevOOo/tests/java/ifc/ucb/_XContentIdentifierFactory.java b/qadevOOo/tests/java/ifc/ucb/_XContentIdentifierFactory.java new file mode 100644 index 000000000..6a66dae9e --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XContentIdentifierFactory.java @@ -0,0 +1,67 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; +import util.utils; + +import com.sun.star.ucb.XContentIdentifier; +import com.sun.star.ucb.XContentIdentifierFactory; + +/** +* Testing <code>com.sun.star.ucb.XContentIdentifierFactory</code> +* interface methods : +* <ul> +* <li><code> createContentIdentifier()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* After test completion object environment has to be recreated. +* @see com.sun.star.ucb.XContentIdentifierFactory +*/ +public class _XContentIdentifierFactory extends MultiMethodTest { + /** + * Contains the tested object. + */ + public XContentIdentifierFactory oObj; + + /** + * Calls the tested method with a file url and + * gets an identifier. <p> + * Has <b> OK </b> status if content identifier and provider scheme are + * proper. <p> + */ + public void _createContentIdentifier() { + // creating a content identifier string - tmp url + String tmpDir = utils.getOfficeTemp(tParam.getMSF()); + + String contentId = utils.getFullURL(tmpDir); + + // the scheme is file + String scheme = "file"; + + XContentIdentifier identifier = oObj.createContentIdentifier(contentId); + + // verifying results + String resId = identifier.getContentIdentifier(); + String resScheme = identifier.getContentProviderScheme(); + + tRes.tested("createContentIdentifier()", contentId.equals(resId) + && scheme.equals(resScheme)); + } +} diff --git a/qadevOOo/tests/java/ifc/ucb/_XContentProvider.java b/qadevOOo/tests/java/ifc/ucb/_XContentProvider.java new file mode 100644 index 000000000..7f56233fb --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XContentProvider.java @@ -0,0 +1,130 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.ucb.XContent; +import com.sun.star.ucb.XContentIdentifier; +import com.sun.star.ucb.XContentIdentifierFactory; +import com.sun.star.ucb.XContentProvider; + +/** +* Testing <code>com.sun.star.ucb.XContentProvider</code> +* interface methods : +* <ul> +* <li><code> queryContent()</code></li> +* <li><code> compareContentIds()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'FACTORY'</code> (of type +* <code>com.sun.star.ucb.XContentIdentifierFactory</code>): +* a suitable factory which can produce content identifiers </li> +* <li> <code>'CONTENT1'</code> (<b>optional</b>) (of type <code>String</code>): +* name of the suitable content for provider tested. If relation +* is not specified the 'vnd.sun.star.help://' name will be used.</li> +* <li> <code>'CONTENT2'</code> (<b>optional</b>) (of type <code>String</code>): +* another name of the suitable content for provider tested. If relation +* is not specified the 'vnd.sun.star.writer://' name will be used.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XContentProvider +*/ +public class _XContentProvider extends MultiMethodTest { + + public static XContentProvider oObj = null; + protected XContentIdentifierFactory CIF = null ; + protected String content1 = "vnd.sun.star.help://" ; + protected String content2 = "vnd.sun.star.writer://" ; + + /** + * Retrieves object relations. + * @throws StatusException If one of relations not found. + */ + @Override + public void before() { + CIF = (XContentIdentifierFactory) tEnv.getObjRelation("FACTORY"); + String tmp = (String) tEnv.getObjRelation("CONTENT1") ; + if (tmp != null) content1 = tmp ; + tmp = (String) tEnv.getObjRelation("CONTENT2") ; + if (tmp != null) content2 = tmp ; + + if (CIF == null) throw new StatusException( + Status.failed("'FACTORY' relation is not found.")) ; + } + + /** + * Tries to query for some content suitable for this provider. <p> + * Has <b>OK</b> status if not null value is returned. + */ + public void _queryContent() { + try { + XContentIdentifierFactory CIF = (XContentIdentifierFactory) + tEnv.getObjRelation("FACTORY"); + String aURL = content1; + log.println("Trying to query "+aURL); + XContentIdentifier CI = CIF.createContentIdentifier(aURL); + XContent aContent = oObj.queryContent(CI); + boolean res = true; + Object nc = tEnv.getObjRelation("NoCONTENT"); + if (nc == null) { + res = aContent != null; + } + tRes.tested("queryContent()",res); + } catch (com.sun.star.ucb.IllegalIdentifierException e) { + log.println("Exception while checking 'queryContent'"); + e.printStackTrace(log); + tRes.tested("queryContent()",false); + } + } + + /** + * Creates two different content identifiers. First two different + * identifiers compared, then two same identifiers. <p> + * Has <b>OK</b> status if in the first case <code>false</code> + * returned, and in the second - <code>true</code>. + */ + public void _compareContentIds() { + XContentIdentifierFactory CIF = (XContentIdentifierFactory) + tEnv.getObjRelation("FACTORY"); + String aURL = content1 ; + XContentIdentifier CI = CIF.createContentIdentifier(aURL); + aURL = content2 ; + XContentIdentifier CI2 = CIF.createContentIdentifier(aURL); + int compare = oObj.compareContentIds(CI,CI2); + boolean res = (compare != 0); + if (!res) { + log.println("Didn't work with different IDs"); + log.println(compare+" was returned"); + } + compare = oObj.compareContentIds(CI,CI); + res &= (compare == 0); + if (!res) { + log.println("Didn't work with equal IDs"); + log.println(compare+" was returned"); + } + tRes.tested("compareContentIds()",res); + } + +} + + diff --git a/qadevOOo/tests/java/ifc/ucb/_XContentProviderFactory.java b/qadevOOo/tests/java/ifc/ucb/_XContentProviderFactory.java new file mode 100644 index 000000000..688b2bd35 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XContentProviderFactory.java @@ -0,0 +1,51 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XContentProvider; +import com.sun.star.ucb.XContentProviderFactory; + + +/** +* Testing <code>com.sun.star.ucb.XContentProviderFactory</code> +* interface methods : +* <ul> +* <li><code> createContentProvider()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XContentProviderFactory +*/ +public class _XContentProviderFactory extends MultiMethodTest { + + public static XContentProviderFactory oObj = null; + + /** + * Creates a provider. <p> + * Has <b> OK </b> status if the returned value is not + * <code>null</code>. <p> + */ + public void _createContentProvider() { + XContentProvider CP = oObj.createContentProvider + ("com.sun.star.ucb.ContentProviderFactory"); + tRes.tested("createContentProvider()",CP != null); + } +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XContentProviderManager.java b/qadevOOo/tests/java/ifc/ucb/_XContentProviderManager.java new file mode 100644 index 000000000..957901775 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XContentProviderManager.java @@ -0,0 +1,275 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.ucb.ContentProviderInfo; +import com.sun.star.ucb.DuplicateProviderException; +import com.sun.star.ucb.XContentProvider; +import com.sun.star.ucb.XContentProviderManager; +import com.sun.star.uno.Exception; +import com.sun.star.uno.UnoRuntime; + +/** +* Tests XContentProviderManager. The test registers two ContentProviders, calls +* queryXXX methods to verify results, and deregisters them. +* +* Testing <code>com.sun.star.ucb.XContentProviderManager</code> +* interface methods : +* <ul> +* <li><code> registerContentProvider()</code></li> +* <li><code> deregisterContentProvider()</code></li> +* <li><code> queryContentProviders()</code></li> +* <li><code> queryContentProvider()</code></li> +* </ul> <p> +* The test registers two ContentProviders, calls +* queryXXX methods to verify results, and deregisters them. <p> +* +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XContentProviderManager +*/ +public class _XContentProviderManager extends MultiMethodTest { + /** + * Contains the tested object. + */ + public XContentProviderManager oObj; + + /** + * The test scheme name. + */ + static final String myScheme = "test-scheme"; + + /** + * Any preexisting content provider. If it exists it will be hidden by + * <code>firstContentProvider</code>, registered with the same + * <code>myScheme</code>. Typically there is no preexisting content + * provider, unless the catch-all providers GnomeVFSContentProvider or + * GIOContentProvider is installed + */ + XContentProvider preexistingContentProvider; + + /** + * First content provider. It will be hidden by <code>contentProvider + * </code>, registered with the same <code>myScheme</code> to test + * the "hiding" behaviour. + */ + XContentProvider firstContentProvider; + + /** + * The main content provider. + */ + XContentProvider contentProvider; + + /** + * <code>ContentProvider</code>s information which are in the manager + * before registering the testing providers. + */ + ContentProviderInfo[] initialProvidersInfo; + + /** + * Creates two testing providers. + * + * @see #firstContentProvider + * @see #contentProvider + */ + @Override + public void before() { + XMultiServiceFactory xMSF = tParam.getMSF(); + + log.println("creating testing content providers"); + try { + firstContentProvider = UnoRuntime.queryInterface( + XContentProvider.class, xMSF.createInstance( + "com.sun.star.ucb.FileContentProvider")); + + contentProvider = UnoRuntime.queryInterface( + XContentProvider.class, xMSF.createInstance( + "com.sun.star.ucb.FileContentProvider")); + } catch (Exception e) { + log.println("Can't create content providers " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception", e); + } + } + + /** + * At the beginning call <code>queryContentProviders</code> method + * + * to have info about providers existing before new adding. + * It adds two testing contents providers, both for the same scheme. + * The second one is added two times: first, in non-replacing mode, to test + * <code>DuplicateProviderException</code>, and second, in replacing mode, + * to hide the first provider. <p> + * + * The evaluation of results are performed later, in + * <code>queryContentProvider()</code>. + * + * Has <b> OK </b> status if in the first provider is registered + * without exceptions, the second throws + * <code>DuplicateProviderException</code> in non-replacing mode, + * and no exceptions in replacing mode. <p> + * + * @see #_queryContentProvider + */ + public void _registerContentProvider() { + // querying providers info before inserting them, to verify results + initialProvidersInfo = oObj.queryContentProviders(); + + // GnomeVFSContentProvider or GIOContentProvider ?, typically null + preexistingContentProvider = oObj.queryContentProvider(myScheme); + + log.println("registering the first provider"); + try { + oObj.registerContentProvider(firstContentProvider, myScheme,false); + } catch (DuplicateProviderException e) { + log.println("Unexpected exception thrown " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception ", e); + } + + log.println("registering the second provider in non-replacing mode"); + try { + oObj.registerContentProvider(contentProvider, myScheme, false); + throw new StatusException(Status.failed("registerContentProvider(.., .., false)")); + } catch (DuplicateProviderException e) { + log.println("DuplicateProviderException thrown - OK"); + } + + XContentProvider result; + + log.println("registering the second provider in the replace mode"); + try { + result = oObj.registerContentProvider(contentProvider, myScheme, true); + } catch (DuplicateProviderException e) { + log.println("Unexpected exception thrown " + e.getMessage()); + e.printStackTrace(log); + throw new StatusException("Unexpected exception ", e); + } + + // check the result is the first provider + tRes.tested("registerContentProvider()", + result.equals(firstContentProvider)); + } + + /** + * It calls the method (after registering providers) and compares + * its result with the result before registering. + * + * Has <b> OK </b> status if the number of providers increases + * by one after registering custom provider. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerContentProvider() </code> : to compare number + * of providers. </li> + * </ul> + * @see #_registerContentProvider + */ + public void _queryContentProviders() { + executeMethod("registerContentProvider()"); + + ContentProviderInfo[] providersInfo = oObj.queryContentProviders(); + // verifying that the number of providers increased by 1 + tRes.tested("queryContentProviders()", + providersInfo.length == initialProvidersInfo.length + 1); + } + + /** + * It queries for added custom provider using its scheme + * and verifies its result with + * <code>queryContentProviders()</code> result and with + * custom provider created in <code>registerContentProvider()</code>. + * Also verifies <code>registerContentProvider()</code>. <p> + * + * Has <b>OK</b> status if the provider returned is found within + * all providers and is equal to provider created before. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerContentProvider() </code> </li> + * </ul> + */ + public void _queryContentProvider() { + executeMethod("registerContentProvider()"); + + XContentProvider result = oObj.queryContentProvider + ("http://www.sun.com"); + + log.println("finding queryContentProvider() result"); + boolean found = false; + + ContentProviderInfo[] providersInfo = oObj.queryContentProviders(); + + for (int i = 0; i < providersInfo.length; i++) { + if (result.equals(providersInfo[i].ContentProvider)) { + found = true; + break; + } + } + + tRes.tested("queryContentProvider()", found); + } + + /** + * At first one provider is deregistered, after that provider + * is queried, the second provider must be returned for the + * specified scheme. Then the second provider is deregistered. + * Now <code>null</code> value must be returned by the method + * <code>queryContentProvider</code> on the specified scheme. <p> + * + * Has <b>OK</b> status if in the first case the second provider + * remains registered, and after its removing no providers remain + * registered for the scheme specified. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerContentProvider() </code> : two providers + * must be registered. </li> + * </ul> + * The following method tests are to be executed before : + * <ul> + * <li> <code> queryContentProvider() </code> : to run this test + * finally. </li> + * <li> <code> queryContentProviders() </code> : to run this test + * finally. </li> + * </ul> + */ + public void _deregisterContentProvider() { + executeMethod("queryContentProvider()"); + executeMethod("queryContentProviders()"); + requiredMethod("registerContentProvider()"); + + log.println("deregistering the second provider"); + oObj.deregisterContentProvider(contentProvider, myScheme); + + XContentProvider res = oObj.queryContentProvider(myScheme); + + log.println("deregistering the first provider"); + oObj.deregisterContentProvider(firstContentProvider, myScheme); + + res = oObj.queryContentProvider(myScheme); + + // verifying that the original provider (typically none) is returned. + tRes.tested("deregisterContentProvider()", res == preexistingContentProvider); + } +} diff --git a/qadevOOo/tests/java/ifc/ucb/_XDataContainer.java b/qadevOOo/tests/java/ifc/ucb/_XDataContainer.java new file mode 100644 index 000000000..d077d1be4 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XDataContainer.java @@ -0,0 +1,126 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XDataContainer; + +/** +* Testing <code>com.sun.star.ucb.XDataContainer</code> +* interface methods : +* <ul> +* <li><code> getContentType()</code></li> +* <li><code> setContentType()</code></li> +* <li><code> getData()</code></li> +* <li><code> setData()</code></li> +* <li><code> getDataURL()</code></li> +* <li><code> setDataURL()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XDataContainer +*/ +public class _XDataContainer extends MultiMethodTest { + + public static XDataContainer oObj = null; // oObj filled by MultiMethodTest + private final byte[] data = new byte[] {34, 35, 36} ; + private String dataURL = null; + + /** + * Sets the content type to some value. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _setContentType() { + oObj.setContentType("image/jpeg") ; + tRes.tested("setContentType()", true) ; + } + + /** + * Check if values 'set' and 'get' are equal. <p> + * Has <b>OK</b> status if they are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setContentType() </code> </li> + * </ul> + */ + public void _getContentType() { + requiredMethod("setContentType()") ; + + String type = oObj.getContentType() ; + tRes.tested("getContentType()", "image/jpeg".equals(type)) ; + } + + /** + * Sets the data to some byte array. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _setData() { + oObj.setData(data) ; + tRes.tested("setData()", true) ; + } + + /** + * Check if arrays 'set' and 'get' are equal. <p> + * Has <b>OK</b> status if they are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setData() </code> </li> + * </ul> + */ + public void _getData() { + requiredMethod("setData()") ; + + byte[] gData = oObj.getData() ; + boolean res = true ; + if (res = (gData != null && gData.length == data.length)) { + for (int i = 0; i < data.length; i++) { + res &= data[i] == gData[i] ; + } + } + + tRes.tested("getData()", res) ; + } + + /** + * Sets the data URL to some URL. <p> + * Has <b>OK</b> status if no runtime exceptions occurred. + */ + public void _setDataURL() { + dataURL = util.utils.getOfficeTemp(tParam.getMSF()) ; + oObj.setDataURL(dataURL) ; + tRes.tested("setDataURL()", true) ; + } + + /** + * Check if URLs 'set' and 'get' are equal. <p> + * Has <b>OK</b> status if they are equal. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setDataURL() </code> </li> + * </ul> + */ + public void _getDataURL() { + requiredMethod("setDataURL()") ; + + String gURL = oObj.getDataURL() ; + tRes.tested("getDataURL()", dataURL.equals(gURL)) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/ucb/_XFileIdentifierConverter.java b/qadevOOo/tests/java/ifc/ucb/_XFileIdentifierConverter.java new file mode 100644 index 000000000..fb947ffb6 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XFileIdentifierConverter.java @@ -0,0 +1,90 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XFileIdentifierConverter; + +/** +* Testing <code>com.sun.star.ucb.XFileIdentifierConverter</code> +* interface methods : +* <ul> +* <li><code> getFileProviderLocality()</code></li> +* <li><code> getFileURLFromSystemPath()</code></li> +* <li><code> getSystemPathFromFileURL()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XFileIdentifierConverter +*/ +public class _XFileIdentifierConverter extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XFileIdentifierConverter oObj; + + /** + * Gets the locality for SOffice temporary directory. <p> + * Has <b> OK </b> status if the method returns value greater + * than 0 (as office temp directory is supposed to be in the + * same location). <p> + */ + public void _getFileProviderLocality() { + String baseURL = util.utils.getOfficeTemp(tParam.getMSF()); + log.println("Using: "+baseURL); + int loc = oObj.getFileProviderLocality(baseURL); + log.println("Getting: "+loc); + tRes.tested("getFileProviderLocality()",loc > 0); + } + + /** + * Tries to convert URL of SOffice temp directory to system + * dependent path. <p> + * Has <b> OK </b> status if the method returns system dependent + * representation of the URL passed. <p> + */ + public void _getSystemPathFromFileURL() { + String baseURL = util.utils.getOfficeTemp(tParam.getMSF()); + log.println("Using (Base): "+baseURL); + String sysURL = util.utils.getOfficeTempDirSys(tParam.getMSF()); + log.println("Using (System): "+sysURL); + String get = oObj.getSystemPathFromFileURL(baseURL); + log.println("Getting: "+get); + //sysURL = sysURL.substring(0,sysURL.length()-1); + tRes.tested("getSystemPathFromFileURL()",get.equals(sysURL)); + } + + /** + * Tries to convert system dependent path of SOffice temp + * directory to URL representation. <p> + * Has <b> OK </b> status if the method returns URL representation + * of the system dependent path passed. <p> + */ + public void _getFileURLFromSystemPath() { + String baseURL = util.utils.getOfficeTemp(tParam.getMSF()); + log.println("Using (Base): "+baseURL); + String sysURL = util.utils.getOfficeTempDirSys(tParam.getMSF()); + log.println("Using (System): "+sysURL); + String get = oObj.getFileURLFromSystemPath(sysURL,sysURL); + log.println("Getting: "+get); + tRes.tested("getFileURLFromSystemPath()",get.equals(baseURL)); + } + +} diff --git a/qadevOOo/tests/java/ifc/ucb/_XParameterizedContentProvider.java b/qadevOOo/tests/java/ifc/ucb/_XParameterizedContentProvider.java new file mode 100644 index 000000000..f8dcd4d8a --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XParameterizedContentProvider.java @@ -0,0 +1,84 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XContentProvider; +import com.sun.star.ucb.XParameterizedContentProvider; + +/** +* Testing <code>com.sun.star.ucb.XParameterizedContentProvider</code> +* interface methods : +* <ul> +* <li><code> registerInstance()</code></li> +* <li><code> deregisterInstance()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XParameterizedContentProvider +*/ +public class _XParameterizedContentProvider extends MultiMethodTest { + + public static XParameterizedContentProvider oObj = null; + + /** + * Registers an instance with some arguments. <p> + * Has <b>OK</b> status if the method returns non <code>null</code> + * provider. + */ + public void _registerInstance() { + try { + XContentProvider CP = oObj.registerInstance( + "\"vnd.sun.star.pkg://file\".*", + "uno:pipe,name=ucb_soffice;<PIPE>;urp;UCB.Factory", + true); + tRes.tested("registerInstance()",CP != null); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while checking 'registerInstance'"); + e.printStackTrace(log); + tRes.tested("registerInstance()",false); + } + } + + /** + * Deregisters the instance registered before. <p> + * Has <b>OK</b> status if the method returns non <code>null</code> + * provider. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> registerInstance() </code> : to deregister it here. </li> + * </ul> + */ + public void _deregisterInstance() { + requiredMethod("registerInstance()"); + try { + XContentProvider CP = oObj.deregisterInstance( + "\"vnd.sun.star.pkg://file\".*", + "uno:pipe,name=ucb_soffice;<PIPE>;urp;UCB.Factory"); + tRes.tested("deregisterInstance()",CP != null); + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Exception while checking 'deregisterInstance'"); + e.printStackTrace(log); + tRes.tested("deregisterInstance()",false); + } + } + +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XPropertyMatcherFactory.java b/qadevOOo/tests/java/ifc/ucb/_XPropertyMatcherFactory.java new file mode 100644 index 000000000..084ab5293 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XPropertyMatcherFactory.java @@ -0,0 +1,62 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.RuleOperator; +import com.sun.star.ucb.RuleTerm; +import com.sun.star.ucb.SearchCriterium; +import com.sun.star.ucb.XPropertyMatcher; +import com.sun.star.ucb.XPropertyMatcherFactory; + +/** +* Testing <code>com.sun.star.ucb.XPropertyMatcherFactory</code> +* interface methods : +* <ul> +* <li><code> createPropertyMatcher()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XPropertyMatcherFactory +*/ +public class _XPropertyMatcherFactory extends MultiMethodTest { + + public static XPropertyMatcherFactory oObj = null; + + /** + * Tries to create <code>XPropertyMatcher</code> implementation. <p> + * Has <b>OK</b> status if not null value returned. + */ + public void _createPropertyMatcher() { + RuleTerm term = new RuleTerm() ; + + term.Property = "ContentType" ; + term.Operand = "vnd.sun.star.fsys" ; + term.Operator = RuleOperator.CONTAINS ; + + SearchCriterium crit = new SearchCriterium(new RuleTerm[] {term}) ; + + XPropertyMatcher matcher = oObj.createPropertyMatcher + (new SearchCriterium[] {crit}) ; + + tRes.tested("createPropertyMatcher()", matcher != null) ; + } +} + + diff --git a/qadevOOo/tests/java/ifc/ucb/_XPropertySetRegistryFactory.java b/qadevOOo/tests/java/ifc/ucb/_XPropertySetRegistryFactory.java new file mode 100644 index 000000000..e365b11bf --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XPropertySetRegistryFactory.java @@ -0,0 +1,50 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XPropertySetRegistry; +import com.sun.star.ucb.XPropertySetRegistryFactory; + +/** +* Testing <code>com.sun.star.ucb.XPropertySetRegistryFactory</code> +* interface methods : +* <ul> +* <li><code> createPropertySetRegistry()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XPropertySetRegistryFactory +*/ +public class _XPropertySetRegistryFactory extends MultiMethodTest { + + public static XPropertySetRegistryFactory oObj = null; + + /** + * Test calls the method with empty string argument. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _createPropertySetRegistry() { + XPropertySetRegistry PSR = oObj.createPropertySetRegistry(""); + tRes.tested("createPropertySetRegistry()",PSR != null); + } + +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderAcceptor.java b/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderAcceptor.java new file mode 100644 index 000000000..63e41ab9d --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderAcceptor.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.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XRemoteContentProviderAcceptor; +import com.sun.star.ucb.XRemoteContentProviderDoneListener; + +/** + * Testing <code>com.sun.star.ucb.XRemoteContentProviderAcceptor</code> + * interface methods : + * <ul> + * <li><code> addRemoteContentProvider()</code></li> + * <li><code> removeRemoteContentProvider()</code></li> + * </ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.ucb.XRemoteContentProviderAcceptor + */ +public class _XRemoteContentProviderAcceptor extends MultiMethodTest { + + public XRemoteContentProviderAcceptor oObj = null; + + /** + * The simple <code>XRemoteContentProviderDoneListener</code> + * implementation. + */ + public static class DoneListener implements XRemoteContentProviderDoneListener { + + public void doneWithRemoteContentProviders + (XRemoteContentProviderAcceptor xRCPA) { + } + + } + + XRemoteContentProviderDoneListener aDoneListener = new DoneListener(); + + /** + * Adds a remote provider. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. + */ + public void _addRemoteContentProvider() { + boolean res = false; + + String[] template = new String[]{"file"}; + res = oObj.addRemoteContentProvider("ContentID",tParam.getMSF(), + template,aDoneListener); + + tRes.tested("addRemoteContentProvider()",res); + } + + /** + * Removes the remote provider added before. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> addRemoteContentProvider() </code> : provider must + * be added first </li> + * </ul> + */ + public void _removeRemoteContentProvider() { + requiredMethod("addRemoteContentProvider()") ; + + boolean res = false; + + res = oObj.removeRemoteContentProvider("ContentID"); + tRes.tested("removeRemoteContentProvider()",res); + } + + +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderActivator.java b/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderActivator.java new file mode 100644 index 000000000..c97b8946e --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XRemoteContentProviderActivator.java @@ -0,0 +1,69 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.ucb.XContentProviderManager; +import com.sun.star.ucb.XRemoteContentProviderAcceptor; +import com.sun.star.ucb.XRemoteContentProviderActivator; + +/** + * Testing <code>com.sun.star.ucb.XRemoteContentProviderActivator</code> + * interface methods : + * <ul> + * <li><code> activateRemoteContentProviders()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'RCPA'</code> + * (of type <code>XRemoteContentProviderAcceptor</code>): + * this acceptor is used to add a provider first before + * its activation. </li> + * <ul> <p> + * Test is <b> NOT </b> multithread compliant. <p> + * @see com.sun.star.ucb.XRemoteContentProviderActivator + */ +public class _XRemoteContentProviderActivator extends MultiMethodTest { + + public XRemoteContentProviderActivator oObj = null; + + /** + * First the relation is retrieved and a remote provider is + * added to the acceptor. Then it is activated and + * removed. <p> + * Has <b> OK </b> status if <code>activateRemoteContentProviders</code> + * method returns not <code>null</code> value. <p> + */ + public void _activateRemoteContentProviders() { + boolean res = false; + + XRemoteContentProviderAcceptor xRCPA = (XRemoteContentProviderAcceptor) + tEnv.getObjRelation("RCPA"); + String[] template = new String[]{"file"}; + xRCPA.addRemoteContentProvider("ContentID",tParam.getMSF(),template,null); + XContentProviderManager CPM = oObj.activateRemoteContentProviders(); + res = (CPM != null); + xRCPA.removeRemoteContentProvider("ContentID"); + + tRes.tested("activateRemoteContentProviders()",res); + } + +} + diff --git a/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess.java b/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess.java new file mode 100644 index 000000000..2f633122e --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess.java @@ -0,0 +1,539 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.task.XInteractionHandler; +import com.sun.star.ucb.XSimpleFileAccess; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.DateTime; + +import java.util.Calendar; +import java.util.GregorianCalendar; + +/** +* Testing <code>com.sun.star.ucb.XSimpleFileAccess</code> +* interface methods. <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code>XSimpleFileAccess/XSimpleFileAccess.txt</code> : +* text file of length 17 and 2000 year created .</li> +* <li> <code>XSimpleFileAccess/XSimpleFileAccess2.txt</code> : +* text file for <code>openFileReadWrite</code> method test.</li> +* <ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'InteractionHandler'</code> +* (of type <code>XInteractionHandler</code>) +* instance of <code>com.sun.star.sdb.InteractionHandler</code> +* </li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XSimpleFileAccess +*/ +public class _XSimpleFileAccess extends MultiMethodTest { + + public static XSimpleFileAccess oObj = null; + + /** + * Copies <b>XSimpleFileAccess.txt</b> to a new file, checks + * if it was successfully copied and then deletes it. <p> + * Has <b> OK </b> status if after method call new copy of file + * exists and no exceptions were thrown. <p> + */ + public void _copy() { + try { + String copiedFile = ""; + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String filename = dirname+"XSimpleFileAccess.txt"; + copiedFile = dirnameTo + "XSimpleFileAccess_copy.txt"; + + if (oObj.exists(copiedFile)) + oObj.kill(copiedFile); + + oObj.copy(filename,copiedFile); + tRes.tested("copy()",oObj.exists(copiedFile)); + oObj.kill(copiedFile); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'copy()'"); + ex.printStackTrace(log); + tRes.tested("copy()",false); + } + + } //EOF copy() + + /** + * Copies <b>XSimpleFileAccess.txt</b> to a new file, tries to + * rename it, then checks + * if it was successfully renamed and then deletes it. <p> + * Has <b> OK </b> status if after method call new file + * exists and no exceptions were thrown. <p> + */ + public void _move() { + try { + String copiedFile = ""; + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String filename = dirname+"XSimpleFileAccess.txt"; + copiedFile = dirnameTo + "XSimpleFileAccess_copy.txt"; + + if (oObj.exists(copiedFile)) + oObj.kill(copiedFile); + + oObj.copy(filename,copiedFile); + filename = copiedFile; + copiedFile = dirnameTo + "XSimpleFileAccess_move.txt"; + oObj.move(filename,copiedFile); + tRes.tested("move()",oObj.exists(copiedFile)); + oObj.kill(copiedFile); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'move()'"); + ex.printStackTrace(log); + tRes.tested("move()",false); + } + + } //EOF move() + + /** + * Copies <b>XSimpleFileAccess.txt</b> to a new file, deletes it + * and checks if it isn't exist. <p> + * Has <b> OK </b> status if after method call new copy of file + * doesn't exist and no exceptions were thrown. <p> + */ + public void _kill() { + try { + String copiedFile = ""; + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String filename = dirname+"XSimpleFileAccess.txt"; + copiedFile = dirnameTo + "XSimpleFileAccess_copy.txt"; + + if (oObj.exists(copiedFile)) + oObj.kill(copiedFile); + + oObj.copy(filename,copiedFile); + oObj.kill(copiedFile); + tRes.tested("kill()",!oObj.exists(copiedFile)); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'kill()'"); + ex.printStackTrace(log); + tRes.tested("kill()",false); + } + + } //EOF kill() + + /** + * Tries to check if <b>XSimpleFileAccess</b> is folder. <p> + * Has <b>OK</b> status if the method returns <code>true</code> + */ + public void _isFolder() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + tRes.tested("isFolder()",oObj.isFolder(dirname)); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'isFolder()'"); + ex.printStackTrace(log); + tRes.tested("isFolder()",false); + } + + } //EOF isFolder() + + /** + * Copies <b>XSimpleFileAccess.txt</b> to a new file, sets + * 'READONLY' attribute and checks it. Second clears 'READONLY' + * attribute and checks it again. The copy of file is deleted + * finally.<p> + * + * Has <b> OK </b> status if in the first case method returns + * <code></code>, and in the second case - <code>false</code> + * and no exceptions were thrown. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setReadOnly </code> </li> + * </ul> + */ + public void _isReadOnly() { + requiredMethod("setReadOnly()"); + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + boolean result = true; + + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String readonlyCopy = dirnameTo + "XSimpleFileAccess_copy.txt" ; + + if (oObj.exists(readonlyCopy)) + oObj.kill(readonlyCopy); + + oObj.copy(filename, readonlyCopy); + + oObj.setReadOnly(readonlyCopy, true); + result &= oObj.isReadOnly(readonlyCopy); + oObj.setReadOnly(readonlyCopy, false); + result &= !oObj.isReadOnly(readonlyCopy); + + oObj.kill(readonlyCopy); + tRes.tested("isReadOnly()",result); + } catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'isReadOnly()'"); + ex.printStackTrace(log); + tRes.tested("isReadOnly()",false); + } + + } //EOF isReadOnly() + + + /** + * Copies <b>XSimpleFileAccess.txt</b> to a new file, sets + * 'READONLY' attribute and checks it. Second clears 'READONLY' + * attribute and checks it again. The copy of file is deleted + * finally.<p> + * + * Has <b> OK </b> status if in the first case method returns + * <code></code>, and in the second case - <code>false</code> + * and no exceptions were thrown. <p> + * + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> setReadOnly </code> </li> + * </ul> + */ + public void _setReadOnly() { + boolean result = true ; + + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String readonlyCopy = dirnameTo + "XSimpleFileAccess_copy.txt" ; + + if (oObj.exists(readonlyCopy)) + oObj.kill(readonlyCopy); + + oObj.copy(filename, readonlyCopy); + + oObj.setReadOnly(readonlyCopy, true); + result &= oObj.isReadOnly(readonlyCopy) ; + oObj.setReadOnly(readonlyCopy, false); + result &= !oObj.isReadOnly(readonlyCopy) ; + tRes.tested("setReadOnly()", result); + + oObj.kill(readonlyCopy); + } + catch (Exception ex) { + log.println("Exception occurred while testing 'setReadOnly()'"); + ex.printStackTrace(log); + tRes.tested("setReadOnly()",false); + } + } //EOF setReadOnly() + + /** + * Creates folder and then checks if it was successfully created. <p> + * Has <b>OK</b> status if folder was created and no exceptions + * were thrown. + */ + public void _createFolder() { + try { + String tmpdirname = util.utils.getOfficeTemp(tParam.getMSF()) ; + String newFolder = tmpdirname+"SimpleSubFolder"; + + if (oObj.exists(newFolder)) + oObj.kill(newFolder); + + oObj.createFolder(newFolder); + tRes.tested("createFolder()",oObj.isFolder(newFolder)); + oObj.kill(newFolder); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'createFolder()'"); + ex.printStackTrace(log); + tRes.tested("createFolder()",false); + } + + } //EOF createFolder() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess.txt</b> + * file tested.<p> + * Has <b> OK </b> status if the method returns <code>17</code> + * and no exceptions were thrown. <p> + */ + public void _getSize() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + int fSize = oObj.getSize(filename); + tRes.tested("getSize()", fSize == 17 ); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'getSize()'"); + ex.printStackTrace(log); + tRes.tested("getSize()",false); + } + + } //EOF getSize() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess.txt</b> + * file tested.<p> + * Has <b> OK </b> status if the method returns String + * <code>'application/vnd.sun.staroffice.fsys-file'</code> + * and no exceptions were thrown. <p> + */ + public void _getContentType() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + String fType = oObj.getContentType(filename); + tRes.tested("getContentType()", + "application/vnd.sun.staroffice.fsys-file".equals(fType) ); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'getContentType()'"); + ex.printStackTrace(log); + tRes.tested("getContentType()",false); + } + + } //EOF getContentType() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess.txt</b> + * file tested.<p> + * Has <b> OK </b> status if the method returns date with + * 2001 year and no exceptions were thrown. <p> + */ + public void _getDateTimeModified() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + DateTime fTime = oObj.getDateTimeModified(filename); + + java.io.File the_file = new java.io.File(filename); + long lastModified = the_file.lastModified(); + java.util.Date lastMod = new java.util.Date(lastModified); + GregorianCalendar lastModCal = new GregorianCalendar(); + lastModCal.setTime(lastMod); + + //compare the dates gained by java with those gained by this method + boolean res = true; + boolean partResult = (fTime.Day == lastModCal.get(Calendar.DAY_OF_WEEK)); + if (!partResult) { + log.println("Wrong Day"); + log.println("Expected: "+lastModCal.get(Calendar.DAY_OF_WEEK)); + log.println("Gained: "+fTime.Day); + log.println("------------------------------"); + } + partResult = (fTime.Month == lastModCal.get(Calendar.MONTH)); + if (!partResult) { + log.println("Wrong Month"); + log.println("Expected: "+lastModCal.get(Calendar.MONTH)); + log.println("Gained: "+fTime.Month); + log.println("------------------------------"); + } + + partResult = (fTime.Year == (lastModCal.get(Calendar.MONTH) - 1900)); + if (!partResult) { + log.println("Wrong Year"); + log.println("Expected: "+(lastModCal.get(Calendar.MONTH) - 1900)); + log.println("Gained: "+fTime.Year); + log.println("------------------------------"); + } + + tRes.tested("getDateTimeModified()", res); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'getDateTimeModified()'"); + ex.printStackTrace(log); + tRes.tested("getDateTimeModified()",false); + } + + } //EOF getDateTimeModified() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess</b> + * directory used.<p> + * Has <b> OK </b> status if the method returns non zero length + * array and no exceptions were thrown. <p> + */ + public void _getFolderContents() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String[] cont = oObj.getFolderContents(dirname,false); + tRes.tested("getFolderContents()", cont.length>0); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'getFolderContents()'"); + ex.printStackTrace(log); + tRes.tested("getFolderContents()",false); + } + + } //EOF getFolderContents() + + /** + * First it check file <b>XSimpleFileAccess.txt</b> for + * existence, second file <b>I_do_not_exists.txt</b> is checked + * for existence. <p> + * Has <b> OK </b> status if in the first case method returns + * <code>true</code> and in the second - <code>flase</code> + * and no exceptions were thrown. <p> + */ + public void _exists() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + String wrongname = dirname+"I_do_not_exists.txt"; + tRes.tested("exists()", + oObj.exists(filename) && !oObj.exists(wrongname)); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'exists()'"); + ex.printStackTrace(log); + tRes.tested("exists()",false); + } + + } //EOF exists() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess.txt</b> + * file used.<p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value and no exceptions were thrown. <p> + */ + public void _openFileRead() { + try { + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + com.sun.star.io.XInputStream iStream = oObj.openFileRead(filename); + tRes.tested("openFileRead()", iStream != null); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'openFileRead()'"); + ex.printStackTrace(log); + tRes.tested("openFileRead()",false); + } + + } //EOF openFileRead() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess.txt</b> + * file used.<p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value and no exceptions were thrown. <p> + */ + public void _openFileWrite() { + try { + String tmpdirname = util.utils.getOfficeTemp(tParam.getMSF()) ; + + String copiedFile = tmpdirname+"XSimpleFileAccess_openWrite.txt"; + + if (oObj.exists(copiedFile)) + oObj.kill(copiedFile); + + com.sun.star.io.XOutputStream oStream = + oObj.openFileWrite(copiedFile); + + oStream.closeOutput(); + oObj.kill(copiedFile); + + tRes.tested("openFileWrite()", true); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'openFileWrite()'"); + ex.printStackTrace(log); + tRes.tested("openFileWrite()", false); + } + + } //EOF openFileWrite() + + /** + * Test calls the method and checks return value and that + * no exceptions were thrown. <b>XSimpleFileAccess2.txt</b> + * file used.<p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value and no exceptions were thrown. <p> + */ + public void _openFileReadWrite() { + try { + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String copiedFile = dirnameTo + "XSimpleFileAccess2.txt" ; + + if (oObj.exists(copiedFile)) + oObj.kill(copiedFile); + + com.sun.star.io.XStream aStream = + oObj.openFileReadWrite(copiedFile); + + aStream.getInputStream().closeInput(); + aStream.getOutputStream().closeOutput(); + + oObj.kill(copiedFile); + + tRes.tested("openFileReadWrite()", true); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'openFileReadWrite()'"); + ex.printStackTrace(log); + tRes.tested("openFileReadWrite()", false); + } + + } //EOF openFileReadWrite() + + /** + * Test calls the method and checks that no exceptions were thrown. + * Has <b> OK </b> status if no exceptions were thrown. <p> + */ + public void _setInteractionHandler() { + XInteractionHandler handler = null; + Object oHandler = tEnv.getObjRelation("InteractionHandler"); + + if (oHandler == null) + throw new StatusException + (Status.failed("Relation InteractionHandler not found")); + + try { + handler = UnoRuntime.queryInterface + (XInteractionHandler.class, oHandler); + oObj.setInteractionHandler(handler); + tRes.tested("setInteractionHandler()", true); + } catch (Exception ex) { + log.println("Exception occurred while testing 'setInteractionHandler()'"); + ex.printStackTrace(log); + tRes.tested("setInteractionHandler()", false); + } + + } //EOF setInteractionHandler() + +} // finish class _XSimpleFileAccess + diff --git a/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess2.java b/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess2.java new file mode 100644 index 000000000..6e1acd537 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XSimpleFileAccess2.java @@ -0,0 +1,70 @@ +/* + * 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.ucb; + +import lib.MultiMethodTest; + +import com.sun.star.io.XInputStream; +import com.sun.star.ucb.XSimpleFileAccess2; + +/** +* Testing <code>com.sun.star.ucb.XSimpleFileAccess2</code> +* interface methods. <p> +* @see com.sun.star.ucb.XSimpleFileAccess2 +*/ +public class _XSimpleFileAccess2 extends MultiMethodTest { + + public static XSimpleFileAccess2 oObj = null; + + /** + * Writes <b>XSimpleFileAccess_new.txt</b> to disk, checks + * if it was successfully created and then deletes it. <p> + * Has <b> OK </b> status if after method call the file + * exists and no exceptions were thrown. <p> + */ + public void _writeFile() { + boolean result = true; + try { + String dirnameTo = util.utils.getOfficeTemp(tParam.getMSF()) ; + String fileURL = dirnameTo + "XSimpleFileAccess_new.txt"; + String dirname = util.utils.getFullTestURL("XSimpleFileAccess"); + String filename = dirname+"XSimpleFileAccess.txt"; + XInputStream iStream = oObj.openFileRead(filename); + oObj.writeFile(fileURL,iStream); + util.utils.pause(1000); + result = oObj.exists(fileURL); + oObj.kill(fileURL); + tRes.tested("writeFile()",result); + } + catch (com.sun.star.ucb.CommandAbortedException ex) { + log.println("CommandAbortedException occurred while testing "+ + "'writeFile()'"); + ex.printStackTrace(log); + tRes.tested("writeFile()",false); + } + catch (com.sun.star.uno.Exception ex) { + log.println("Exception occurred while testing 'writeFile()'"); + ex.printStackTrace(log); + tRes.tested("writeFile()",false); + } + + } //EOF writeFile() + +} // finish class _XSimpleFileAccess + diff --git a/qadevOOo/tests/java/ifc/ucb/_XSortedDynamicResultSetFactory.java b/qadevOOo/tests/java/ifc/ucb/_XSortedDynamicResultSetFactory.java new file mode 100644 index 000000000..588a05129 --- /dev/null +++ b/qadevOOo/tests/java/ifc/ucb/_XSortedDynamicResultSetFactory.java @@ -0,0 +1,150 @@ +/* + * 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.ucb; + +import com.sun.star.beans.Property; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.sdbc.XResultSet; +import com.sun.star.ucb.Command; +import com.sun.star.ucb.NumberedSortingInfo; +import com.sun.star.ucb.OpenCommandArgument2; +import com.sun.star.ucb.OpenMode; +import com.sun.star.ucb.XCommandProcessor; +import com.sun.star.ucb.XContent; +import com.sun.star.ucb.XContentIdentifier; +import com.sun.star.ucb.XContentIdentifierFactory; +import com.sun.star.ucb.XContentProvider; +import com.sun.star.ucb.XDynamicResultSet; +import com.sun.star.ucb.XSortedDynamicResultSetFactory; +import com.sun.star.uno.UnoRuntime; +import lib.MultiMethodTest; + +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; + +/** +* Testing <code>com.sun.star.ucb.XSortedDynamicResultSetFactory</code> +* interface methods : +* <ul> +* <li><code> createSortedDynamicResultSet()</code></li> +* </ul> <p> +* The following predefined files needed to complete the test: +* <ul> +* <li> <code>solibrary.jar</code> : is used to retrieve +* content of its root directory.</li> +* <ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.ucb.XSortedDynamicResultSetFactory +*/ +public class _XSortedDynamicResultSetFactory extends MultiMethodTest { + + /** + * Contains the tested object. + */ + public XSortedDynamicResultSetFactory oObj; + + /** + * Creates sorted dynamic result set from result set. For this + * a dynamic result set is to be created. It is created by + * retrieving content list from JAR archive. + * Has <b>OK</b> status if numbers of rows are equal and they are + * greater than 0 (because JAR file contains at least one entry). + */ + public void _createSortedDynamicResultSet() { + boolean result = true ; + + XMultiServiceFactory xMSF = tParam.getMSF(); + XDynamicResultSet dynResSet = null ; + try { + Object oUCB = xMSF.createInstanceWithArguments + ("com.sun.star.ucb.UniversalContentBroker", + new Object[0]) ; + + XContentIdentifierFactory ciFac = UnoRuntime.queryInterface + (XContentIdentifierFactory.class,oUCB) ; + + String url = util.utils.getFullTestURL("SwXTextEmbeddedObject.sxw") ; + StringBuilder escUrl = new StringBuilder(); + + // In base URL of a JAR file in content URL all directory + // separators ('/') must be replaced with escape symbol '%2F'. + int idx = url.indexOf("/") ; + int lastIdx = -1 ; + while (idx >= 0) { + escUrl.append(url.substring(lastIdx + 1, idx)).append("%2F"); + lastIdx = idx ; + idx = url.indexOf("/", idx + 1) ; + } + escUrl.append(url.substring(lastIdx + 1)); + String cntUrl = "vnd.sun.star.pkg://" + escUrl.toString() + "/" ; + + XContentIdentifier CI = ciFac.createContentIdentifier(cntUrl) ; + + XContentProvider cntProv = UnoRuntime.queryInterface(XContentProvider.class, oUCB) ; + + XContent cnt = cntProv.queryContent(CI) ; + + XCommandProcessor cmdProc = UnoRuntime.queryInterface(XCommandProcessor.class, cnt) ; + + Property prop = new Property() ; + prop.Name = "Title" ; + + Command cmd = new Command("open", -1, new OpenCommandArgument2 + (OpenMode.ALL, 10000, null, new Property[] {prop}, + new NumberedSortingInfo[0])) ; + + dynResSet = (XDynamicResultSet) AnyConverter.toObject( + new Type(XDynamicResultSet.class),cmdProc.execute(cmd, 0, null)); + } catch (com.sun.star.uno.Exception e) { + e.printStackTrace(log); + } + + XDynamicResultSet sortedSet = oObj.createSortedDynamicResultSet + (dynResSet, new NumberedSortingInfo[0], null) ; + + int rowCount = -1 ; + if (sortedSet != null) { + XResultSet set = null ; + try { + set = sortedSet.getStaticResultSet() ; + } catch (com.sun.star.ucb.ListenerAlreadySetException e) { + e.printStackTrace(log); + } + + try { + set.last() ; + rowCount = set.getRow(); + log.println("Number of rows in result set: " + rowCount); + } catch (com.sun.star.sdbc.SQLException e) { + log.println("Exception occurred while accessing "+ + "sorted result set :"); + e.printStackTrace(log); + } + } else { + log.println("Null returned !!!"); + result &= false ; + } + + result &= rowCount > 1 ; + + tRes.tested("createSortedDynamicResultSet()", result) ; + } + + +} |