public class GuidedDecisionTableTest {
@Test
public void testValueLists() {
GuidedDecisionTable52 dt = new GuidedDecisionTable52();
// add cols for LHS
ConditionCol52 c1 = new ConditionCol52();
Pattern52 p1 = new Pattern52();
p1.setBoundName( "c1" );
p1.setFactType( "Driver" );
c1.setFactField( "name" );
c1.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL );
p1.getChildColumns().add( c1 );
dt.getConditions().add( p1 );
ConditionCol52 c1_ = new ConditionCol52();
Pattern52 p1_ = new Pattern52();
p1_.setBoundName( "c1" );
p1_.setFactType( "Driver" );
c1_.setFactField( "name" );
p1_.getChildColumns().add( c1_ );
c1_.setConstraintValueType( BaseSingleFieldConstraint.TYPE_RET_VALUE );
dt.getConditions().add( p1_ );
ConditionCol52 c1__ = new ConditionCol52();
c1__.setFactField( "sex" );
p1_.getChildColumns().add( c1__ );
c1__.setConstraintValueType( BaseSingleFieldConstraint.TYPE_RET_VALUE );
c1__.setValueList( "Male,Female" );
dt.getConditions().add( p1_ );
ConditionCol52 c1___ = new ConditionCol52();
Pattern52 p1__ = new Pattern52();
p1__.setBoundName( "c1" );
p1__.setFactType( "Driver" );
c1___.setFactField( "name" );
c1___.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL );
c1___.setValueList( "one,two,three" );
p1__.getChildColumns().add( c1___ );
dt.getConditions().add( p1__ );
ConditionCol52 c2 = new ConditionCol52();
Pattern52 p2 = new Pattern52();
p2.setBoundName( "c2" );
p2.setFactType( "Driver" );
c2.setFactField( "nothing" );
c2.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL );
p2.getChildColumns().add( c2 );
dt.getConditions().add( p2 );
ActionSetFieldCol52 asf = new ActionSetFieldCol52();
asf.setBoundName( "c1" );
asf.setFactField( "name" );
dt.getActionCols().add( asf );
ActionInsertFactCol52 ins = new ActionInsertFactCol52();
ins.setBoundName( "x" );
ins.setFactField( "rating" );
ins.setFactType( "Person" );
dt.getActionCols().add( ins );
ActionInsertFactCol52 ins_ = new ActionInsertFactCol52();
ins_.setBoundName( "x" );
ins_.setFactField( "rating" );
ins_.setFactType( "Person" );
ins_.setValueList( "one,two,three" );
dt.getActionCols().add( ins_ );
ActionSetFieldCol52 asf_ = new ActionSetFieldCol52();
asf_.setBoundName( "c1" );
asf_.setFactField( "goo" );
dt.getActionCols().add( asf_ );
ActionSetFieldCol52 asf__ = new ActionSetFieldCol52();
asf__.setBoundName( "c1" );
asf__.setFactField( "goo" );
asf__.setValueList( "one,two,three" );
dt.getActionCols().add( asf__ );
SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
sce.putDataEnumList( "Driver.name",
new String[]{"bob", "michael"} );
sce.putDataEnumList( "Person.rating",
new String[]{"1", "2"} );
String[] r = dt.getValueList( c1,
sce );
assertEquals( 2,
r.length );
assertEquals( "bob",
r[0] );
assertEquals( "michael",
r[1] );
r = dt.getValueList( c1_,
sce );
assertEquals( 2,
r.length );
assertEquals( "bob",
r[0] );
assertEquals( "michael",
r[1] );
r = dt.getValueList( c1__,
sce );
assertEquals( 2,
r.length );
assertEquals( "Male",
r[0] );
assertEquals( "Female",
r[1] );
r = dt.getValueList( c1___,
sce );
assertEquals( 3,
r.length );
assertEquals( "one",
r[0] );
assertEquals( "two",
r[1] );
assertEquals( "three",
r[2] );
assertEquals( 0,
dt.getValueList( c2,
sce ).length );
r = dt.getValueList( asf,
sce );
assertEquals( 2,
r.length );
assertEquals( "bob",
r[0] );
assertEquals( "michael",
r[1] );
r = dt.getValueList( ins,
sce );
assertEquals( 2,
r.length );
assertEquals( "1",
r[0] );
assertEquals( "2",
r[1] );
r = dt.getValueList( ins_,
sce );
assertEquals( 3,
r.length );
assertEquals( "one",
r[0] );
assertEquals( "two",
r[1] );
assertEquals( "three",
r[2] );
assertEquals( 0,
dt.getValueList( asf_,
sce ).length );
r = dt.getValueList( asf__,
sce );
assertEquals( 3,
r.length );
assertEquals( "one",
r[0] );
assertEquals( "two",
r[1] );
assertEquals( "three",
r[2] );
AttributeCol52 at = new AttributeCol52();
at.setAttribute( "no-loop" );
dt.getAttributeCols().add( at );
r = dt.getValueList( at,
sce );
assertEquals( 2,
r.length );
assertEquals( "true",
r[0] );
assertEquals( "false",
r[1] );
at.setAttribute( "enabled" );
assertEquals( 2,
dt.getValueList( at,
sce ).length );
at.setAttribute( "salience" );
assertEquals( 0,
dt.getValueList( at,
sce ).length );
}