summaryrefslogtreecommitdiff
path: root/ucb/qa
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2004-11-09 12:47:23 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2004-11-09 12:47:23 +0000
commite7ae0941207b0c8d27c80162127b25d90788a112 (patch)
tree56f06d175f13cd9a70be26c854540dd6740fc02e /ucb/qa
parent15005ce83405a2a189ada48813d801eacb586d1e (diff)
INTEGRATION: CWS jl13 (1.1.2); FILE ADDED
2004/10/21 09:23:45 sg 1.1.2.1: #116217#NEW: initial version
Diffstat (limited to 'ucb/qa')
-rwxr-xr-xucb/qa/complex/tdoc/CheckContentProvider.java431
1 files changed, 431 insertions, 0 deletions
diff --git a/ucb/qa/complex/tdoc/CheckContentProvider.java b/ucb/qa/complex/tdoc/CheckContentProvider.java
new file mode 100755
index 000000000000..f5cbceea5ec3
--- /dev/null
+++ b/ucb/qa/complex/tdoc/CheckContentProvider.java
@@ -0,0 +1,431 @@
+/*************************************************************************
+ *
+ * $RCSfile: CheckContentProvider.java,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Date: 2004-11-09 13:47:23 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+package complex.tdoc;
+
+import com.sun.star.beans.XPropertiesChangeNotifier;
+import com.sun.star.beans.XPropertyContainer;
+import com.sun.star.beans.XPropertySetInfoChangeNotifier;
+import com.sun.star.container.XChild;
+import com.sun.star.lang.XComponent;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lang.XTypeProvider;
+import com.sun.star.text.XTextDocument;
+import com.sun.star.ucb.XCommandInfoChangeNotifier;
+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.uno.UnoRuntime;
+import complexlib.ComplexTestCase;
+import complex.tdoc.interfaces._XChild;
+import complex.tdoc.interfaces._XCommandInfoChangeNotifier;
+import complex.tdoc.interfaces._XComponent;
+import complex.tdoc.interfaces._XServiceInfo;
+import complex.tdoc.interfaces._XTypeProvider;
+import complex.tdoc.interfaces._XCommandProcessor;
+import complex.tdoc.interfaces._XContent;
+import complex.tdoc.interfaces._XPropertiesChangeNotifier;
+import complex.tdoc.interfaces._XPropertyContainer;
+import complex.tdoc.interfaces._XPropertySetInfoChangeNotifier;
+import lib.TestEnvironment;
+import util.WriterTools;
+import util.utils;
+
+/**
+ * Check the TransientDocumentsContentProvider (TDOC). Three documents are
+ * loaded. Then every possible TDCP content type is instantiated and its
+ * interfaces are tested.<br>
+ * Important: opened documents are numbered in the order they are opened and
+ * numbers are not reused. This test will work only, if you start a new office
+ * with an accept parameter (writer is initially opened). Otherwise loaded
+ * documents are not found.
+ */
+public class CheckContentProvider extends ComplexTestCase {
+ private final String testDocuments[] = new String[]{"filter.sxw", "chinese.sxw", "Iterator.sxw"};
+ private final int countDocs = testDocuments.length;
+ private XMultiServiceFactory xMSF = null;
+ private XTextDocument[] xTextDoc = null;
+ private XContent xContent = null;
+
+ /**
+ * The test methods: the test methods have to be executed in a specified
+ * order. This order is:
+ * <ol>
+ * <li>"checkTDOCRoot"</li>
+ * <li>"checkTDOCRootInterfaces"</li>
+ * <li>"checkTDOCDocument"</li>
+ * <li>"checkTDOCDocumentInterfaces"</li>
+ * <li>"checkTDOCFolder"</li>
+ * <li>"checkTDOCFolderInterfaces"</li>
+ * <li>"checkTDOCStream"</li>
+ * <li>"checkTDOCStreamInterfaces"</li>
+ * </ol>
+ * Important is, that the test of the element comes first, then the test of
+ * its interfaces.
+ **/
+ public String[] getTestMethodNames() {
+ return new String[]{"checkTDOCRoot",
+ "checkTDOCRootInterfaces",
+ "checkTDOCDocument",
+ "checkTDOCDocumentInterfaces",
+ "checkTDOCFolder",
+ "checkTDOCFolderInterfaces",
+ "checkTDOCStream",
+ "checkTDOCStreamInterfaces",
+ };
+ }
+
+ /**
+ * Open some documents before the test
+ */
+ public void before() {
+ xMSF = (XMultiServiceFactory)param.getMSF();
+ xTextDoc = new XTextDocument[countDocs];
+ log.println("Open some new documents.");
+ for (int i=0; i<countDocs; i++) {
+ String fileName = utils.getFullTestURL(testDocuments[i]);
+ xTextDoc[i] = WriterTools.loadTextDoc(xMSF, fileName);
+ }
+ }
+
+ /**
+ * Close the documents
+ */
+ public void after() {
+ log.println("Close all documents.");
+ for (int i=0; i<countDocs; i++) {
+ xTextDoc[i].dispose();
+ }
+ }
+
+ /**
+ * Check the tdcp root.
+ */
+ public void checkTDOCRoot() {
+ try {
+ // create a content provider
+ Object o = xMSF.createInstance("com.sun.star.comp.ucb.TransientDocumentsContentProvider");
+ XContentProvider xContentProvider =
+ (XContentProvider)UnoRuntime.queryInterface(XContentProvider.class, o);
+
+ // create the ucb
+ XContentIdentifierFactory xContentIdentifierFactory =
+ (XContentIdentifierFactory)UnoRuntime.queryInterface(
+ XContentIdentifierFactory.class, xMSF.createInstance(
+ "com.sun.star.ucb.UniversalContentBroker"));
+ // create a content identifier from the ucb for tdoc
+ XContentIdentifier xContentIdentifier =
+ xContentIdentifierFactory.createContentIdentifier("vnd.sun.star.tdoc:/");
+ // get content
+ xContent = xContentProvider.queryContent(xContentIdentifier);
+
+ String content = xContent.getContentType();
+ log.println("#### Content root: " + content);
+
+ // try to get some documents: should be "countDocs" at least.
+ XContentIdentifier[] xContentId = new XContentIdentifier[countDocs+5];
+ XContent[] xCont = new XContent[countDocs+5];
+
+ for (int i=0; i<countDocs+5; i++) {
+ xContentId[i] = xContentIdentifierFactory.createContentIdentifier("vnd.sun.star.tdoc:/" + i);
+ // get content
+ xCont[i] = xContentProvider.queryContent(xContentId[i]);
+ int returnVal = xContentProvider.compareContentIds(xContentId[i], xContentIdentifier);
+ String cont = null;
+ if (xCont[i] != null)
+ cont = xCont[i].getContentType();
+ log.println("Document Content " + i + ": " + cont + " compare with root: " + returnVal);
+
+ xContentId[i] = xContentIdentifierFactory.createContentIdentifier("vnd.sun.star.tdoc:/" + i + "/content.xml");
+ // get content
+ xCont[i] = xContentProvider.queryContent(xContentId[i]);
+ cont = null;
+ if (xCont[i] != null)
+ cont = xCont[i].getContentType();
+ log.println("\tContent.xml Content " + i + ": " + cont);
+ }
+
+ util.dbg.printInterfaces(xContent);
+ }
+ catch(Exception e) {
+ e.printStackTrace((java.io.PrintWriter)log);
+ failed("Unexpected Exception: " + e.getMessage());
+ }
+ }
+
+ /**
+ * Check the interfaces of the root.
+ */
+ public void checkTDOCRootInterfaces() {
+ checkInterfaces(false);
+ }
+
+ /**
+ * Check the tdcp document: document 3 is used.
+ */
+ public void checkTDOCDocument() {
+ try {
+ xContent = null;
+ Object o = xMSF.createInstance("com.sun.star.comp.ucb.TransientDocumentsContentProvider");
+ XContentProvider xContentProvider =
+ (XContentProvider)UnoRuntime.queryInterface(XContentProvider.class, o);
+ // create the ucb
+ XContentIdentifierFactory xContentIdentifierFactory =
+ (XContentIdentifierFactory)UnoRuntime.queryInterface(
+ XContentIdentifierFactory.class, xMSF.createInstance(
+ "com.sun.star.ucb.UniversalContentBroker"));
+ // create a content identifier from the ucb for tdoc
+ XContentIdentifier xContentIdentifier =
+ xContentIdentifierFactory.createContentIdentifier("vnd.sun.star.tdoc:/3");
+ // get content
+ xContent = xContentProvider.queryContent(xContentIdentifier);
+
+ String content = xContent.getContentType();
+ log.println("#### Document root: " + content);
+ }
+ catch(Exception e) {
+ e.printStackTrace((java.io.PrintWriter)log);
+ failed("Unexpected Exception: " + e.getMessage());
+ }
+ }
+
+ /**
+ * Check the interfaces on the document.
+ */
+ public void checkTDOCDocumentInterfaces() {
+ checkInterfaces(true);
+ }
+
+ /**
+ * Check a folder on document 2 (document 2 contains an embedded picture and
+ * therefore contans a subfolder "Pictures"
+ */
+ public void checkTDOCFolder() {
+ try {
+ xContent = null;
+ Object o = xMSF.createInstance("com.sun.star.comp.ucb.TransientDocumentsContentProvider");
+ XContentProvider xContentProvider =
+ (XContentProvider)UnoRuntime.queryInterface(XContentProvider.class, o);
+ // create the ucb
+ XContentIdentifierFactory xContentIdentifierFactory =
+ (XContentIdentifierFactory)UnoRuntime.queryInterface(
+ XContentIdentifierFactory.class, xMSF.createInstance(
+ "com.sun.star.ucb.UniversalContentBroker"));
+ // create a content identifier from the ucb for tdoc
+ XContentIdentifier xContentIdentifier =
+ xContentIdentifierFactory.createContentIdentifier("vnd.sun.star.tdoc:/2/Pictures");
+ // get content
+ xContent = xContentProvider.queryContent(xContentIdentifier);
+
+ String content = xContent.getContentType();
+ log.println("#### Folder type: " + content);
+ }
+ catch(Exception e) {
+ e.printStackTrace((java.io.PrintWriter)log);
+ failed("Unexpected Exception: " + e.getMessage());
+ }
+ }
+
+ /**
+ * Check the interfaces on the folder.
+ */
+ public void checkTDOCFolderInterfaces() {
+ checkInterfaces(true);
+ }
+
+ /**
+ * Open a stream to the embedded picture of document 2.
+ */
+ public void checkTDOCStream() {
+ try {
+ xContent = null;
+ Object o = xMSF.createInstance("com.sun.star.comp.ucb.TransientDocumentsContentProvider");
+ XContentProvider xContentProvider =
+ (XContentProvider)UnoRuntime.queryInterface(XContentProvider.class, o);
+
+ // create the ucb
+ XContentIdentifierFactory xContentIdentifierFactory =
+ (XContentIdentifierFactory)UnoRuntime.queryInterface(
+ XContentIdentifierFactory.class, xMSF.createInstance(
+ "com.sun.star.ucb.UniversalContentBroker"));
+ // create a content identifier from the ucb for tdoc
+ XContentIdentifier xContentIdentifier =
+ xContentIdentifierFactory.createContentIdentifier("vnd.sun.star.tdoc:/2/Pictures/10000000000000640000004B9C743800.gif");
+ // get content
+ xContent = xContentProvider.queryContent(xContentIdentifier);
+
+ String content = xContent.getContentType();
+ log.println("#### Folder type: " + content);
+ }
+ catch(Exception e) {
+ e.printStackTrace((java.io.PrintWriter)log);
+ failed("Unexpected Exception: " + e.getMessage());
+ }
+ }
+
+ /**
+ * Check the interfaces on the stream.
+ */
+ public void checkTDOCStreamInterfaces() {
+ checkInterfaces(true);
+ }
+
+ /**
+ * Since all tdcp content types implement (nearly) the same interfaces, they
+ * are called here.
+ * Executed interface tests are (in this order):
+ * <ol>
+ * <li>XTypeProvider</li>
+ * <li>XServiceInfo</li>
+ * <li>XCommandProcessor</li>
+ * <li>XChild</li>
+ * <li>XPropertiesChangeNotifier</li>
+ * <li>XPropertySetInfoChangeNotifier</li>
+ * <li>XCommandInfoChangeNotifier</li>
+ * <li>XContent</li>
+ * <li>XPropertyContainer</li>
+ * <li>XComponent</li>
+ * </ol>
+ * @param hasParent True, if the tested content type does have a parent:
+ * only the root has not. Used in the XChild interface test.
+ */
+ private void checkInterfaces(boolean hasParent) {
+ // check the XTypeProvider interface
+ _XTypeProvider xTypeProvider = new _XTypeProvider();
+ xTypeProvider.oObj = (XTypeProvider)UnoRuntime.queryInterface(XTypeProvider.class, xContent);
+ xTypeProvider.log = log;
+ assure("getImplementationId()", xTypeProvider._getImplementationId());
+ assure("getTypes()", xTypeProvider._getTypes());
+
+ // check the XSewrviceInfo interface
+ _XServiceInfo xServiceInfo = new _XServiceInfo();
+ xServiceInfo.oObj = (XServiceInfo)UnoRuntime.queryInterface(XServiceInfo.class, xContent);
+ xServiceInfo.log = log;
+ assure("getImplementationName()", xServiceInfo._getImplementationName());
+ assure("getSupportedServiceNames()", xServiceInfo._getSupportedServiceNames());
+ assure("supportsService()", xServiceInfo._supportsService());
+
+ // check the XCommandProcessor interface
+ _XCommandProcessor xCommandProcessor = new _XCommandProcessor();
+ xCommandProcessor.oObj = (XCommandProcessor)UnoRuntime.queryInterface(XCommandProcessor.class, xContent);
+ xCommandProcessor.log = log;
+ xCommandProcessor.before((XMultiServiceFactory)param.getMSF());
+ assure("createCommandIdentifier()", xCommandProcessor._createCommandIdentifier());
+ assure("execute()", xCommandProcessor._execute());
+ assure("abort()", xCommandProcessor._abort());
+
+ // check the XChild interface
+ _XChild xChild = new _XChild();
+ xChild.oObj = (XChild)UnoRuntime.queryInterface(XChild.class, xContent);
+ xChild.log = log;
+ // hasParent dermines, if this content has a parent
+ assure("getParent()", xChild._getParent(hasParent));
+ // parameter does dermine, if this funczion is supported: generally not supported with tdcp content
+ assure("setParent()", xChild._setParent(false));
+
+ // check the XPropertyChangeNotifier interface
+ _XPropertiesChangeNotifier xPropChange = new _XPropertiesChangeNotifier();
+ xPropChange.oObj = (XPropertiesChangeNotifier)UnoRuntime.queryInterface(XPropertiesChangeNotifier.class, xContent);
+ xPropChange.log = log;
+ assure("addPropertiesChangeListener()", xPropChange._addPropertiesChangeListener());
+ assure("removePropertiesChangeListener()", xPropChange._removePropertiesChangeListener());
+
+ // check the XPropertySetInfoChangeNotifier interface
+ _XPropertySetInfoChangeNotifier xPropSetInfo = new _XPropertySetInfoChangeNotifier();
+ xPropSetInfo.oObj = (XPropertySetInfoChangeNotifier)UnoRuntime.queryInterface(XPropertySetInfoChangeNotifier.class, xContent);
+ xPropSetInfo.log = log;
+ assure("addPropertiesChangeListener()", xPropSetInfo._addPropertiesChangeListener());
+ assure("removePropertiesChangeListener()", xPropSetInfo._removePropertiesChangeListener());
+
+ // check the XCommandInfoChangeNotifier interface
+ _XCommandInfoChangeNotifier xCommandChange = new _XCommandInfoChangeNotifier();
+ xCommandChange.oObj = (XCommandInfoChangeNotifier)UnoRuntime.queryInterface(XCommandInfoChangeNotifier.class, xContent);
+ xCommandChange.log = log;
+ assure("addCommandInfoChangeListener()", xCommandChange._addCommandInfoChangeListener());
+ assure("removeCommandInfoChangeListener()", xCommandChange._removeCommandInfoChangeListener());
+
+ // check the XContent interface
+ _XContent xCont = new _XContent();
+ xCont.oObj = (XContent)UnoRuntime.queryInterface(XContent.class, xContent);
+ xCont.log = log;
+ assure("addContentEventListener()", xCont._addContentEventListener());
+ assure("getContentType()", xCont._getContentType());
+ assure("getIdentifier()", xCont._getIdentifier());
+ assure("removeContentEventListener()", xCont._removeContentEventListener());
+
+ // check the XPropertyContainer interface
+ _XPropertyContainer xPropCont = new _XPropertyContainer();
+ xPropCont.oObj = (XPropertyContainer)UnoRuntime.queryInterface(XPropertyContainer.class, xContent);
+ xPropCont.log = log;
+ assure("addProperty()", xPropCont._addProperty());
+ assure("removeProperty()", xPropCont._removeProperty());
+
+ // check the XComponent interface
+ _XComponent xComponent = new _XComponent();
+ xComponent.oObj = (XComponent)UnoRuntime.queryInterface(XComponent.class, xContent);
+ xComponent.log = log;
+ assure("addEventListener()", xComponent._addEventListener());
+ assure("removeEventListener()", xComponent._removeEventListener());
+// assure("dispose()", xComponent._dispose());
+ }
+}