final GuidedDecisionTree expected = new GuidedDecisionTree();
expected.setTreeName( "test" );
final TypeNode type1 = new TypeNodeImpl( "Person" );
final ConstraintNode c1a = new ConstraintNodeImpl( "Person",
"name",
"==",
new StringValue( "Michael" ) );
final ConstraintNode c1b = new ConstraintNodeImpl( "Person",
"name",
"==",
new StringValue( "Fred" ) );
final TypeNode type2 = new TypeNodeImpl( "Address" );
final ConstraintNode c2a = new ConstraintNodeImpl( "Address",
"country",
"==",
new StringValue( "England" ) );
final ConstraintNode c2b = new ConstraintNodeImpl( "Address",
"country",
"==",
new StringValue( "Norway" ) );
expected.setRoot( type1 );
type1.addChild( c1a );
type1.addChild( c1b );
c1a.addChild( type2 );
type2.addChild( c2a );
type2.addChild( c2b );
addModelField( "Person",
"this",
"Person",
DataType.TYPE_THIS );
addModelField( "Person",
"name",
String.class.getName(),
DataType.TYPE_STRING );
addModelField( "Address",
"this",
"Address",
DataType.TYPE_THIS );
addModelField( "Address",
"country",
String.class.getName(),
DataType.TYPE_STRING );
final GuidedDecisionTree model = GuidedDecisionTreeDRLPersistence.getInstance().unmarshal( drl,
"test",
dmo );
assertNotNull( model );
assertEquals( 0,
model.getParserErrors().size() );
assertEquals( expected.getTreeName(),
model.getTreeName() );
assertNotNull( model.getRoot() );
final TypeNode _t1 = model.getRoot();
assertEquals( type1.getClassName(),
_t1.getClassName() );
assertFalse( _t1.isBound() );
assertEquals( 2,
_t1.getChildren().size() );
assertNotNull( _t1.getChildren().get( 0 ) );
assertTrue( _t1.getChildren().get( 0 ) instanceof ConstraintNode );
final ConstraintNode _c1a = (ConstraintNode) _t1.getChildren().get( 0 );
assertEquals( c1a.getClassName(),
_c1a.getClassName() );
assertEquals( c1a.getFieldName(),
_c1a.getFieldName() );
assertEquals( c1a.getOperator(),
_c1a.getOperator() );
assertEquals( c1a.getValue().getValue().toString(),
_c1a.getValue().getValue().toString() );
assertNotNull( _t1.getChildren().get( 1 ) );
assertTrue( _t1.getChildren().get( 1 ) instanceof ConstraintNode );
final ConstraintNode _c1b = (ConstraintNode) _t1.getChildren().get( 1 );
assertEquals( c1b.getClassName(),
_c1b.getClassName() );
assertEquals( c1b.getFieldName(),
_c1b.getFieldName() );
assertEquals( c1b.getOperator(),
_c1b.getOperator() );
assertEquals( c1b.getValue().getValue().toString(),
_c1b.getValue().getValue().toString() );
assertEquals( 1,
_c1a.getChildren().size() );
assertNotNull( _c1a.getChildren().get( 0 ) );
assertTrue( _c1a.getChildren().get( 0 ) instanceof TypeNode );
final TypeNode _t2 = (TypeNode) _c1a.getChildren().get( 0 );
assertEquals( type2.getClassName(),
_t2.getClassName() );
assertFalse( _t2.isBound() );
assertEquals( 2,
_t2.getChildren().size() );
assertNotNull( _t2.getChildren().get( 0 ) );
assertTrue( _t2.getChildren().get( 0 ) instanceof ConstraintNode );
final ConstraintNode _c2a = (ConstraintNode) _t2.getChildren().get( 0 );
assertEquals( c2a.getClassName(),
_c2a.getClassName() );
assertEquals( c2a.getFieldName(),
_c2a.getFieldName() );
assertEquals( c2a.getOperator(),
_c2a.getOperator() );
assertEquals( c2a.getValue().getValue().toString(),
_c2a.getValue().getValue().toString() );
assertNotNull( _t2.getChildren().get( 1 ) );
assertTrue( _t2.getChildren().get( 1 ) instanceof ConstraintNode );
final ConstraintNode _c2b = (ConstraintNode) _t2.getChildren().get( 1 );
assertEquals( c2b.getClassName(),
_c2b.getClassName() );
assertEquals( c2b.getFieldName(),
_c2b.getFieldName() );
assertEquals( c2b.getOperator(),
_c2b.getOperator() );
assertEquals( c2b.getValue().getValue().toString(),
_c2b.getValue().getValue().toString() );
assertEquals( 0,
_c2a.getChildren().size() );
assertEquals( 0,
_c2b.getChildren().size() );
}