@Test public void testLimitedEntryAttributes() { GuidedDecisionTable52 dt = new GuidedDecisionTable52(); dt.setTableFormat( TableFormat.LIMITED_ENTRY ); dt.setTableName( "limited-entry" ); AttributeCol52 attr = new AttributeCol52(); attr.setAttribute( "salience" ); dt.getAttributeCols().add( attr ); dt.setData( upgrader.makeDataLists( new String[][]{ new String[]{"1", "desc", "100"}, new String[]{"2", "desc", "200"} } ) ); GuidedDTDRLPersistence p = GuidedDTDRLPersistence.getInstance(); String drl = p.marshal( dt ); assertTrue( drl.indexOf( "salience 100" ) > -1 ); assertTrue( drl.indexOf( "salience 200" ) > -1 ); }
@Test public void testLimitedEntryMetadata() { GuidedDecisionTable52 dt = new GuidedDecisionTable52(); dt.setTableFormat( TableFormat.LIMITED_ENTRY ); dt.setTableName( "limited-entry" ); MetadataCol52 md = new MetadataCol52(); md.setMetadata( "metadata" ); dt.getMetadataCols().add( md ); dt.setData( upgrader.makeDataLists( new String[][]{ new String[]{"1", "desc", "md1"}, new String[]{"2", "desc", "md2"} } ) ); GuidedDTDRLPersistence p = GuidedDTDRLPersistence.getInstance(); String drl = p.marshal( dt ); assertTrue( drl.indexOf( "@metadata(md1)" ) > -1 ); assertTrue( drl.indexOf( "@metadata(md2)" ) > -1 ); }
@Test public void testNoConstraints() { GuidedDecisionTable52 dt = new GuidedDecisionTable52(); Pattern52 p1 = new Pattern52(); p1.setBoundName( "x" ); p1.setFactType( "Context" ); ConditionCol52 c = new ConditionCol52(); c.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL ); p1.getChildColumns().add( c ); dt.getConditions().add( p1 ); ActionSetFieldCol52 asf = new ActionSetFieldCol52(); asf.setBoundName( "x" ); asf.setFactField( "age" ); asf.setType( SuggestionCompletionEngine.TYPE_STRING ); dt.getActionCols().add( asf ); String[][] data = new String[][]{ new String[]{"1", "desc", "y", "old"} }; dt.setData( upgrader.makeDataLists( data ) ); String drl = GuidedDTDRLPersistence.getInstance().marshal( dt ); assertTrue( drl.indexOf( "Context( )" ) > -1 ); assertTrue( drl.indexOf( "x.setAge" ) > drl.indexOf( "Context( )" ) ); assertFalse( drl.indexOf( "update( x );" ) > -1 ); dt.setData( upgrader.makeDataLists( new String[][]{ new String[]{"1", "desc", "", "old"} } ) ); drl = GuidedDTDRLPersistence.getInstance().marshal( dt ); assertEquals( -1, drl.indexOf( "Context( )" ) ); }
dt.getConditions().add( p ); dt.setData( upgrader.makeDataLists( new String[][]{new String[]{"1", "hola"}} ) ); dt.setTableName( "blah" );
dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true}, new Object[]{2l, "desc", false}
@Test public void testLimitedEntryConditionsNoConstraints() { GuidedDecisionTable52 dt = new GuidedDecisionTable52(); dt.setTableFormat( TableFormat.LIMITED_ENTRY ); dt.setTableName( "limited-entry" ); Pattern52 p1 = new Pattern52(); p1.setBoundName( "p1" ); p1.setFactType( "Smurf" ); dt.getConditions().add( p1 ); // This is a hack consistent with how the Expanded Form decision table // works. I wouldn't be too surprised if this changes at some time, but // GuidedDTDRLPersistence.marshal does not support empty patterns at // present. LimitedEntryConditionCol52 cc1 = new LimitedEntryConditionCol52(); cc1.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL ); cc1.setValue( new DTCellValue52( "y" ) ); p1.getChildColumns().add( cc1 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true}, new Object[]{2l, "desc", false} } ) ); GuidedDTDRLPersistence p = GuidedDTDRLPersistence.getInstance(); String drl = p.marshal( dt ); int index = -1; index = drl.indexOf( "Smurf( )" ); assertTrue( index > -1 ); index = drl.indexOf( "Smurf( )", index + 1 ); assertFalse( index > -1 ); }
@Test public void testLimitedEntryConditionsConstraints1() { GuidedDecisionTable52 dt = new GuidedDecisionTable52(); dt.setTableFormat( TableFormat.LIMITED_ENTRY ); dt.setTableName( "limited-entry" ); Pattern52 p1 = new Pattern52(); p1.setBoundName( "p1" ); p1.setFactType( "Smurf" ); dt.getConditions().add( p1 ); LimitedEntryConditionCol52 cc1 = new LimitedEntryConditionCol52(); cc1.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL ); cc1.setFieldType( SuggestionCompletionEngine.TYPE_STRING ); cc1.setFactField( "name" ); cc1.setOperator( "==" ); cc1.setValue( new DTCellValue52( "Pupa" ) ); p1.getChildColumns().add( cc1 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true}, new Object[]{2l, "desc", false} } ) ); GuidedDTDRLPersistence p = GuidedDTDRLPersistence.getInstance(); String drl = p.marshal( dt ); int index = -1; index = drl.indexOf( "Smurf( name == \"Pupa\" )" ); assertTrue( index > -1 ); index = drl.indexOf( "Smurf( name == \"Pupa\" )", index + 1 ); assertFalse( index > -1 ); }
p1.getChildColumns().add( cc2 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", "Pupa, Brains", "55, 66"}, new Object[]{2l, "desc", "", ""}
p1.getChildColumns().add( cc2 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", "Pupa, Brains", "55, 66"}, new Object[]{2l, "desc", "", ""}
p1.getChildColumns().add( cc3 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true, true, true}, new Object[]{2l, "desc", false, false, false}
p1.getChildColumns().add( cc3 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true, true, true}, new Object[]{2l, "desc", false, false, false}
p1.getChildColumns().add( cc3 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true, true, true}, new Object[]{2l, "desc", false, false, false}
p1.getChildColumns().add( cc3 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true, true, true}, new Object[]{2l, "desc", null, null, null}
p1.getChildColumns().add( cc3 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true, true, true}, new Object[]{2l, "desc", null, null, null}
p1.getChildColumns().add( cc3 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true, true, true}, new Object[]{2l, "desc", null, null, null}
p1.getChildColumns().add( cc3 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true, true, true}, new Object[]{2l, "desc", false, false, false}
p1.getChildColumns().add( cc2 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true, true}, new Object[]{2l, "desc", false, false}
p1.getChildColumns().add( cc2 ); dt.setData( upgrader.makeDataLists( new Object[][]{ new Object[]{1l, "desc", true, true}, new Object[]{2l, "desc", false, false}