/*
* 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 2005 - 2009 Pentaho Corporation. All rights reserved.
*
*/
package org.pentaho.test.platform.plugin;
//import org.pentaho.commons.connection.IPentahoMetaData;
//import org.pentaho.commons.connection.IPentahoResultSet;
import org.pentaho.platform.api.engine.IRuntimeContext;
import org.pentaho.platform.engine.core.solution.SimpleParameterProvider;
import org.pentaho.platform.plugin.services.messages.Messages;
import org.pentaho.test.platform.engine.core.BaseTest;
@SuppressWarnings("nls")
public class RulesTest extends BaseTest {
private static final String SOLUTION_PATH = "test-src/solution";
public String getSolutionPath() {
return SOLUTION_PATH;
}
public void testScriptRule() {
startTest();
SimpleParameterProvider parameterProvider = new SimpleParameterProvider();
parameterProvider.setParameter("customer", "Acme"); //$NON-NLS-1$ //$NON-NLS-2$
IRuntimeContext context = run("test", "rules", "script_rule1.xaction", parameterProvider); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
assertEquals(
Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$
assertNotNull(Messages.getInstance().getString("RulesTest.ERROR_0001_NULL_RESULT"), context.getOutputParameter("rule-result")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(
Messages.getInstance().getString("RulesTest.ERROR_0002_WRONG_RESULT"), "Central", context.getOutputParameter("rule-result").getStringValue()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
info(Messages.getInstance().getString(
"RulesTest.DEBUG_0003_SCRIPT_RULE_SUCCESS", context.getOutputParameter("rule-result").getStringValue())); //$NON-NLS-1$ //$NON-NLS-2$
finishTest();
}
public void testScriptRuleError1() {
startTest();
info(Messages.getInstance().getString("RulesTest.USER_ERRORS_EXPECTED_SCRIPT_NOT_DEFINED")); //$NON-NLS-1$
IRuntimeContext context = run("test", "rules", "script_rule_error1.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
assertEquals(
Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), IRuntimeContext.RUNTIME_CONTEXT_VALIDATE_FAIL, context.getStatus()); //$NON-NLS-1$
assertNotNull(
Messages.getInstance().getString("RulesTest.ERROR_0004_NULL_OUTPUT_OBJECT"), context.getOutputParameter("rule-result")); //$NON-NLS-1$//$NON-NLS-2$
assertEquals(
Messages.getInstance().getString("RulesTest.ERROR_0005_RESULT_WHEN_NULL_EXPECTED"), null, context.getOutputParameter("rule-result").getStringValue()); //$NON-NLS-1$//$NON-NLS-2$
finishTest();
}
public void testScriptRuleError2() {
startTest();
info(Messages.getInstance().getString("RulesTest.USER_ERRORS_EXPECTED_OUTPUT_NOT_DEFINED")); //$NON-NLS-1$
IRuntimeContext context = run("test", "rules", "script_rule_error2.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
assertEquals(
Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), IRuntimeContext.RUNTIME_CONTEXT_VALIDATE_FAIL, context.getStatus()); //$NON-NLS-1$
assertEquals(
Messages.getInstance().getString("RulesTest.ERROR_0006_RESULT_WHEN_ERROR_EXPECTED"), false, context.getOutputNames().contains("rule-result")); //$NON-NLS-1$//$NON-NLS-2$
finishTest();
}
public void testScriptRuleError3() {
startTest();
info(Messages.getInstance().getString("RulesTest.USER_ERRORS_EXPECTED_SCRIPT_INVALID")); //$NON-NLS-1$
IRuntimeContext context = run("test", "rules", "script_rule_error3.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
assertEquals(
Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), IRuntimeContext.RUNTIME_STATUS_FAILURE, context.getStatus()); //$NON-NLS-1$
assertEquals(
Messages.getInstance().getString("RulesTest.ERROR_0005_RESULT_WHEN_NULL_EXPECTED"), null, context.getOutputParameter("rule-result").getStringValue()); //$NON-NLS-1$//$NON-NLS-2$
finishTest();
}
public void testScriptRuleError4() {
startTest();
info("This should generate errors because the input to the script has a minus sign in the input name."); //$NON-NLS-1$
IRuntimeContext context = run("test", "rules", "script_rule_error4.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
assertEquals(
Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), IRuntimeContext.RUNTIME_STATUS_FAILURE, context.getStatus()); //$NON-NLS-1$
assertEquals(
Messages.getInstance().getString("RulesTest.ERROR_0005_RESULT_WHEN_NULL_EXPECTED"), null, context.getOutputParameter("rule-result").getStringValue()); //$NON-NLS-1$//$NON-NLS-2$
finishTest();
}
public void testScriptCompoundResult() {
startTest();
info(Messages.getInstance().getString("RulesTest.USER_ERRORS_EXPECTED_SCRIPT_INVALID")); //$NON-NLS-1$
IRuntimeContext context = run("test", "rules", "script_rule3.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
assertEquals(
Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$
assertNotNull(context.getOutputParameter("fruit")); //$NON-NLS-1$
assertNotNull(context.getOutputParameter("veg")); //$NON-NLS-1$
assertEquals("bad", "apples", context.getOutputParameter("fruit").getStringValue()); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
assertEquals("bad", "carrots", context.getOutputParameter("veg").getStringValue()); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
finishTest();
}
/*public void testQueryRule() {
startTest();
IPentahoResultSet resultSet = null;
try {
IRuntimeContext context = run("test", "rules", "query_rule1.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
assertEquals(
Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$
Object result = context.getOutputParameter("rule-result").getValue(); //$NON-NLS-1$
assertNotNull(Messages.getInstance().getString("RulesTest.ERROR_0001_NULL_RESULT"), result); //$NON-NLS-1$
assertTrue(
Messages.getInstance().getString("RulesTest.ERROR_0007_LOOKUP_RULE_INVALID_RESULT"), (result instanceof IPentahoResultSet)); //$NON-NLS-1$
resultSet = (IPentahoResultSet) result;
IPentahoMetaData metaData = resultSet.getMetaData();
Object columnHeaders[][] = metaData.getColumnHeaders();
String columnHeader = columnHeaders[0][0].toString();
assertEquals(Messages.getInstance().getString("RulesTest.ERROR_0009_LOOKUP_RULE_COLUMN_MISSING"), "POSITIONTITLE", columnHeader); //$NON-NLS-1$ //$NON-NLS-2$
Object row[] = resultSet.next();
assertNotNull(Messages.getInstance().getString("RulesTest.ERROR_0007_LOOKUP_RULE_INVALID_RESULT"), row); //$NON-NLS-1$
info(Messages.getInstance().getString("RulesTest.DEBUG_LOOKUP_RULE_SUCCESS", row[0].toString())); //$NON-NLS-1$
} finally {
if (resultSet != null) {
resultSet.closeConnection();
}
}
finishTest();
}*/
/*public void testQueryRule2() {
startTest();
IPentahoResultSet resultSet = null;
try {
IRuntimeContext context = run("test", "rules", "query_rule2.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
assertEquals(
Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$
Object result = context.getOutputParameter("rule-result").getValue(); //$NON-NLS-1$
assertNotNull(Messages.getInstance().getString("RulesTest.ERROR_0001_NULL_RESULT"), result); //$NON-NLS-1$
assertTrue(
Messages.getInstance().getString("RulesTest.ERROR_0007_LOOKUP_RULE_INVALID_RESULT"), (result instanceof IPentahoResultSet)); //$NON-NLS-1$
resultSet = (IPentahoResultSet) result;
IPentahoMetaData metaData = resultSet.getMetaData();
Object columnHeaders[][] = metaData.getColumnHeaders();
String regionHeader = columnHeaders[0][0].toString();
String departmentHeader = columnHeaders[0][1].toString();
assertEquals(Messages.getInstance().getString("RulesTest.ERROR_0009_LOOKUP_RULE_COLUMN_MISSING"), "REGION", regionHeader); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(
Messages.getInstance().getString("RulesTest.ERROR_0009_LOOKUP_RULE_COLUMN_MISSING"), "DEPARTMENT", departmentHeader); //$NON-NLS-1$ //$NON-NLS-2$
Object row[] = resultSet.next();
while (row != null) {
String region = row[0].toString();
String department = row[1].toString();
assertNotNull(Messages.getInstance().getString("RulesTest.ERROR_0009_LOOKUP_RULE_COLUMN_MISSING"), region); //$NON-NLS-1$
assertNotNull(Messages.getInstance().getString("RulesTest.ERROR_0009_LOOKUP_RULE_COLUMN_MISSING"), department); //$NON-NLS-1$
info(region + ", " + department); //$NON-NLS-1$
row = resultSet.next();
}
} finally {
if (resultSet != null) {
resultSet.closeConnection();
}
}
finishTest();
}*/
public static void main(String[] args) {
RulesTest test = new RulesTest();
test.setUp();
try {
test.testScriptRule();
test.testScriptRuleError1();
test.testScriptRuleError2();
test.testScriptRuleError3();
test.testScriptRuleError4();
test.testScriptCompoundResult();
// test.testQueryRule();
// test.testQueryRule2();
} finally {
test.tearDown();
BaseTest.shutdown();
}
}
}