summaryrefslogtreecommitdiff
path: root/chart2/qa
diff options
context:
space:
mode:
authorBjörn Milcke <bm@openoffice.org>2003-10-06 08:58:36 +0000
committerBjörn Milcke <bm@openoffice.org>2003-10-06 08:58:36 +0000
commit668c6b0245b6076ac8fb3f5d734795117188675e (patch)
tree363512534f7fae13719bddccb3a365e48ef7a8d3 /chart2/qa
parent2ccbe3d78ecfa9aa1527db50d304a277d3cdbe64 (diff)
initial import
Diffstat (limited to 'chart2/qa')
-rw-r--r--chart2/qa/TestCaseOldAPI.java449
-rw-r--r--chart2/qa/data.chd14
-rw-r--r--chart2/qa/makefile.mk106
3 files changed, 569 insertions, 0 deletions
diff --git a/chart2/qa/TestCaseOldAPI.java b/chart2/qa/TestCaseOldAPI.java
new file mode 100644
index 000000000000..a796fadafcb9
--- /dev/null
+++ b/chart2/qa/TestCaseOldAPI.java
@@ -0,0 +1,449 @@
+// package name: as default, start with complex
+package qa;
+
+// imports
+import complexlib.ComplexTestCase;
+import com.sun.star.uno.XInterface;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.Type;
+import com.sun.star.uno.XComponentContext;
+
+import java.io.PrintWriter;
+import java.util.Hashtable;
+
+import com.sun.star.lang.*;
+import com.sun.star.beans.*;
+import com.sun.star.frame.*;
+import com.sun.star.chart.*;
+import com.sun.star.drawing.*;
+import com.sun.star.util.XCloseable;
+import com.sun.star.util.CloseVetoException;
+
+import drafts.com.sun.star.chart2.XTitled;
+import drafts.com.sun.star.chart2.XTitle;
+import drafts.com.sun.star.chart2.XDataProvider;
+import drafts.com.sun.star.chart2.XFormattedString;
+
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.comp.helper.ComponentContext;
+
+/**
+ * The following Complex Test will test the
+ * com.sun.star.document.IndexedPropertyValues
+ * service
+ */
+
+public class TestCaseOldAPI extends ComplexTestCase {
+
+ // The name of the tested service
+ private final String testedServiceName =
+ "com.sun.star.chart.ChartDocument";
+
+ // The first of the mandatory functions:
+ /**
+ * Return the name of the test.
+ * In this case it is the actual name of the service.
+ * @return The tested service.
+ */
+ public String getTestObjectName() {
+ return testedServiceName;
+ }
+
+ // The second of the mandatory functions: return all test methods as an
+ // array. There is only one test function in this example.
+ /**
+ * Return all test methods.
+ * @return The test methods.
+ */
+ public String[] getTestMethodNames() {
+ return new String[] {
+ "testTitle",
+ "testSubTitle",
+ "testDiagram",
+ "testAxis"
+ };
+ }
+
+ // ____________
+
+ public void before()
+ {
+ boolean bCreateView = false;
+
+ if( bCreateView )
+ mxChartModel = createDocument( "chart" );
+ else
+ mxChartModel = createChartModel();
+
+ createFileDataSource( mxChartModel );
+ mxOldDoc = (XChartDocument) UnoRuntime.queryInterface(
+ XChartDocument.class, mxChartModel );
+ }
+
+ // ____________
+
+ public void after_disabled()
+ {
+ XCloseable xCloseable = (XCloseable) UnoRuntime.queryInterface(
+ XCloseable.class, mxChartModel );
+ assure( "document is no XCloseable", xCloseable != null );
+
+ try
+ {
+ xCloseable.close( true );
+ }
+ catch( CloseVetoException ex )
+ {
+ failed( ex.getMessage() );
+ ex.printStackTrace( (PrintWriter)log );
+ }
+ }
+
+ // ____________
+
+ public void testTitle()
+ {
+ try
+ {
+ // set title at new chart
+ XTitled xTitled = (XTitled) UnoRuntime.queryInterface(
+ XTitled.class, mxChartModel );
+
+ // set title via new API
+ XTitle xTitle = setTitle( xTitled, "Sample", "@main-title" );
+
+// printInterfacesAndServices( xTitle );
+
+ // get title via old API
+ XShape xTitleShape = mxOldDoc.getTitle();
+ XPropertySet xTitleProp = (XPropertySet) UnoRuntime.queryInterface(
+ XPropertySet.class, xTitleShape );
+
+ // set property via old API
+ if( xTitleProp != null )
+ {
+ String aTitle = " Overwritten by Old API ";
+ float fHeight = (float)17.0;
+
+ xTitleProp.setPropertyValue( "String", aTitle );
+ xTitleProp.setPropertyValue( "CharHeight", new Float( fHeight ) );
+
+ float fNewHeight = AnyConverter.toFloat( xTitleProp.getPropertyValue( "CharHeight" ) );
+ assure( "Changing CharHeight via old API failed", fNewHeight == fHeight );
+
+ String aNewTitle = AnyConverter.toString( xTitleProp.getPropertyValue( "String" ) );
+ assure( "Property \"String\" failed", aNewTitle.equals( aTitle ));
+ }
+ }
+ catch( Exception ex )
+ {
+ failed( ex.getMessage() );
+ ex.printStackTrace( (PrintWriter)log );
+ }
+ }
+
+ // ____________
+
+ public void testSubTitle()
+ {
+ try
+ {
+ // trying back-querying (from old Wrapper to new Model)
+ drafts.com.sun.star.chart2.XChartDocument xNewDoc =
+ (drafts.com.sun.star.chart2.XChartDocument) UnoRuntime.queryInterface(
+ drafts.com.sun.star.chart2.XChartDocument.class,
+ mxOldDoc );
+
+ // set title at new chart
+ XTitled xTitled = (XTitled) UnoRuntime.queryInterface(
+ XTitled.class, xNewDoc.getDiagram() );
+
+ // set title via new API
+ setTitle( xTitled, "Sub", "@sub-title" );
+
+ // get Property via old API
+ XShape xTitleShape = mxOldDoc.getSubTitle();
+ XPropertySet xTitleProp = (XPropertySet) UnoRuntime.queryInterface(
+ XPropertySet.class, xTitleShape );
+
+ // set Property via old API
+ if( xTitleProp != null )
+ {
+ int nColor = 0x009acd; // DeepSkyBlue3
+ float fWeight = com.sun.star.awt.FontWeight.BOLD;
+
+ xTitleProp.setPropertyValue( "CharColor", new Integer( nColor ) );
+ xTitleProp.setPropertyValue( "CharWeight", new Float( fWeight ));
+
+ int nNewColor = AnyConverter.toInt( xTitleProp.getPropertyValue( "CharColor" ) );
+ assure( "Changing CharColor via old API failed", nNewColor == nColor );
+
+ float fNewWeight = AnyConverter.toFloat( xTitleProp.getPropertyValue( "CharWeight" ) );
+ assure( "Changing CharWeight via old API failed", fNewWeight == fWeight );
+ }
+ }
+ catch( Exception ex )
+ {
+ failed( ex.getMessage() );
+ ex.printStackTrace( (PrintWriter)log );
+ }
+ }
+
+ // ------------
+
+ public void testDiagram()
+ {
+ try
+ {
+ // testing wall
+ XDiagram xDia = mxOldDoc.getDiagram();
+ if( xDia != null )
+ {
+ X3DDisplay xDisp = (X3DDisplay) UnoRuntime.queryInterface(
+ X3DDisplay.class, xDia );
+ assure( "X3DDisplay not supported", xDisp != null );
+
+ XPropertySet xProp = xDisp.getWall();
+ if( xProp != null )
+ {
+ log.println( "Testing wall" );
+
+ int nColor = 0xffe1ff; // thistle1
+
+ xProp.setPropertyValue( "FillColor", new Integer( nColor ) );
+
+ int nNewColor = AnyConverter.toInt( xProp.getPropertyValue( "FillColor" ) );
+ assure( "Changing FillColor via old API failed", nNewColor == nColor );
+ }
+
+ assure( "Wrong Diagram Type", xDia.getDiagramType().equals(
+ "com.sun.star.chart.BarDiagram" ));
+ }
+ }
+ catch( Exception ex )
+ {
+ failed( ex.getMessage() );
+ ex.printStackTrace( (PrintWriter)log );
+ }
+ }
+
+ // ------------
+
+ public void testAxis()
+ {
+ try
+ {
+ XAxisYSupplier xYAxisSuppl = (XAxisYSupplier) UnoRuntime.queryInterface(
+ XAxisYSupplier.class, mxOldDoc.getDiagram() );
+ assure( "Diagram is no y-axis supplier", xYAxisSuppl != null );
+
+ XPropertySet xProp = xYAxisSuppl.getYAxis();
+ assure( "No y-axis found", xProp != null );
+
+ double nNewMax = 12.3;
+
+ xProp.setPropertyValue( "Max", new Double( nNewMax ));
+ assure( "AutoMax is on", ! AnyConverter.toBoolean( xProp.getPropertyValue( "AutoMax" )) );
+
+ assure( "Maximum value invalid",
+ approxEqual(
+ AnyConverter.toDouble( xProp.getPropertyValue( "Max" )),
+ nNewMax ));
+
+ xProp.setPropertyValue( "AutoMin", new Boolean( true ));
+ assure( "AutoMin is off", AnyConverter.toBoolean( xProp.getPropertyValue( "AutoMin" )) );
+
+ // missing: Min/Max, etc. is not always returning a double
+// Object oMin = xProp.getPropertyValue( "Min" );
+// assure( "No Minimum set", AnyConverter.isDouble( oMin ));
+// log.println( "Minimum retrieved: " + AnyConverter.toDouble( oMin ));
+ }
+ catch( Exception ex )
+ {
+ failed( ex.getMessage() );
+ ex.printStackTrace( (PrintWriter)log );
+ }
+ }
+
+ // ================================================================================
+
+ private XModel mxChartModel;
+ private XChartDocument mxOldDoc;
+
+ // --------------------------------------------------------------------------------
+
+ private void createFileDataSource( XModel xModel )
+ {
+ XMultiServiceFactory xFactory = (XMultiServiceFactory) param.getMSF();
+
+ try
+ {
+ XDataProvider xDataProv = (XDataProvider) UnoRuntime.queryInterface(
+ XDataProvider.class,
+ xFactory.createInstance( "com.sun.star.comp.chart.FileDataProvider" ));
+
+ drafts.com.sun.star.chart2.XChartDocument xDoc =
+ (drafts.com.sun.star.chart2.XChartDocument) UnoRuntime.queryInterface(
+ drafts.com.sun.star.chart2.XChartDocument.class,
+ xModel );
+
+ if( xDataProv != null &&
+ xDoc != null )
+ {
+ xDoc.attachDataProvider( xDataProv );
+ String aURL = "file://" + System.getProperty( "user.dir" ) +
+ System.getProperty( "file.separator" ) + "data.chd";
+ log.println( aURL );
+ xDoc.setRangeRepresentation( aURL );
+ }
+ }
+ catch( Exception ex )
+ {
+ failed( ex.getMessage() );
+ ex.printStackTrace( (PrintWriter)log );
+ }
+ }
+
+ // ------------
+
+ private XModel createDocument( String sDocType )
+ {
+ XModel aResult = null;
+ try
+ {
+ XComponentLoader aLoader = (XComponentLoader) UnoRuntime.queryInterface(
+ XComponentLoader.class,
+ ((XMultiServiceFactory)param.getMSF()).createInstance( "com.sun.star.frame.Desktop" ) );
+
+ aResult = (XModel) UnoRuntime.queryInterface(
+ XModel.class,
+ aLoader.loadComponentFromURL( "private:factory/" + sDocType,
+ "_blank",
+ 0,
+ new PropertyValue[ 0 ] ) );
+ }
+ catch( Exception ex )
+ {
+ failed( ex.getMessage() );
+ ex.printStackTrace( (PrintWriter)log );
+ }
+
+ return aResult;
+ }
+
+ // ------------
+
+ public XModel createChartModel()
+ {
+ XModel aResult = null;
+ try
+ {
+ aResult = (XModel) UnoRuntime.queryInterface(
+ XModel.class,
+ ((XMultiServiceFactory)param.getMSF()).createInstance( "com.sun.star.comp.chart2.ChartModel" ) );
+ }
+ catch( Exception ex )
+ {
+ failed( ex.getMessage() );
+ ex.printStackTrace( (PrintWriter)log );
+ }
+
+ return aResult;
+ }
+
+ // ------------
+
+ private XTitle setTitle( XTitled xTitleParent, String aTitle, String aId )
+ {
+ XTitle xTitle = null;
+
+ if( xTitleParent != null )
+ try
+ {
+ XMultiServiceFactory xFact = (XMultiServiceFactory)param.getMSF();
+ XMultiComponentFactory xCompFact = (XMultiComponentFactory) UnoRuntime.queryInterface(
+ XMultiComponentFactory.class, xFact );
+
+ XFormattedString[] aStrings = new XFormattedString[ 2 ];
+ aStrings[0] = (XFormattedString) UnoRuntime.queryInterface(
+ XFormattedString.class,
+ xFact.createInstance(
+ "drafts.com.sun.star.chart2.FormattedString" ));
+ aStrings[1] = (XFormattedString) UnoRuntime.queryInterface(
+ XFormattedString.class,
+ xFact.createInstance(
+ "drafts.com.sun.star.chart2.FormattedString" ));
+ aStrings[0].setString( aTitle );
+ aStrings[1].setString( " Title" );
+
+ Hashtable aParams = new Hashtable();
+ aParams.put( "Identifier", aId );
+
+ xTitle = (XTitle) UnoRuntime.queryInterface(
+ XTitle.class,
+ xCompFact.createInstanceWithContext(
+ "drafts.com.sun.star.chart2.Title",
+ new ComponentContext( aParams, getComponentContext( xFact ) )));
+
+ xTitle.setText( aStrings );
+ XPropertySet xTitleProp = (XPropertySet) UnoRuntime.queryInterface(
+ XPropertySet.class, xTitle );
+ xTitleProp.setPropertyValue( "FillColor", new Integer( 0xfff8dc )); // cornsilk1
+ xTitleParent.setTitle( xTitle );
+ }
+ catch( Exception ex )
+ {
+ failed( ex.getMessage() );
+ ex.printStackTrace( (PrintWriter)log );
+ }
+
+ return xTitle;
+ }
+
+ // ------------
+
+ private XComponentContext getComponentContext( XMultiServiceFactory xFact )
+ {
+ XComponentContext xResult = null;
+
+ XPropertySet xProp = (XPropertySet) UnoRuntime.queryInterface(
+ XPropertySet.class, xFact );
+ if( xProp != null )
+ try
+ {
+ xResult = (XComponentContext)
+ AnyConverter.toObject(
+ new Type( XComponentContext.class ),
+ xProp.getPropertyValue( "DefaultContext" ) );
+ }
+ catch( Exception ex )
+ {
+ failed( ex.getMessage() );
+ ex.printStackTrace( (PrintWriter)log );
+ }
+
+ return xResult;
+ }
+
+ // ------------
+
+ private void printInterfacesAndServices( Object oObj )
+ {
+ log.println( "Services:" );
+ util.dbg.getSuppServices( oObj );
+ log.println( "Interfaces:" );
+ util.dbg.printInterfaces( (XInterface)oObj, true );
+ }
+
+ // ------------
+
+ /// see rtl/math.hxx
+ private boolean approxEqual( double a, double b )
+ {
+ if( a == b )
+ return true;
+ double x = a - b;
+ return (x < 0.0 ? -x : x)
+ < ((a < 0.0 ? -a : a) * (1.0 / (16777216.0 * 16777216.0)));
+ }
+}
diff --git a/chart2/qa/data.chd b/chart2/qa/data.chd
new file mode 100644
index 000000000000..01888e4c19ff
--- /dev/null
+++ b/chart2/qa/data.chd
@@ -0,0 +1,14 @@
+# Series Labels
+Column_1 Column_2 Column_3
+
+# Categories
+Row_1 Row_2 Row_3 Row_4
+
+# Column 1
+9.1 2.4 3.1 4.3
+
+# Column 2
+3.2 8.8 1.5 9.02
+
+# Column 3
+4.54 9.65 3.7 6.2
diff --git a/chart2/qa/makefile.mk b/chart2/qa/makefile.mk
new file mode 100644
index 000000000000..f15621fa683f
--- /dev/null
+++ b/chart2/qa/makefile.mk
@@ -0,0 +1,106 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: bm $ $Date: 2003-10-06 09:58: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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJNAME = chart2
+PRJ = ..
+TARGET = chart_qa
+
+PACKAGE = qa
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+MAXLINELENGTH = 100000
+
+# - rdb ----
+
+RDB = $(BIN)$/$(PRJNAME).rdb
+EXTRA_RDB = $(SOLARBINDIR)$/types.rdb
+JAVADIR = $(OUT)$/misc$/java
+JARFILES = sandbox.jar ridl.jar
+
+# --- Files --------------------------------------------------------
+
+JAVACLASSFILES = \
+ $(CLASSDIR)$/$(PACKAGE)$/TestCaseOldAPI.class
+
+JARFILES = sandbox.jar ridl.jar jurt.jar unoil.jar juh.jar OOoRunner.jar
+JAVAFILES = $(subst,$(CLASSDIR)$/$(PACKAGE)$/, $(subst,.class,.java $(JAVACLASSFILES)))
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+# --- Dependencies -------------------------------------------------
+
+# Note: define dependencies after including target.mk (otherwise no targets are
+# defined)
+
+ALLTAR: runtest
+
+# --- Rules --------------------------------------------------------
+
+runtest: $(subst,.class,.run $(JAVACLASSFILES))
+
+%.run: %.class
+ java -classpath $(CLASSPATH) org.openoffice.Runner -TestBase java_complex -o $(subst,$(CLASSDIR)$/$(PACKAGE)$/,$(PACKAGE). $(subst,.class, $<))