summaryrefslogtreecommitdiff
path: root/chart2/qa
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2007-05-22 16:13:33 +0000
committerVladimir Glazounov <vg@openoffice.org>2007-05-22 16:13:33 +0000
commit4155d0bf07792387ee585a1f4f7bd594dd8d47fc (patch)
tree8314d3ed0bf35b06837d32544f8cd0a8a93fda6a /chart2/qa
parent563b8056c6f57b9c587d38e90cae4c9fbd2688fc (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.java584
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 ));
+ }
}