diff options
author | Björn Milcke <bm@openoffice.org> | 2003-10-06 08:58:36 +0000 |
---|---|---|
committer | Björn Milcke <bm@openoffice.org> | 2003-10-06 08:58:36 +0000 |
commit | 668c6b0245b6076ac8fb3f5d734795117188675e (patch) | |
tree | 363512534f7fae13719bddccb3a365e48ef7a8d3 /chart2/qa | |
parent | 2ccbe3d78ecfa9aa1527db50d304a277d3cdbe64 (diff) |
initial import
Diffstat (limited to 'chart2/qa')
-rw-r--r-- | chart2/qa/TestCaseOldAPI.java | 449 | ||||
-rw-r--r-- | chart2/qa/data.chd | 14 | ||||
-rw-r--r-- | chart2/qa/makefile.mk | 106 |
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, $<)) |