/*
* 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 2009 Pentaho Corporation. All rights reserved.
*
*/
package org.pentaho.test.platform.plugin;
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);
Assert.assertEquals(c2,
"{\"bg_colour\":\"#FF0000\",\"inner_bg_colour\":\"#FF0000\",\"title\":{\"text\":\"TITLE_STR\",\"style\":\"font-family: Arial; font-size: 11px; font-weight: bold; font-style: italic;\"},\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"},\"y_axis\":{\"min\":1,\"stroke\":123,\"grid-colour\":\"#00F000\",\"colour\":\"#0F0000\",\"max\":1},\"x_axis\":{\"stroke\":123,\"grid-colour\":\"#00F000\",\"colour\":\"#0F0000\",\"labels\":{\"labels\":[\"Sales\",\"Finance\",\"Human Resource\"]},\"offset\":1},\"elements\":[{\"outline-colour\":\"#006666\",\"text\":\"ACTUAL\",\"type\":\"bar_sketch\",\"values\":[{\"top\":11},{\"top\":14},{\"top\":7}],\"colour\":\"#FF0000\",\"offset\":10},{\"outline-colour\":\"#0066CC\",\"text\":\"BUDGET\",\"type\":\"bar_sketch\",\"values\":[{\"top\":12},{\"top\":9},{\"top\":100}],\"colour\":\"#00FF00\",\"offset\":10}]}");
}
@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);
Assert.assertEquals(c2,
"{\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"},\"y_axis\":{\"min\":0,\"steps\":11,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"max\":121},\"x_axis\":{\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"labels\":{\"labels\":[\"Sales\",\"Finance\",\"Human Resource\"]},\"offset\":1},\"elements\":[{\"text\":\"ACTUAL\",\"type\":\"bar\",\"values\":[{\"top\":11},{\"top\":14},{\"top\":7}],\"colour\":\"#006666\"},{\"text\":\"BUDGET\",\"type\":\"bar\",\"values\":[{\"top\":12},{\"top\":9},{\"top\":100}],\"colour\":\"#0066CC\"}]}");
}
@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);
Assert.assertEquals(c2,
"{\"tooltip\":{\"mouse\":2},\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"}," +
"\"y_axis\":{\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"labels\":[\"Human Resource\",\"Finance\",\"Sales\"],\"offset\":1}," +
"\"x_axis\":{\"min\":0,\"steps\":11,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"labels\":{},\"max\":121}," +
"\"elements\":[{\"text\":\"ACTUAL\",\"type\":\"hbar\",\"values\":[{\"right\":11},{\"right\":14},{\"right\":7}],\"colour\":\"#006666\"},{\"text\":\"BUDGET\",\"type\":\"hbar\",\"values\":[{\"right\":12},{\"right\":9},{\"right\":100}],\"colour\":\"#0066CC\"}]}");
}
@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);
Assert.assertEquals(c2,
"{\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"},\"y_axis\":{\"min\":0,\"steps\":10,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"max\":110},\"x_axis\":{\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"labels\":{\"labels\":[\"Sales\",\"Finance\",\"Human Resource\"]}},\"elements\":[{\"font-size\":10,\"text\":\"ACTUAL\",\"type\":\"line\",\"values\":[{\"value\":11},{\"value\":14},{\"value\":7}],\"colour\":\"#006666\"},{\"font-size\":10,\"text\":\"BUDGET\",\"type\":\"line\",\"values\":[{\"value\":12},{\"value\":9},{\"value\":100}],\"colour\":\"#0066CC\"}]}");
}
@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);
Assert.assertEquals(c2,
"{\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"},\"y_axis\":{\"min\":0,\"steps\":10,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"max\":110},\"x_axis\":{\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"labels\":{\"labels\":[\"Sales\",\"Finance\",\"Human Resource\"]}},\"elements\":[{\"font-size\":10,\"text\":\"ACTUAL\",\"fillAlpha\":0.35,\"type\":\"area_line\",\"values\":[11,14,7],\"fill\":\"#006666\",\"colour\":\"#006666\"},{\"font-size\":10,\"text\":\"BUDGET\",\"fillAlpha\":0.35,\"type\":\"area_line\",\"values\":[12,9,100],\"fill\":\"#0066CC\",\"colour\":\"#0066CC\"}]}");
}
@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);
Assert.assertEquals(c2,
"{\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"},\"y_axis\":{\"min\":0,\"steps\":10,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"max\":110},\"x_axis\":{\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"labels\":{\"labels\":[\"Sales\",\"Finance\",\"Human Resource\"]}},\"elements\":[{\"animate\":false,\"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\"],\"type\":\"pie\",\"values\":[{\"value\":11,\"text\":\"Sales\",\"label\":\"Sales\"},{\"value\":14,\"text\":\"Finance\",\"label\":\"Finance\"},{\"value\":7,\"text\":\"Human Resource\",\"label\":\"Human Resource\"}]}]}");
}
@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);
Assert.assertEquals(c2,
"{\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"},\"y_axis\":{\"min\":0,\"steps\":10,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"max\":110},\"x_axis\":{\"min\":7,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"labels\":{},\"max\":7},\"elements\":[{\"text\":\"Sales\",\"type\":\"scatter\",\"values\":[{\"y\":12,\"x\":11}],\"tip\":\"Sales: 11, 12\",\"colour\":\"#006666\"},{\"text\":\"Finance\",\"type\":\"scatter\",\"values\":[{\"y\":9,\"x\":14}],\"tip\":\"Finance: 14, 9\",\"colour\":\"#0066CC\"},{\"text\":\"Human Resource\",\"type\":\"scatter\",\"values\":[{\"y\":100,\"x\":7}],\"tip\":\"Human Resource: 7, 100\",\"colour\":\"#009999\"}]}");
}
@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);
Assert.assertEquals(c2,
"{\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"},\"y_axis\":{\"min\":0,\"steps\":10,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"max\":110},\"x_axis\":{\"min\":7,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"labels\":{},\"max\":7},\"elements\":[{\"text\":\"Sales\",\"type\":\"scatter\",\"values\":[{\"y\":12,\"x\":11}],\"dot-size\":1,\"colour\":\"#006666\"},{\"text\":\"Finance\",\"type\":\"scatter\",\"values\":[{\"y\":9,\"x\":14}],\"dot-size\":5,\"colour\":\"#0066CC\"},{\"text\":\"Human Resource\",\"type\":\"scatter\",\"values\":[{\"y\":100,\"x\":7}],\"dot-size\":100,\"colour\":\"#009999\"}]}");
}
@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);
Assert.assertEquals(c2,
"{\"x_legend\":{\"text\":\"ACTUAL\",\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"},\"y_axis\":{\"min\":0,\"steps\":10,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"max\":110},\"x_axis\":{\"min\":7,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"labels\":{},\"max\":7},\"elements\":[{\"text\":\"Sales\",\"type\":\"scatter\",\"values\":[{\"y\":12,\"x\":11}],\"dot-size\":1,\"colour\":\"#006666\"},{\"text\":\"Finance\",\"type\":\"scatter\",\"values\":[{\"y\":9,\"x\":14}],\"dot-size\":5,\"colour\":\"#0066CC\"},{\"text\":\"Human Resource\",\"type\":\"scatter\",\"values\":[{\"y\":100,\"x\":7}],\"dot-size\":100,\"colour\":\"#009999\"}]}");
}
@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);
Assert.assertEquals(c2,
"{\"y_axis_right\":{\"min\":0,\"steps\":10,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"max\":110},\"x_legend\":{\"text\":\"DEPARTMENT\",\"style\":\"font-family: Arial; font-size: 14px; font-weight: normal; font-style: normal;\"},\"y_axis\":{\"min\":0,\"steps\":10,\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"max\":110},\"x_axis\":{\"stroke\":1,\"grid-colour\":\"#aaaaaa\",\"colour\":\"#000000\",\"labels\":{\"labels\":[\"Sales\",\"Finance\",\"Human Resource\"]},\"offset\":1},\"elements\":[{\"text\":\"ACTUAL\",\"type\":\"bar\",\"values\":[{\"top\":11},{\"top\":14},{\"top\":7}],\"colour\":\"#006666\"},{\"font-size\":10,\"text\":\"BUDGET\",\"axis\":\"right\",\"type\":\"line\",\"values\":[{\"value\":12},{\"value\":9},{\"value\":100}],\"colour\":\"#0066CC\"},{\"text\":\"DIFFERENCE\",\"type\":\"bar\",\"values\":[{\"top\":1},{\"top\":5},{\"top\":93}],\"colour\":\"#009999\"}]}");
}
@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);
}
}
}