/*! * This program 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. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program 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. * * Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved. */ package org.pentaho.test.platform.plugin; import static net.javacrumbs.jsonunit.JsonAssert.assertJsonEquals; import static net.javacrumbs.jsonunit.JsonAssert.when; import static net.javacrumbs.jsonunit.core.Option.IGNORING_ARRAY_ORDER; import java.util.ArrayList; import java.util.List; import org.dom4j.Document; import org.dom4j.Node; import org.junit.Assert; import org.junit.Test; import org.pentaho.commons.connection.IPentahoMetaData; import org.pentaho.commons.connection.IPentahoResultSet; import org.pentaho.commons.connection.memory.MemoryMetaData; import org.pentaho.commons.connection.memory.MemoryResultSet; import org.pentaho.platform.api.util.XmlParseException; import org.pentaho.platform.engine.services.solution.PentahoEntityResolver; import org.pentaho.platform.plugin.action.openflashchart.factory.PentahoOFC4JChartHelper; import org.pentaho.platform.util.xml.dom4j.XmlDom4JHelper; @SuppressWarnings( { "unchecked", "nls" } ) public class PentahoFlashChartTest { public static IPentahoResultSet getRelationData() { IPentahoResultSet ips = null; ArrayList<String> colHeaders = new ArrayList(); colHeaders.add( 0, "DEPARTMENT" ); colHeaders.add( 1, "ACTUAL" ); colHeaders.add( 2, "BUDGET" ); ArrayList r1 = new ArrayList(); r1.add( "Sales" ); r1.add( 11 ); r1.add( 12 ); ArrayList r2 = new ArrayList(); r2.add( "Finance" ); r2.add( 14 ); r2.add( 9 ); ArrayList r3 = new ArrayList(); r3.add( "Human Resource" ); r3.add( 7 ); r3.add( 100 ); ArrayList data = new ArrayList(); data.add( r1 ); data.add( r2 ); data.add( r3 ); ips = MemoryResultSet.createFromLists( colHeaders, data ); System.out.println( ips.getRowCount() ); return ips; } public static IPentahoResultSet getRelationOneColData() { IPentahoResultSet ips = null; ArrayList<String> colHeaders = new ArrayList(); colHeaders.add( 0, "DEPARTMENT" ); colHeaders.add( 1, "ACTUAL" ); colHeaders.add( 2, "BUDGET" ); ArrayList r1 = new ArrayList(); r1.add( "Sales" ); r1.add( 11 ); ArrayList r2 = new ArrayList(); r2.add( "Finance" ); r2.add( 14 ); ArrayList r3 = new ArrayList(); r3.add( "Human Resource" ); r3.add( 7 ); ArrayList data = new ArrayList(); data.add( r1 ); data.add( r2 ); data.add( r3 ); ips = MemoryResultSet.createFromLists( colHeaders, data ); System.out.println( ips.getRowCount() ); return ips; } public static IPentahoResultSet getRelationBogusData() { IPentahoResultSet ips = null; ArrayList<String> colHeaders = new ArrayList(); colHeaders.add( 0, "DEPARTMENT" ); colHeaders.add( 1, "ACTUAL" ); colHeaders.add( 2, "BUDGET" ); ArrayList r1 = new ArrayList(); r1.add( "Sales" ); r1.add( "11" ); ArrayList r2 = new ArrayList(); r2.add( "Finance" ); r1.add( "14" ); ArrayList r3 = new ArrayList(); r3.add( "Human Resource" ); r1.add( "15" ); ArrayList data = new ArrayList(); data.add( r1 ); data.add( r2 ); data.add( r3 ); ips = MemoryResultSet.createFromLists( colHeaders, data ); System.out.println( ips.getRowCount() ); return ips; } public static IPentahoResultSet getXYZRelationData() { IPentahoResultSet ips = null; ArrayList<String> colHeaders = new ArrayList(); colHeaders.add( 0, "DEPARTMENT" ); colHeaders.add( 1, "ACTUAL" ); colHeaders.add( 2, "BUDGET" ); colHeaders.add( 3, "DIFFERENCE" ); ArrayList r1 = new ArrayList(); r1.add( "Sales" ); r1.add( 11 ); r1.add( 12 ); r1.add( 1 ); ArrayList r2 = new ArrayList(); r2.add( "Finance" ); r2.add( 14 ); r2.add( 9 ); r2.add( 5 ); ArrayList r3 = new ArrayList(); r3.add( "Human Resource" ); r3.add( 7 ); r3.add( 100 ); r3.add( 93 ); ArrayList data = new ArrayList(); data.add( r1 ); data.add( r2 ); data.add( r3 ); ips = MemoryResultSet.createFromLists( colHeaders, data ); System.out.println( ips.getRowCount() ); return ips; } public static IPentahoResultSet getDimensionalData() { IPentahoResultSet ips = null; ArrayList<String> colHeaders = new ArrayList(); // colHeaders.add(0, "DEPARTMENT"); colHeaders.add( 0, "ACTUAL" ); colHeaders.add( 1, "BUDGET" ); colHeaders.add( 2, "DIFFERENCE" ); ArrayList<String> rowHeaders = new ArrayList(); rowHeaders.add( 0, "Sales" ); rowHeaders.add( 1, "Finance" ); rowHeaders.add( 2, "Human Resource" ); ArrayList r1 = new ArrayList(); r1.add( 11 ); r1.add( 12 ); r1.add( 1 ); ArrayList r2 = new ArrayList(); r2.add( 14 ); r2.add( 9 ); r2.add( 5 ); ArrayList r3 = new ArrayList(); r3.add( 7 ); r3.add( 100 ); r3.add( 93 ); ArrayList data = new ArrayList(); data.add( r1 ); data.add( r2 ); data.add( r3 ); ips = createFromLists( colHeaders, rowHeaders, data ); return ips; } public static MemoryResultSet createFromLists( List colHeaders, List rHeaders, List data ) { Object[][] columnHeaders = new String[1][colHeaders.size()]; for ( int i = 0; i < colHeaders.size(); i++ ) { columnHeaders[0][i] = colHeaders.get( i ); } Object[][] rowHeaders = new String[rHeaders.size()][1]; for ( int i = 0; i < rHeaders.size(); i++ ) { rowHeaders[i][0] = rHeaders.get( i ); } IPentahoMetaData metaData = new MemoryMetaData( columnHeaders, rowHeaders ); MemoryResultSet result = new MemoryResultSet( metaData ); for ( int i = 0; i < data.size(); i++ ) { result.addRow( ( (List) data.get( i ) ).toArray() ); } return result; } public static Node getChartNode( String xml ) { try { Document chartDocument = XmlDom4JHelper.getDocFromString( xml, new PentahoEntityResolver() ); Node chartNode = chartDocument.selectSingleNode( "chart" ); if ( chartNode == null ) { chartNode = chartDocument.selectSingleNode( "chart-attributes" ); } return chartNode; } catch ( XmlParseException e ) { e.printStackTrace(); } return null; } @Test public void testBarChartWithProps() { String chart = "<chart>" + "<chart-type>BarChart</chart-type>" + "<is-sketch>true</is-sketch>" + "<fun-factor>10</fun-factor>" + "<plot-background type=\"color\">#FF0000</plot-background>" + "<chart-background type=\"color\">#FF0000</chart-background>" + "<title>TITLE_STR</title>" + "<title-font>" + "<font-family>Arial</font-family>" + "<size>11</size>" + "<is-bold>true</is-bold>" + "<is-italic>true</is-italic>" + "</title-font>" + "<range-minimum>1</range-minimum>" + "<range-maximum>1</range-maximum>" + "<range-color>#0F0000</range-color>" + "<range-grid-color>#00F000</range-grid-color>" + "<range-stroke>123</range-stroke>" + "<range-steps>10</range-steps>" + "<domain-minimum>1</domain-minimum>" + "<domain-maximum>1</domain-maximum>" + "<domain-color>#0F0000</domain-color>" + "<domain-grid-color>#00F000</domain-grid-color>" + "<domain-stroke>123</domain-stroke>" + "<domain-steps>10</domain-steps>" + "<color-palette>" + "<color>#FF0000</color>" + "<color>#00FF00</color>" + "</color-palette>" + "</chart>"; IPentahoResultSet rs = getRelationData(); Node chartNode = getChartNode( chart ); String c2 = PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); assertJsonEquals( "{\"y_axis\":{\"min\":1,\"colour\":\"#0F0000\",\"grid-colour\":\"#00F000\",\"stroke\":123,\"max\":1}," + "\"title\":{\"text\":\"TITLE_STR\",\"style\":\"font-family: Arial; font-size: 11px; font-weight: bold; " + "font-style: italic;\"},\"inner_bg_colour\":\"#FF0000\",\"x_legend\":{\"text\":\"DEPARTMENT\"," + "\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"}," + "\"bg_colour\":\"#FF0000\",\"elements\":[{\"colour\":\"#FF0000\",\"text\":\"ACTUAL\"," + "\"outline-colour\":\"#006666\",\"values\":[{\"top\":11},{\"top\":14},{\"top\":7}],\"offset\":10," + "\"type\":\"bar_sketch\"},{\"colour\":\"#00FF00\",\"text\":\"BUDGET\",\"outline-colour\":\"#0066CC\"," + "\"values\":[{\"top\":12},{\"top\":9},{\"top\":100}],\"offset\":10,\"type\":\"bar_sketch\"}]," + "\"x_axis\":{\"colour\":\"#0F0000\",\"grid-colour\":\"#00F000\",\"stroke\":123," + "\"labels\":{\"labels\":[\"Sales\",\"Finance\",\"Human Resource\"]}, \"offset\":1}}", c2, when( IGNORING_ARRAY_ORDER ) ); } @Test public void testBarChart() { String chart = "<chart>" + "<chart-type>BarChart</chart-type>" + "</chart>"; IPentahoResultSet rs = getRelationData(); Node chartNode = getChartNode( chart ); String c2 = PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); assertJsonEquals( "{\"y_axis\":{\"min\":0,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1,\"max\":121," + "\"steps\":11},\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; " + "font-weight: normal; font-style: normal;\"},\"elements\":[{\"colour\":\"#006666\",\"text\":\"ACTUAL\"," + "\"values\":[{\"top\":11},{\"top\":14},{\"top\":7}],\"type\":\"bar\"},{\"colour\":\"#0066CC\"," + "\"text\":\"BUDGET\",\"values\":[{\"top\":12},{\"top\":9},{\"top\":100}],\"type\":\"bar\"}]," + "\"x_axis\":{\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1," + "\"labels\":{\"labels\":[\"Sales\",\"Finance\",\"Human Resource\"]},\"offset\":1}}", c2, when( IGNORING_ARRAY_ORDER ) ); } @Test public void testHorizontalBarChart() { String chart = "<chart>" + "<chart-type>BarChart</chart-type>" + "<orientation>horizontal</orientation>" + "</chart>"; IPentahoResultSet rs = getRelationData(); Node chartNode = getChartNode( chart ); String c2 = PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); assertJsonEquals( "{\"y_axis\":{\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1," + "\"labels\":[\"Human Resource\",\"Finance\",\"Sales\"],\"offset\":1}," + "\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; font-weight: " + "normal; font-style: normal;\"},\"elements\":[{\"colour\":\"#006666\",\"text\":\"ACTUAL\"," + "\"values\":[{\"right\":11},{\"right\":14},{\"right\":7}],\"type\":\"hbar\"},{\"colour\":\"#0066CC\"," + "\"text\":\"BUDGET\",\"values\":[{\"right\":12},{\"right\":9},{\"right\":100}],\"type\":\"hbar\"}]," + "\"x_axis\":{\"min\":0,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1,\"max\":121," + "\"labels\":{},\"steps\":11},\"tooltip\":{\"mouse\":2}}", c2, when( IGNORING_ARRAY_ORDER ) ); } @Test public void testLineChart() { String chart = "<chart>" + "<chart-type>LineChart</chart-type>" + "</chart>"; IPentahoResultSet rs = getRelationData(); Node chartNode = getChartNode( chart ); String c2 = PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); assertJsonEquals( "{\"y_axis\":{\"min\":0,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1,\"max\":110," + "\"steps\":10},\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; " + "font-weight: normal; font-style: normal;\"},\"elements\":[{\"colour\":\"#006666\",\"text\":\"ACTUAL\"," + "\"values\":[{\"value\":11},{\"value\":14},{\"value\":7}],\"font-size\":10,\"type\":\"line\"}," + "{\"colour\":\"#0066CC\",\"text\":\"BUDGET\",\"values\":[{\"value\":12},{\"value\":9},{\"value\":100}]," + "\"font-size\":10,\"type\":\"line\"}],\"x_axis\":{\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\"," + "\"stroke\":1,\"labels\":{\"labels\":[\"Sales\",\"Finance\",\"Human Resource\"]}}}", c2, when( IGNORING_ARRAY_ORDER ) ); } @Test public void testAreaChart() { String chart = "<chart>" + "<chart-type>AreaChart</chart-type>" + "</chart>"; IPentahoResultSet rs = getRelationData(); Node chartNode = getChartNode( chart ); String c2 = PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); assertJsonEquals( "{\"y_axis\":{\"min\":0,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1,\"max\":110," + "\"steps\":10},\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; " + "font-size: 14px; " + "font-weight: normal; font-style: normal;\"},\"elements\":[{\"colour\":\"#006666\",\"text\"" + ":\"ACTUAL\"," + "\"values\":[11,14,7],\"fill\":\"#006666\",\"font-size\":10,\"fillAlpha\":0.35,\"type\":" + "\"area_line\"}," + "{\"colour\":\"#0066CC\",\"text\":\"BUDGET\",\"values\":[12,9,100],\"fill\":\"#0066CC\"," + "\"font-size\":10," + "\"fillAlpha\":0.35,\"type\":\"area_line\"}],\"x_axis\":{\"colour\":\"#000000\"," + "\"grid-colour\":\"#aaaaaa\",\"stroke\":1,\"labels\":{\"labels\":[\"Sales\",\"Finance\"," + "\"Human Resource\"]}}}", c2, when( IGNORING_ARRAY_ORDER ) ); } @Test public void testPieChart() { String chart = "<chart>" + "<chart-type>PieChart</chart-type>" + "</chart>"; IPentahoResultSet rs = getRelationData(); Node chartNode = getChartNode( chart ); String c2 = PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); assertJsonEquals( "{\"y_axis\":{\"min\":0,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1,\"max\":110," + "\"steps\":10},\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; " + "font-weight: normal; font-style: normal;\"},\"elements\":[{\"animate\":false," + "\"values\":[{\"text\":\"Sales\",\"value\":11,\"label\":\"Sales\"},{\"text\":\"Finance\",\"value\":14," + "\"label\":\"Finance\"},{\"text\":\"Human Resource\",\"value\":7,\"label\":\"Human Resource\"}]," + "\"type\":\"pie\",\"colours\":[\"#006666\",\"#0066CC\",\"#009999\",\"#336699\",\"#339966\",\"#3399FF\"," + "\"#663366\",\"#666666\",\"#666699\",\"#669999\",\"#6699CC\",\"#66CCCC\",\"#993300\",\"#999933\"," + "\"#999966\",\"#999999\",\"#9999CC\",\"#9999FF\",\"#99CC33\",\"#99CCCC\",\"#99CCFF\",\"#CC6600\"," + "\"#CC9933\",\"#CCCC33\",\"#CCCC66\",\"#CCCC99\",\"#CCCCCC\",\"#FF9900\",\"#FFCC00\",\"#FFCC66\"]}]," + "\"x_axis\":{\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1," + "\"labels\":{\"labels\":[\"Sales\",\"Finance\",\"Human Resource\"]}}}", c2, when( IGNORING_ARRAY_ORDER ) ); } @Test public void testDotChart() { String chart = "<chart>" + "<chart-type>DotChart</chart-type>" + "<dataset-type>XYSeriesCollection</dataset-type>" + "</chart>"; IPentahoResultSet rs = getRelationData(); Node chartNode = getChartNode( chart ); String c2 = PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); assertJsonEquals( "{\"y_axis\":{\"min\":0,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1,\"max\":110," + "\"steps\":10},\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; " + "font-weight: normal; font-style: normal;\"},\"elements\":[{\"colour\":\"#006666\",\"text\":\"Sales\"," + "\"values\":[{\"y\":12,\"x\":11}],\"type\":\"scatter\",\"tip\":\"Sales: 11, 12\"}," + "{\"colour\":\"#0066CC\"," + "\"text\":\"Finance\",\"values\":[{\"y\":9,\"x\":14}],\"type\":\"scatter\",\"tip\":\"Finance: 14, 9\"}," + "{\"colour\":\"#009999\",\"text\":\"Human Resource\",\"values\":[{\"y\":100,\"x\":7}]," + "\"type\":\"scatter\"," + "\"tip\":\"Human Resource: 7, 100\"}],\"x_axis\":{\"min\":7,\"colour\":\"#000000\"," + "\"grid-colour\":\"#aaaaaa\",\"stroke\":1,\"max\":14,\"labels\":{}}}", c2, when( IGNORING_ARRAY_ORDER ) ); } @Test public void testBubbleChart() { String chart = "<chart>" + "<chart-type>BubbleChart</chart-type>" + "<dataset-type>XYZSeriesCollection</dataset-type>" + "</chart>"; IPentahoResultSet rs = getXYZRelationData(); Node chartNode = getChartNode( chart ); String c2 = PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); assertJsonEquals( "{\"y_axis\":{\"min\":0,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1,\"max\":110," + "\"steps\":10},\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; " + "font-weight: normal; font-style: normal;\"},\"elements\":[{\"colour\":\"#006666\",\"dot-size\":1," + "\"text\":\"Sales\",\"values\":[{\"y\":12,\"x\":11}],\"type\":\"scatter\"},{\"colour\":\"#0066CC\"," + "\"dot-size\":5,\"text\":\"Finance\",\"values\":[{\"y\":9,\"x\":14}],\"type\":\"scatter\"}," + "{\"colour\":\"#009999\",\"dot-size\":100,\"text\":\"Human Resource\",\"values\":[{\"y\":100,\"x\":7}]," + "\"type\":\"scatter\"}],\"x_axis\":{\"min\":7,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\"," + "\"stroke\":1,\"max\":14,\"labels\":{}}}", c2, when( IGNORING_ARRAY_ORDER ) ); } @Test public void testBubbleChartDimensional() { String chart = "<chart>" + "<chart-type>BubbleChart</chart-type>" + "<dataset-type>XYZSeriesCollection</dataset-type>" + "</chart>"; IPentahoResultSet rs = getDimensionalData(); Node chartNode = getChartNode( chart ); String c2 = PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); assertJsonEquals( "{\"y_axis\":{\"min\":0,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1,\"max\":110," + "\"steps\":10},\"x_legend\":{\"text\":\"ACTUAL\",\"style\":\"font-family: Arial; font-size: 14px; " + "font-weight: normal; font-style: normal;\"},\"elements\":[{\"colour\":\"#006666\",\"dot-size\":1," + "\"text\":\"Sales\",\"values\":[{\"y\":12,\"x\":11}],\"type\":\"scatter\"},{\"colour\":\"#0066CC\"," + "\"dot-size\":5,\"text\":\"Finance\",\"values\":[{\"y\":9,\"x\":14}],\"type\":\"scatter\"}," + "{\"colour\":\"#009999\",\"dot-size\":100,\"text\":\"Human Resource\",\"values\":[{\"y\":100,\"x\":7}]," + "\"type\":\"scatter\"}],\"x_axis\":{\"min\":7,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\"," + "\"stroke\":1,\"max\":14,\"labels\":{}}}", c2, when( IGNORING_ARRAY_ORDER ) ); } @Test public void testBarLineChart() { String chart = "<chart>" + "<chart-type>BarLineChart</chart-type>" + "<bar-series>" + "<series>ACTUAL</series>" + "<series>DIFFERENCE</series>" + "</bar-series>" + "<line-series><series>BUDGET</series></line-series>" + "</chart>"; IPentahoResultSet rs = getXYZRelationData(); Node chartNode = getChartNode( chart ); String c2 = PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); // verify there is a right axis, and that there is a y_axis_right Assert.assertTrue( c2.indexOf( "\"axis\":\"right\"" ) >= 0 ); Assert.assertTrue( c2.indexOf( "\"y_axis_right\":{" ) >= 0 ); assertJsonEquals( "{\"y_axis\":{\"min\":0,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1,\"max\":110," + "\"steps\":10},\"y_axis_right\":{\"min\":0,\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\"," + "\"stroke\":1,\"max\":110,\"steps\":10},\"x_legend\":{\"text\":\"DEPARTMENT\"," + "\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"}," + "\"elements\":[{\"colour\":\"#006666\",\"text\":\"ACTUAL\",\"values\":[{\"top\":11},{\"top\":14}," + "{\"top\":7}],\"type\":\"bar\"},{\"axis\":\"right\",\"colour\":\"#0066CC\",\"text\":\"BUDGET\"," + "\"values\":[{\"value\":12},{\"value\":9},{\"value\":100}],\"font-size\":10,\"type\":\"line\"}," + "{\"colour\":\"#009999\",\"text\":\"DIFFERENCE\",\"values\":[{\"top\":1},{\"top\":5},{\"top\":93}]," + "\"type\":\"bar\"}],\"x_axis\":{\"colour\":\"#000000\",\"grid-colour\":\"#aaaaaa\",\"stroke\":1," + "\"labels\":{\"labels\":[\"Sales\",\"Finance\",\"Human Resource\"]},\"offset\":1}}", c2, when( IGNORING_ARRAY_ORDER ) ); } @Test public void testBogusData() { String chart = "<chart>" + "<chart-type>BarChart</chart-type>" + "</chart>"; IPentahoResultSet rs = getRelationBogusData(); Node chartNode = getChartNode( chart ); try { PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); Assert.fail(); } catch ( RuntimeException e ) { Assert.assertTrue( e.getMessage().toLowerCase().indexOf( "result set" ) >= 0 ); } } @Test public void testSmallDataFail() { String chart = "<chart>" + "<chart-type>BubbleChart</chart-type>" + "<dataset-type>XYZSeriesCollection</dataset-type>" + "</chart>"; IPentahoResultSet rs = getRelationData(); Node chartNode = getChartNode( chart ); try { PentahoOFC4JChartHelper.generateChartJson( chartNode, rs, false, null ); Assert.fail(); } catch ( RuntimeException e ) { Assert.assertTrue( e.getMessage().toLowerCase().indexOf( "xyz" ) >= 0 ); } } }