diff options
author | Vladimir Glazounov <vg@openoffice.org> | 2007-05-22 16:13:33 +0000 |
---|---|---|
committer | Vladimir Glazounov <vg@openoffice.org> | 2007-05-22 16:13:33 +0000 |
commit | 4155d0bf07792387ee585a1f4f7bd594dd8d47fc (patch) | |
tree | 8314d3ed0bf35b06837d32544f8cd0a8a93fda6a /chart2/qa | |
parent | 563b8056c6f57b9c587d38e90cae4c9fbd2688fc (diff) |
INTEGRATION: CWS chart2mst3 (1.14.4); FILE MERGED
2006/02/21 11:03:31 bm 1.14.4.17: test UserDefinedAttributes by inserting a value (requires fixed default value)
2006/02/20 17:18:42 bm 1.14.4.16: test existence of UserDefinedAttributes in ChartArea
2005/08/18 14:27:18 bm 1.14.4.15: testData and testStockProperties corrected
2005/08/04 16:14:12 bm 1.14.4.14: adapted gradient and hatch test (using names), avoid some test that need a view due to problems, stock volume adapted, min-max line added
2005/07/12 12:56:51 bm 1.14.4.13: use named properties for gradients etc. in chart model
2005/07/05 15:23:54 bm 1.14.4.12: oops, wrong assure test
2005/07/05 14:56:53 bm 1.14.4.11: remove usage of new chart API in this test
2005/07/05 14:04:44 bm 1.14.4.10: testData: test correct retrieval, data row source disabled
2005/07/04 17:11:33 iha 1.14.4.9: removed deprecated file data provider
2005/07/04 17:04:40 iha 1.14.4.8: stock properties
2005/05/26 11:23:55 bm 1.14.4.7: some interfaces moved to data sub-namespace
2004/04/27 13:20:31 bm 1.14.4.6: axis title test
2004/04/27 09:29:11 bm 1.14.4.5: testing secondary y-axis
+approxEqual for integers
2004/04/26 18:59:30 iha 1.14.4.4: #i27367# added test move legend and diagram; size diagram
2004/04/01 10:46:18 bm 1.14.4.3: some chart type properties
2004/03/24 09:39:23 bm 1.14.4.2: test for XChartDataArray
2004/02/13 16:51:11 bm 1.14.4.1: join from changes on branch bm_post_chart01
Diffstat (limited to 'chart2/qa')
-rw-r--r-- | chart2/qa/TestCaseOldAPI.java | 584 |
1 files changed, 457 insertions, 127 deletions
diff --git a/chart2/qa/TestCaseOldAPI.java b/chart2/qa/TestCaseOldAPI.java index fff0d55d891b..d70086c126ef 100644 --- a/chart2/qa/TestCaseOldAPI.java +++ b/chart2/qa/TestCaseOldAPI.java @@ -17,16 +17,10 @@ import com.sun.star.frame.*; import com.sun.star.chart.*; import com.sun.star.drawing.*; import com.sun.star.awt.*; +import com.sun.star.container.*; import com.sun.star.util.XCloseable; import com.sun.star.util.CloseVetoException; -import com.sun.star.chart2.XTitled; -import com.sun.star.chart2.XTitle; -import com.sun.star.chart2.XDataProvider; -import com.sun.star.chart2.XDataReceiver; -import com.sun.star.chart2.XFormattedString; -import com.sun.star.chart2.XDiagramProvider; - import com.sun.star.uno.AnyConverter; import com.sun.star.comp.helper.ComponentContext; @@ -59,7 +53,24 @@ public class TestCaseOldAPI extends ComplexTestCase { * @return The test methods. */ public String[] getTestMethodNames() { + // For some tests a view needs to be created. Accessing the model via + // this program and the view may lead to problems + boolean bAvoidViewCreation = true; + + if( bAvoidViewCreation ) + return new String[] { + "testData", + "testChartType", + "testArea", + "testAggregation", + "testFactory", + "testDataSeriesAndPoints", + "testStatistics", + "testStockProperties" + }; + return new String[] { + "testData", "testChartType", "testTitle", "testSubTitle", @@ -68,8 +79,10 @@ public class TestCaseOldAPI extends ComplexTestCase { "testLegend", "testArea", "testAggregation", + "testFactory", "testDataSeriesAndPoints", - "testStatistics" + "testStatistics", + "testStockProperties" }; } @@ -77,15 +90,14 @@ public class TestCaseOldAPI extends ComplexTestCase { public void before() { - // change to "true" to get a view - mbCreateView = false; + // set to "true" to get a view + mbCreateView = true; if( mbCreateView ) mxChartModel = createDocument( "chart" ); else mxChartModel = createChartModel(); - createFileDataSource( mxChartModel ); mxOldDoc = (XChartDocument) UnoRuntime.queryInterface( XChartDocument.class, mxChartModel ); } @@ -119,16 +131,13 @@ public class TestCaseOldAPI extends ComplexTestCase { { 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" ); + XPropertySet xDocProp = (XPropertySet) UnoRuntime.queryInterface( + XPropertySet.class, mxOldDoc ); + assure( "Chart Document is no XPropertySet", xDocProp != null ); + xDocProp.setPropertyValue( "HasMainTitle", new Boolean( true )); + assure( "Property HasMainTitle", AnyConverter.toBoolean( + xDocProp.getPropertyValue( "HasMainTitle" ))); -// printInterfacesAndServices( xTitle ); - - // get title via old API XShape xTitleShape = mxOldDoc.getTitle(); XPropertySet xTitleProp = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xTitleShape ); @@ -148,6 +157,16 @@ public class TestCaseOldAPI extends ComplexTestCase { String aNewTitle = AnyConverter.toString( xTitleProp.getPropertyValue( "String" ) ); assure( "Property \"String\" failed", aNewTitle.equals( aTitle )); } + + // move title + Point aSetPos = new Point(); + aSetPos.X = 1000; + aSetPos.Y = 200; + xTitleShape.setPosition( aSetPos ); + + Point aNewPos = xTitleShape.getPosition(); + assure( "Title Position X", approxEqual( aNewPos.X, aSetPos.X, 1 )); + assure( "Title Position Y", approxEqual( aNewPos.Y, aSetPos.Y, 1 )); } catch( Exception ex ) { @@ -162,20 +181,13 @@ public class TestCaseOldAPI extends ComplexTestCase { { try { - // trying back-querying (from old Wrapper to new Model) - com.sun.star.chart2.XChartDocument xNewDoc = - (com.sun.star.chart2.XChartDocument) UnoRuntime.queryInterface( - com.sun.star.chart2.XChartDocument.class, - mxOldDoc ); - - // set title at new chart - XTitled xTitled = (XTitled) UnoRuntime.queryInterface( - XTitled.class, xNewDoc.getDiagram() ); + XPropertySet xDocProp = (XPropertySet) UnoRuntime.queryInterface( + XPropertySet.class, mxOldDoc ); + assure( "Chart Document is no XPropertySet", xDocProp != null ); + xDocProp.setPropertyValue( "HasSubTitle", new Boolean( true )); + assure( "Property HasSubTitle", AnyConverter.toBoolean( + xDocProp.getPropertyValue( "HasSubTitle" ))); - // 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 ); @@ -185,15 +197,20 @@ public class TestCaseOldAPI extends ComplexTestCase { { int nColor = 0x009acd; // DeepSkyBlue3 float fWeight = FontWeight.BOLD; + float fHeight = (float)14.0; xTitleProp.setPropertyValue( "CharColor", new Integer( nColor ) ); xTitleProp.setPropertyValue( "CharWeight", new Float( fWeight )); + xTitleProp.setPropertyValue( "CharHeight", new Float( fHeight ) ); 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 ); + + float fNewHeight = AnyConverter.toFloat( xTitleProp.getPropertyValue( "CharHeight" ) ); + assure( "Changing CharHeight via old API failed", fNewHeight == fHeight ); } } catch( Exception ex ) @@ -217,21 +234,96 @@ public class TestCaseOldAPI extends ComplexTestCase { X3DDisplay.class, xDia ); assure( "X3DDisplay not supported", xDisp != null ); + // Wall 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" )); + + // Diagram properties + xProp = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xDia ); + assure( "Diagram is no property set", xProp != null ); + + // y-axis + boolean bFirstYAxisText = false; + xProp.setPropertyValue( "HasYAxisDescription", new Boolean( bFirstYAxisText )); + boolean bNewFirstYAxisText = AnyConverter.toBoolean( + xProp.getPropertyValue( "HasYAxisDescription" )); + assure( "Removing description of first y-axis", bNewFirstYAxisText == bFirstYAxisText ); + + boolean bYAxisTitle = true; + xProp.setPropertyValue( "HasYAxisTitle", new Boolean( bYAxisTitle )); + boolean bNewYAxisTitle = AnyConverter.toBoolean( + xProp.getPropertyValue( "HasYAxisTitle" )); + assure( "Adding y-axis title", bNewYAxisTitle == bYAxisTitle ); + + // set title text + XAxisYSupplier xYAxisSuppl = (XAxisYSupplier) UnoRuntime.queryInterface( + XAxisYSupplier.class, mxOldDoc.getDiagram() ); + assure( "Diagram is no y-axis supplier", xYAxisSuppl != null ); + XPropertySet xAxisTitleProp = (XPropertySet) UnoRuntime.queryInterface( + XPropertySet.class, xYAxisSuppl.getYAxisTitle() ); + assure( "Y-Axis Title is no XPropertySet", xAxisTitleProp != null ); + xAxisTitleProp.setPropertyValue( "String", "New y axis title" ); + + // second y-axis + boolean bSecondaryYAxis = true; + xProp.setPropertyValue( "HasSecondaryYAxis", new Boolean( bSecondaryYAxis )); + boolean bNewSecYAxisValue = AnyConverter.toBoolean( + xProp.getPropertyValue( "HasSecondaryYAxis" )); + assure( "Adding a second y-axis does not work", bNewSecYAxisValue == bSecondaryYAxis ); + + XTwoAxisYSupplier xSecYAxisSuppl = (XTwoAxisYSupplier) UnoRuntime.queryInterface( + XTwoAxisYSupplier.class, xDia ); + assure( "XTwoAxisYSupplier not implemented", xSecYAxisSuppl != null ); + assure( "No second y-axis found", xSecYAxisSuppl.getSecondaryYAxis() != null ); + } + + // move diagram + { + XShape xDiagramShape = (XShape) UnoRuntime.queryInterface( + XShape.class, xDia ); + + Point aOldPos = xDiagramShape.getPosition(); + int xDiff = 20; + int yDiff = 20; + Point aSetPos = new Point(); + aSetPos.X = aOldPos.X + xDiff; + aSetPos.Y = aOldPos.Y + yDiff; + xDiagramShape.setPosition( aSetPos ); + + Point aNewPos = xDiagramShape.getPosition(); + //System.out.println( "set X = " + aSetPos.X + ", new X = " + aNewPos.X ); + //System.out.println( "set Y = " + aSetPos.Y + ", new Y = " + aNewPos.Y ); + assure( "Diagram Position X", approxEqual( aNewPos.X, aSetPos.X, 1 )); + assure( "Diagram Position Y", approxEqual( aNewPos.Y, aSetPos.Y, 1 )); + } + + // size diagram + { + XShape xDiagramShape = (XShape) UnoRuntime.queryInterface( + XShape.class, xDia ); + + Size aOldSize = xDiagramShape.getSize(); + int xDiff = aOldSize.Width/2+2; + int yDiff = aOldSize.Height/2+2; + Size aSetSize = new Size(); + aSetSize.Width = aOldSize.Width - xDiff; + aSetSize.Height = aOldSize.Height - yDiff; + xDiagramShape.setSize( aSetSize ); + + Size aNewSize = xDiagramShape.getSize(); + //System.out.println( "set width = " + aSetSize.Width + ", new width = " + aNewSize.Width ); + //System.out.println( "set height = " + aSetSize.Height + ", new height = " + aNewSize.Height ); + assure( "Diagram Width", approxEqual( aNewSize.Width, aSetSize.Width, 2 )); + assure( "Diagram Height", approxEqual( aNewSize.Height, aSetSize.Height, 2 )); } } catch( Exception ex ) @@ -254,6 +346,20 @@ public class TestCaseOldAPI extends ComplexTestCase { XPropertySet xProp = xYAxisSuppl.getYAxis(); assure( "No y-axis found", xProp != null ); + double fMax1, fMax2; + Object oMax = xProp.getPropertyValue( "Max" ); + assure( "No Maximum set", AnyConverter.isDouble( oMax )); + fMax1 = AnyConverter.toDouble( oMax ); + log.println( "Maximum retrieved: " + fMax1 ); + //todo: the view has to be built before there is an explicit value +// assure( "Max is 0.0", fMax1 > 0.0 ); + xProp.setPropertyValue( "AutoMax", new Boolean( false )); + oMax = xProp.getPropertyValue( "Max" ); + assure( "No Maximum set", AnyConverter.isDouble( oMax )); + fMax2 = AnyConverter.toDouble( oMax ); + log.println( "Maximum with AutoMax off: " + fMax2 ); + assure( "maxima differ", fMax1 == fMax2 ); + double nNewMax = 12.3; double nNewOrigin = 2.7; @@ -268,11 +374,6 @@ public class TestCaseOldAPI extends ComplexTestCase { 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 )); - xProp.setPropertyValue( "Origin", new Double( nNewOrigin )); assure( "Origin invalid", approxEqual( @@ -280,6 +381,9 @@ public class TestCaseOldAPI extends ComplexTestCase { nNewOrigin )); xProp.setPropertyValue( "AutoOrigin", new Boolean( true )); assure( "AutoOrigin is off", AnyConverter.toBoolean( xProp.getPropertyValue( "AutoOrigin" )) ); + Object oOrigin = xProp.getPropertyValue( "Origin" ); + assure( "No Origin set", AnyConverter.isDouble( oOrigin )); + log.println( "Origin retrieved: " + AnyConverter.toDouble( oOrigin )); xProp.setPropertyValue( "Logarithmic", new Boolean( true )); assure( "Scaling is not logarithmic", @@ -301,6 +405,23 @@ public class TestCaseOldAPI extends ComplexTestCase { xProp.setPropertyValue( "TextRotation", new Integer( nNewTextRotation )); assure( "Property TextRotation", AnyConverter.toInt( xProp.getPropertyValue( "TextRotation" )) == nNewTextRotation ); + + double fStepMain = 10.0; + xProp.setPropertyValue( "StepMain", new Double( fStepMain )); + assure( "Property StepMain", + AnyConverter.toDouble( xProp.getPropertyValue( "StepMain" )) == fStepMain ); + + // note: fStepHelp must be a divider of fStepMain, because + // internally, the help-step is stored as an integer number of + // substeps + double fStepHelp = 5.0; + xProp.setPropertyValue( "StepHelp", new Double( fStepHelp )); + assure( "Property StepHelp", + AnyConverter.toDouble( xProp.getPropertyValue( "StepHelp" )) == fStepHelp ); + + xProp.setPropertyValue( "DisplayLabels", new Boolean( false )); + assure( "Property DisplayLabels", ! AnyConverter.toBoolean( + xProp.getPropertyValue( "DisplayLabels" ))); } catch( Exception ex ) { @@ -328,6 +449,26 @@ public class TestCaseOldAPI extends ComplexTestCase { AnyConverter.toObject( new Type( ChartLegendPosition.class ), xLegendProp.getPropertyValue( "Alignment" )) == eNewPos ); + + float fNewCharHeight = (float)(11.0); + xLegendProp.setPropertyValue( "CharHeight", new Float( fNewCharHeight )); + assure( "Property CharHeight", + AnyConverter.toFloat( xLegendProp.getPropertyValue( "CharHeight" )) == fNewCharHeight ); + + // move legend + { + Point aOldPos = xLegend.getPosition(); + int xDiff = 20; + int yDiff = 20; + Point aSetPos = new Point(); + aSetPos.X = aOldPos.X + xDiff; + aSetPos.Y = aOldPos.Y + yDiff; + xLegend.setPosition( aSetPos ); + + Point aNewPos = xLegend.getPosition(); + assure( "Legend Position X", approxEqual( aNewPos.X, aSetPos.X, 1 )); + assure( "Legend Position Y", approxEqual( aNewPos.Y, aSetPos.Y, 1 )); + } } catch( Exception ex ) { @@ -348,6 +489,19 @@ public class TestCaseOldAPI extends ComplexTestCase { int nColor = 0xf5fffa; // mint cream xArea.setPropertyValue( "FillColor", new Integer( nColor ) ); xArea.setPropertyValue( "FillStyle", FillStyle.SOLID ); + XPropertySetInfo xInfo = xArea.getPropertySetInfo(); + assure( "Area does not support UserDefinedAttributes", + xInfo.hasPropertyByName( "UserDefinedAttributes" )); + + String aTestAttributeName = "test:foo"; + String aTestAttributeValue = "content"; + XNameContainer xUserDefAttributes = (XNameContainer) AnyConverter.toObject( + new Type( XNameContainer.class ), xArea.getPropertyValue( "UserDefinedAttributes" )); + xUserDefAttributes.insertByName( aTestAttributeName, aTestAttributeValue ); + + String aContent = AnyConverter.toString( xUserDefAttributes.getByName( aTestAttributeName )); + assure( "Wrong content in UserDefinedAttributes container", + aContent.equals( aTestAttributeValue )); int nNewColor = AnyConverter.toInt( xArea.getPropertyValue( "FillColor" ) ); assure( "Changing FillColor of Area failed", nNewColor == nColor ); @@ -369,7 +523,7 @@ public class TestCaseOldAPI extends ComplexTestCase { try { - String aMyServiceName = new String( "com.sun.star.chart.AreaDiagram" ); + String aMyServiceName = new String( "com.sun.star.chart.BarDiagram" ); String aServices[] = xFact.getAvailableServiceNames(); boolean bServiceFound = false; for( int i = 0; i < aServices.length; ++i ) @@ -394,20 +548,29 @@ public class TestCaseOldAPI extends ComplexTestCase { XPropertySet.class, xDia ); assure( "Diagram is no XPropertySet", xDiaProp != null ); - xDiaProp.getPropertyValue( "Stacked" ); xDiaProp.setPropertyValue( "Stacked", new Boolean( true )); assure( "StackMode could not be set correctly", AnyConverter.toBoolean( xDiaProp.getPropertyValue( "Stacked" ))); + + xDiaProp.setPropertyValue( "Dim3D", new Boolean( false )); + assure( "Dim3D could not be set correctly", + ! AnyConverter.toBoolean( + xDiaProp.getPropertyValue( "Dim3D" ))); + + xDiaProp.setPropertyValue( "Vertical", new Boolean( true )); + assure( "Vertical could not be set correctly", + AnyConverter.toBoolean( + xDiaProp.getPropertyValue( "Vertical" ))); } // reset to bar-chart - aMyServiceName = new String( "com.sun.star.chart.BarDiagram" ); - XDiagram xDia = (XDiagram) UnoRuntime.queryInterface( - XDiagram.class, xFact.createInstance( aMyServiceName )); - assure( aMyServiceName + " could not be created", xDia != null ); +// aMyServiceName = new String( "com.sun.star.chart.BarDiagram" ); +// XDiagram xDia = (XDiagram) UnoRuntime.queryInterface( +// XDiagram.class, xFact.createInstance( aMyServiceName )); +// assure( aMyServiceName + " could not be created", xDia != null ); - mxOldDoc.setDiagram( xDia ); +// mxOldDoc.setDiagram( xDia ); } catch( Exception ex ) { @@ -438,11 +601,27 @@ public class TestCaseOldAPI extends ComplexTestCase { { XDiagram xDia = mxOldDoc.getDiagram(); assure( "Invalid Diagram", xDia != null ); + XMultiServiceFactory xFact = (XMultiServiceFactory) UnoRuntime.queryInterface( + XMultiServiceFactory.class, mxOldDoc ); + assure( "document is no factory", xFact != null ); - XPropertySet xProp = xDia.getDataRowProperties( 1 ); - assure( "No DataRowProperties for series 1 (0-based)", xProp != null ); + // FillColor + XPropertySet xProp = xDia.getDataRowProperties( 0 ); + int nColor = 0xffd700; // gold + xProp.setPropertyValue( "FillColor", new Integer( nColor )); + int nNewColor = AnyConverter.toInt( xProp.getPropertyValue( "FillColor" ) ); + assure( "Changing FillColor of Data Series failed", nNewColor == nColor ); // Gradient + assure( "No DataRowProperties for series 0", xProp != null ); + + // note: the FillGradient property is optional, however it was + // supported in the old chart's API + XNameContainer xGradientTable = (XNameContainer) UnoRuntime.queryInterface( + XNameContainer.class, + xFact.createInstance( "com.sun.star.drawing.GradientTable" )); + assure( "no gradient table", xGradientTable != null ); + String aGradientName = "NewAPITestGradient"; Gradient aGradient = new Gradient(); aGradient.Style = GradientStyle.LINEAR; aGradient.StartColor = 0xe0ffff; // light cyan @@ -455,11 +634,14 @@ public class TestCaseOldAPI extends ComplexTestCase { aGradient.EndIntensity = 80; aGradient.StepCount = 23; + xGradientTable.insertByName( aGradientName, aGradient ); xProp.setPropertyValue( "FillStyle", FillStyle.GRADIENT ); - xProp.setPropertyValue( "FillGradient", aGradient ); + xProp.setPropertyValue( "FillGradientName", aGradientName ); + String aNewGradientName = AnyConverter.toString( xProp.getPropertyValue( "FillGradientName" )); + assure( "GradientName", aNewGradientName.equals( aGradientName )); Gradient aNewGradient = (Gradient) AnyConverter.toObject( new Type( Gradient.class ), - xProp.getPropertyValue( "FillGradient" )); + xGradientTable.getByName( aNewGradientName )); assure( "Gradient Style", aNewGradient.Style == aGradient.Style ); assure( "Gradient StartColor", aNewGradient.StartColor == aGradient.StartColor ); assure( "Gradient EndColor", aNewGradient.EndColor == aGradient.EndColor ); @@ -472,24 +654,36 @@ public class TestCaseOldAPI extends ComplexTestCase { assure( "Gradient StepCount", aNewGradient.StepCount == aGradient.StepCount ); // Hatch - xProp = xDia.getDataPointProperties( 1, 1 ); - assure( "No DataPointProperties for (1,1)", xProp != null ); - + xProp = xDia.getDataPointProperties( 1, 0 ); + assure( "No DataPointProperties for (1,0)", xProp != null ); + + // note: the FillHatch property is optional, however it was + // supported in the old chart's API + XNameContainer xHatchTable = (XNameContainer) UnoRuntime.queryInterface( + XNameContainer.class, + xFact.createInstance( "com.sun.star.drawing.HatchTable" )); + assure( "no hatch table", xHatchTable != null ); + String aHatchName = "NewAPITestHatch"; Hatch aHatch = new Hatch(); aHatch.Style = HatchStyle.DOUBLE; aHatch.Color = 0xd2691e; // chocolate aHatch.Distance = 200; // 2 mm (?) aHatch.Angle = 230; // 23 degrees - xProp.setPropertyValue( "FillHatch", aHatch ); + xHatchTable.insertByName( aHatchName, aHatch ); + xProp.setPropertyValue( "FillHatchName", aHatchName ); xProp.setPropertyValue( "FillStyle", FillStyle.HATCH ); + xProp.setPropertyValue( "FillBackground", new Boolean( true )); + String aNewHatchName = AnyConverter.toString( xProp.getPropertyValue( "FillHatchName" )); + assure( "HatchName", aNewHatchName.equals( aHatchName )); Hatch aNewHatch = (Hatch) AnyConverter.toObject( new Type( Hatch.class ), - xProp.getPropertyValue( "FillHatch" )); + xHatchTable.getByName( aNewHatchName )); assure( "Hatch Style", aNewHatch.Style == aHatch.Style ); assure( "Hatch Color", aNewHatch.Color == aHatch.Color ); assure( "Hatch Distance", aNewHatch.Distance == aHatch.Distance ); assure( "Hatch Angle", aNewHatch.Angle == aHatch.Angle ); + assure( "FillBackground", AnyConverter.toBoolean( xProp.getPropertyValue( "FillBackground" )) ); } catch( Exception ex ) { @@ -520,36 +714,201 @@ public class TestCaseOldAPI extends ComplexTestCase { } } - // ================================================================================ + // ------------ - private XModel mxChartModel; - private XChartDocument mxOldDoc; - private boolean mbCreateView; + public void setStockData_Type4() + { + try + { + XPropertySet xDiaProp = (XPropertySet) UnoRuntime.queryInterface( + XPropertySet.class, mxOldDoc.getDiagram() ); - // -------------------------------------------------------------------------------- + ChartDataRowSource eNewSource = ChartDataRowSource.ROWS; + xDiaProp.setPropertyValue( "DataRowSource", eNewSource ); + assure( "Couldn't set \"DataRowSource\" property at Diagram", + AnyConverter.toObject( + new Type( ChartDataRowSource.class ), + xDiaProp.getPropertyValue( "DataRowSource" )) == eNewSource ); + + double aData[][] = + { + { 100.0, 200.0, 300.0, 250.0, 300.0 }, + { 6.5, 4.5, 6.0, 5.5, 3.5 }, + { 1.0, 1.5, 2.0, 2.5, 3.0 }, + { 6.0, 6.5, 7.0, 6.5, 5.0 }, + { 6.0, 5.5, 4.0, 4.5, 4.0 } + }; + + String[] aRowDescriptions = + { + "Volume", "Open", "Min", "Max", "Close" + }; + + String[] aColumnDescriptions = + { + "First Row", "Second Row", "Third Row", "Fourth Row", "Fifth Row" + }; + + + XChartData xData = mxOldDoc.getData(); + XChartDataArray xDataArray = (XChartDataArray) UnoRuntime.queryInterface( + XChartDataArray.class, xData ); + assure( "document has no XChartDataArray", xDataArray != null ); + + xDataArray.setData( aData ); + xDataArray.setRowDescriptions( aRowDescriptions ); + xDataArray.setColumnDescriptions( aColumnDescriptions ); + + mxOldDoc.attachData( xData ); + } + catch( Exception ex ) + { + failed( ex.getMessage() ); + ex.printStackTrace( (PrintWriter)log ); + } + } + + // ------------ - private void createFileDataSource( XModel xModel ) + public void testStockProperties() { - XMultiServiceFactory xFactory = (XMultiServiceFactory) param.getMSF(); + try + { + setStockData_Type4(); + + XMultiServiceFactory xFact = (XMultiServiceFactory) UnoRuntime.queryInterface( + XMultiServiceFactory.class, mxOldDoc ); + assure( "document is no factory", xFact != null ); + + String aMyServiceName = new String( "com.sun.star.chart.StockDiagram" ); + XDiagram xDia = (XDiagram) UnoRuntime.queryInterface( + XDiagram.class, xFact.createInstance( aMyServiceName )); + assure( aMyServiceName + " could not be created", xDia != null ); + + mxOldDoc.setDiagram( xDia ); + + XPropertySet xDiaProp = (XPropertySet) UnoRuntime.queryInterface( + XPropertySet.class, xDia ); + assure( "Diagram is no XPropertySet", xDiaProp != null ); + + xDiaProp.setPropertyValue( "Volume", new Boolean( true )); + assure( "Has Volume", AnyConverter.toBoolean( xDiaProp.getPropertyValue( "Volume" ))); + + xDiaProp.setPropertyValue( "UpDown", new Boolean( true )); + assure( "Has UpDown", AnyConverter.toBoolean( xDiaProp.getPropertyValue( "UpDown" ))); + + // MinMaxLine + XStatisticDisplay xMinMaxProvider = (XStatisticDisplay) UnoRuntime.queryInterface( + XStatisticDisplay.class, xDia ); + assure( "Diagram is no XStatisticDisplay", xMinMaxProvider != null ); + XPropertySet xMinMaxProp = xMinMaxProvider.getMinMaxLine(); + assure( "No MinMaxLine", xMinMaxProp != null ); + + int nLineColor = 0x458b00; // chartreuse4 + xMinMaxProp.setPropertyValue( "LineColor", new Integer( nLineColor )); + int nNewColor = AnyConverter.toInt( xMinMaxProp.getPropertyValue( "LineColor" ) ); + assure( "Changing LineColor of MinMax Line", nNewColor == nLineColor ); + } + catch( Exception ex ) + { + failed( ex.getMessage() ); + ex.printStackTrace( (PrintWriter)log ); + } + } + // ------------ + + public void testFactory() + { try { - XDataProvider xDataProv = (XDataProvider) UnoRuntime.queryInterface( - XDataProvider.class, - xFactory.createInstance( "com.sun.star.comp.chart.FileDataProvider" )); + XMultiServiceFactory xFact = (XMultiServiceFactory) UnoRuntime.queryInterface( + XMultiServiceFactory.class, mxOldDoc ); + assure( "document is no factory", xFact != null ); - XDataReceiver xRec = (XDataReceiver) UnoRuntime.queryInterface( - XDataReceiver.class, xModel ); + Object aTestTable = xFact.createInstance( "com.sun.star.drawing.GradientTable" ); + assure( "Couldn't create gradient table via factory", aTestTable != null ); + } + catch( Exception ex ) + { + failed( ex.getMessage() ); + ex.printStackTrace( (PrintWriter)log ); + } + } + + // ------------ - if( xDataProv != null && - xRec != null ) + public void testData() + { + try + { + // set data + double aData[][] = { + { 1.0, 1.5, 2.0, 2.5, 3.0 }, + { 2.0, 2.5, 3.0, 3.5, 4.0 }, + { 3.0, 3.5, 4.0, 4.5, 5.0 } + }; + + String[] aColumnDescriptions = { + "First Column", "Second Column", "Third Column", + "Fourth Column", "Fifth Column" + }; + + String[] aRowDescriptions = { + "First Row", "Second Row", "Third Row" + }; + + XPropertySet xDiaProp = (XPropertySet) UnoRuntime.queryInterface( + XPropertySet.class, mxOldDoc.getDiagram() ); + ChartDataRowSource eNewSource = ChartDataRowSource.ROWS; + xDiaProp.setPropertyValue( "DataRowSource", eNewSource ); + assure( "Couldn't set \"DataRowSource\" property at Diagram", + AnyConverter.toObject( + new Type( ChartDataRowSource.class ), + xDiaProp.getPropertyValue( "DataRowSource" )) == eNewSource ); + + XChartData xData = mxOldDoc.getData(); + XChartDataArray xDataArray = (XChartDataArray) UnoRuntime.queryInterface( + XChartDataArray.class, xData ); + assure( "document has no XChartDataArray", xDataArray != null ); + + xDataArray.setData( aData ); + xDataArray.setRowDescriptions( aRowDescriptions ); + xDataArray.setColumnDescriptions( aColumnDescriptions ); + + mxOldDoc.attachData( xData ); + + // get data + double aReadData[][]; + String[] aReadColumnDescriptions; + String[] aReadRowDescriptions; + + // refetch data + xData = mxOldDoc.getData(); + xDataArray = (XChartDataArray) UnoRuntime.queryInterface( + XChartDataArray.class, xData ); + assure( "document has no XChartDataArray", xDataArray != null ); + + aReadData = xDataArray.getData(); + aReadRowDescriptions = xDataArray.getRowDescriptions(); + aReadColumnDescriptions = xDataArray.getColumnDescriptions(); + + // compare to values set before + assure( "Data size differs", aData.length == aReadData.length ); + for( int i=0; i<aReadData.length; ++i ) { - xRec.attachDataProvider( xDataProv ); - String aURL = "file://" + System.getProperty( "user.dir" ) + - System.getProperty( "file.separator" ) + "data.chd"; - log.println( aURL ); - xRec.setRangeRepresentation( aURL ); + assure( "Data size differs", aData[i].length == aReadData[i].length ); + for( int j=0; j<aReadData[i].length; ++j ) + assure( "Data differs", aData[i][j] == aReadData[i][j] ); } + + assure( "Column Description size differs", aColumnDescriptions.length == aReadColumnDescriptions.length ); + for( int i=0; i<aReadColumnDescriptions.length; ++i ) + assure( "Column Descriptions differ", aColumnDescriptions[i].equals( aReadColumnDescriptions[i] )); + + assure( "Row Description size differs", aRowDescriptions.length == aReadRowDescriptions.length ); + for( int i=0; i<aReadRowDescriptions.length; ++i ) + assure( "Row Descriptions differ", aRowDescriptions[i].equals( aReadRowDescriptions[i] )); } catch( Exception ex ) { @@ -558,7 +917,13 @@ public class TestCaseOldAPI extends ComplexTestCase { } } - // ------------ + // ================================================================================ + + private XModel mxChartModel; + private XChartDocument mxOldDoc; + private boolean mbCreateView; + + // -------------------------------------------------------------------------------- private XModel createDocument( String sDocType ) { @@ -607,55 +972,6 @@ public class TestCaseOldAPI extends ComplexTestCase { // ------------ - 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( - "com.sun.star.chart2.FormattedString" )); - aStrings[1] = (XFormattedString) UnoRuntime.queryInterface( - XFormattedString.class, - xFact.createInstance( - "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( - "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; @@ -700,4 +1016,18 @@ public class TestCaseOldAPI extends ComplexTestCase { return (x < 0.0 ? -x : x) < ((a < 0.0 ? -a : a) * (1.0 / (16777216.0 * 16777216.0))); } + + // ------------ + /** returns true if a and b differ no more than tolerance. + + @param tolerance + must be non-negative + */ + private boolean approxEqual( int a, int b, int tolerance ) + { + if( a != b ) + log.println( "Integer values differ by " + java.lang.Math.abs( a-b )); + return ( ( a - tolerance <= b ) || + ( a + tolerance >= b )); + } } |