1 39 40 41 package org.krysalis.jcharts.test; 42 43 44 import org.krysalis.jcharts.axisChart.AxisChart; 45 import org.krysalis.jcharts.chartData.*; 46 import org.krysalis.jcharts.properties.*; 47 import org.krysalis.jcharts.types.ChartType; 48 import org.krysalis.jcharts.imageMap.ImageMap; 49 50 import java.awt.*; 51 52 53 57 abstract class AxisChartTestBase 58 { 59 60 public AxisChartTestBase() 61 { 62 System.out.println( "Running: " + this.getClass().getName() ); 63 } 64 65 66 abstract DataSeries getDataSeries() throws ChartDataException; 67 abstract boolean supportsImageMap(); 68 69 70 74 static void axisChartTest( String name, AxisChartTestBase axisChartTestBase ) throws ChartDataException, PropertyException 75 { 76 LegendProperties legendProperties; 77 ChartProperties chartProperties; 78 AxisProperties axisProperties; 79 AxisChart axisChart; 80 81 int numTestsToRun = 10; 82 String fileName; 83 84 HTMLGenerator htmlGenerator = new HTMLGenerator( ChartTestDriver.OUTPUT_PATH + name + "Test.html" ); 85 86 for( int i = 0; i < numTestsToRun; i++ ) 87 { 88 DataSeries dataSeries= axisChartTestBase.getDataSeries(); 89 90 boolean horizontalPlot= true; boolean createImageMap= true; 93 axisProperties = new AxisProperties( horizontalPlot ); 94 axisProperties.setXAxisLabelsAreVertical( ( TestDataGenerator.getRandomNumber( 1 ) > 0.5d ) ); 95 96 TestDataGenerator.randomizeAxisProperties( axisProperties ); 97 99 DataAxisProperties dataAxisProperties; 100 LabelAxisProperties labelAxisProperties; 101 102 if( horizontalPlot ) 103 { 104 dataAxisProperties = ( DataAxisProperties ) axisProperties.getXAxisProperties(); 105 labelAxisProperties = ( LabelAxisProperties ) axisProperties.getYAxisProperties(); 106 } 107 else 108 { 109 dataAxisProperties = ( DataAxisProperties ) axisProperties.getYAxisProperties(); 110 labelAxisProperties = ( LabelAxisProperties ) axisProperties.getXAxisProperties(); 111 } 112 113 dataAxisProperties.setRoundToNearest( 1 ); 114 116 117 if( dataSeries.getNumberOfAxisLabels() == 0 ) 119 { 120 labelAxisProperties.setShowAxisLabels( false ); 121 } 122 else 123 { 124 labelAxisProperties.setShowAxisLabels( ( TestDataGenerator.getRandomNumber( 1 ) > 0.3d ) ); 125 } 126 127 128 int width = ( int ) TestDataGenerator.getRandomNumber( 500, 1000 ); 129 int height = ( int ) TestDataGenerator.getRandomNumber( 300, 800 ); 130 131 legendProperties = new LegendProperties(); 132 TestDataGenerator.randomizeLegend( legendProperties ); 133 135 chartProperties = new ChartProperties(); 136 138 139 axisChart = new AxisChart( dataSeries, chartProperties, axisProperties, legendProperties, width, height ); 140 141 142 fileName = ChartTestDriver.OUTPUT_PATH + name + i + ChartTestDriver.EXTENSION; 143 144 145 ImageMap imageMap; 146 if( createImageMap && axisChartTestBase.supportsImageMap() ) 147 { 148 axisChart.renderWithImageMap(); 149 imageMap= axisChart.getImageMap(); 150 } 151 else 152 { 153 imageMap= null; 154 } 155 156 try 157 { 158 ChartTestDriver.exportImage( axisChart, fileName ); 159 } 160 catch( NullPointerException nullPointerException ) 161 { 162 nullPointerException.printStackTrace(); 163 System.out.println(); 164 } 165 166 axisChart.toHTML( htmlGenerator, fileName, imageMap ); 167 htmlGenerator.addLineBreak(); 168 } 169 170 htmlGenerator.saveFile(); 171 } 172 173 174 178 final DataSeries createDataSeries( int numberOfValuesToCreate ) 179 { 180 String [] xAxisLabels= null; 181 if( ( TestDataGenerator.getRandomNumber( 1 ) > 0.3d ) ) 182 { 183 xAxisLabels = TestDataGenerator.getRandomStrings( numberOfValuesToCreate, ( int ) TestDataGenerator.getRandomNumber( 10 ), false ); 184 } 185 String xAxisTitle = TestDataGenerator.getRandomString( 15, true ); 186 String yAxisTitle = TestDataGenerator.getRandomString( 15, true ); 187 188 return new DataSeries( xAxisLabels, xAxisTitle, yAxisTitle, "This is a test title that is so freaking long is is going to wrap around the image for sure. lfksjg;ljs; dflgkjdfgsdgdg dsgdsgsdfg dsfgsdfgsdfgs dfgdsfgd" ); 189 } 190 191 192 201 AxisChartDataSet createAxisChartDataSet( ChartType chartType, 202 ChartTypeProperties chartTypeProperties, 203 int numberOfDataSets, 204 int numberOfValuesToCreate, 205 int minValue, 206 int maxValue ) throws ChartDataException 207 { 208 double[][] data = TestDataGenerator.getRandomNumbers( numberOfDataSets, numberOfValuesToCreate, minValue, maxValue ); 209 String [] legendLabels = TestDataGenerator.getRandomStrings( numberOfDataSets, 10, false ); 210 Paint[] paints = TestDataGenerator.getRandomPaints( numberOfDataSets ); 211 212 213 224 225 return new AxisChartDataSet( data, legendLabels, paints, chartType, chartTypeProperties ); 226 } 227 } 228 | Popular Tags |