@Test
public void testActionUpdateField() {
RuleModel model = new RuleModel();
model.rhs = new IAction[2];
ActionUpdateField auf0 = new ActionUpdateField();
auf0.variable = "$t0";
ActionFieldValue auf0f0 = new ActionFieldValue( "AUF0F0",
"AUF0F0Value",
SuggestionCompletionEngine.TYPE_STRING );
auf0f0.setNature( BaseSingleFieldConstraint.TYPE_LITERAL );
auf0.addFieldValue( auf0f0 );
ActionFieldValue auf0f1 = new ActionFieldValue( "AUF0F1",
"AUF0F1Value",
SuggestionCompletionEngine.TYPE_STRING );
auf0f0.setNature( BaseSingleFieldConstraint.TYPE_LITERAL );
auf0.addFieldValue( auf0f1 );
model.rhs[0] = auf0;
ActionUpdateField auf1 = new ActionUpdateField();
auf1.variable = "$t1";
ActionFieldValue auf1f0 = new ActionFieldValue( "AUF1F0",
"AUF1F0Value",
SuggestionCompletionEngine.TYPE_STRING );
auf1f0.setNature( BaseSingleFieldConstraint.TYPE_LITERAL );
auf1.addFieldValue( auf1f0 );
ActionFieldValue auf1f1 = new ActionFieldValue( "AUF1F1",
"AUF1F1Value",
SuggestionCompletionEngine.TYPE_STRING );
auf1f1.setNature( BaseSingleFieldConstraint.TYPE_LITERAL );
auf1.addFieldValue( auf1f1 );
model.rhs[1] = auf1;
RuleModelCloneVisitor cloneVisitor = new RuleModelCloneVisitor();
RuleModel clone = cloneVisitor.visitRuleModel( model );
assertEquals( 2,
clone.rhs.length );
assertNotSame( model.rhs[0],
clone.rhs[0] );
assertNotNull( clone.rhs[0] );
assertTrue( clone.rhs[0] instanceof ActionUpdateField );
ActionUpdateField auf0Clone = (ActionUpdateField) clone.rhs[0];
assertEquals( "$t0",
auf0Clone.variable );
assertEquals( 2,
auf0Clone.fieldValues.length );
assertNotSame( auf0.fieldValues[0],
auf0Clone.fieldValues[0] );
assertNotNull( auf0Clone.fieldValues[0] );
assertTrue( auf0Clone.fieldValues[0] instanceof ActionFieldValue );
ActionFieldValue auf0f0Clone = (ActionFieldValue) auf0Clone.fieldValues[0];
assertEquals( auf0f0.field,
auf0f0Clone.field );
assertEquals( auf0f0.nature,
auf0f0Clone.nature );
assertEquals( auf0f0.type,
auf0f0Clone.type );
assertEquals( auf0f0.value,
auf0f0Clone.value );
assertNotSame( auf0.fieldValues[1],
auf0Clone.fieldValues[1] );
assertNotNull( auf0Clone.fieldValues[1] );
assertTrue( auf0Clone.fieldValues[1] instanceof ActionFieldValue );
ActionFieldValue auf0f1Clone = (ActionFieldValue) auf0Clone.fieldValues[1];
assertEquals( auf0f1.field,
auf0f1Clone.field );
assertEquals( auf0f1.nature,
auf0f1Clone.nature );
assertEquals( auf0f1.type,
auf0f1Clone.type );
assertEquals( auf0f1.value,
auf0f1Clone.value );
assertNotSame( model.rhs[1],
clone.rhs[1] );
assertNotNull( clone.rhs[1] );
assertTrue( clone.rhs[1] instanceof ActionUpdateField );
ActionUpdateField auf1Clone = (ActionUpdateField) clone.rhs[1];
assertEquals( "$t1",
auf1Clone.variable );
assertEquals( 2,
auf1Clone.fieldValues.length );