/*
* SmartGWT (GWT for SmartClient)
* Copyright 2008 and beyond, Isomorphic Software, Inc.
*
* SmartGWT is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3
* as published by the Free Software Foundation. SmartGWT is also
* available under typical commercial license terms - see
* http://smartclient.com/license
*
* This software 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.
*/
package com.smartgwt.client.util.workflow;
import java.util.LinkedHashMap;
import com.smartgwt.client.SmartGWTTestCase;
import com.smartgwt.client.data.AdvancedCriteria;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.Criterion;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.types.OperatorId;
/**
* Test for DecisionGateway workflow process element.
*/
public class DecisionGatewayElementTestCase extends SmartGWTTestCase {
/**
* DecisionGateway: check basic logic functionality.
*/
public void testBasic(){
ScriptTask aTask = new ScriptTask("a") {
public Object execute(Object input, Record inputRecord) {
return "a";
};
};
aTask.setOutputField("result");
ScriptTask bTask = new ScriptTask("b") {
public Object execute(Object input, Record inputRecord) {
return "b";
};
};
bTask.setOutputField("result");
ScriptTask cTask = new ScriptTask("c") {
public Object execute(Object input, Record inputRecord) {
return "c";
};
};
cTask.setOutputField("result");
ScriptTask dTask = new ScriptTask("d") {
public Object execute(Object input, Record inputRecord) {
return "d";
};
};
dTask.setOutputField("result");
DecisionGateway decisionElement = new DecisionGateway("decision");
LinkedHashMap<String, Criteria> decisionMap = new LinkedHashMap<String, Criteria>();
decisionMap.put("a", new AdvancedCriteria(OperatorId.AND, new Criterion[]{
new Criterion("population", OperatorId.GREATER_THAN, 1000),
new Criterion("population", OperatorId.LESS_THAN, 10000000)
}));
decisionMap.put("b", new AdvancedCriteria(OperatorId.AND, new Criterion[]{
new Criterion("population", OperatorId.GREATER_THAN, 10000000),
new Criterion("population", OperatorId.LESS_THAN, 15000000)
}));
decisionMap.put("d", new AdvancedCriteria(OperatorId.AND, new Criterion[]{
new Criterion("population", OperatorId.GREATER_THAN, 20000000),
new Criterion("population", OperatorId.LESS_THAN, 25000000)
}));
decisionMap.put("defaultDecision", new AdvancedCriteria(OperatorId.AND,
new Criterion[]{
new Criterion("population", OperatorId.GREATER_THAN, 25000000),
new Criterion("population", OperatorId.LESS_THAN, 30000000)
}));
decisionElement.setCriteriaMap(decisionMap);
decisionElement.setDefaultElement("c");
DecisionGateway defaultDecision = new DecisionGateway("defaultDecision");
defaultDecision.setDefaultElement("d");
LinkedHashMap<String, Criteria> defaultDecisionMap =
new LinkedHashMap<String, Criteria>();
defaultDecisionMap.put("a", new Criteria("countryCode", "AA"));
defaultDecisionMap.put("b", new Criteria("countryCode", "BB"));
defaultDecisionMap.put("c", new Criteria("countryCode", "CC"));
decisionElement.setCriteriaMap(defaultDecisionMap);
com.smartgwt.client.util.workflow.Process process =
new com.smartgwt.client.util.workflow.Process() {
public void finished(Record state) {
};
};
process.setStartElement("decision");
process.setElements(defaultDecision, decisionElement, aTask, bTask, cTask, dTask);
Record state = new Record();
state.setAttribute("countryCode", "CA");
state.setAttribute("population", 28820671);
process.setState(state);
process.start();
assertEquals("d", state.getAttribute("result"));
}
}