Program: 68579
Project: 68579
Buggy source:
/** 
 * Structure: root rootproperty1 --> is DataType; SDOString  <---> value: "test" rootproperty2 --> not DataType            <---> value: containedDataObject root's child: containedDataObject1 contained1Property1 --> not DataType; bidirectional   <---> value: containedByContainedDataObject containedDataObject containedProperty1  --> is DataType; SDOString  <---> value: "test1" containedProperty2  --> not DataType            <---> value: containedByContainedDataObject containedProperty_ChangeSummary  --> not DataType  <---> value: chSum(ChangeSummary) containedDataObject's child: containedByContainedDataObject containedByContainedProperty1  --> not DataType; bidirectional   <---> value: containedDataObject1 Covered test cases: Test Case 1: copied root's DataType property rootproperty1 has same value Test Case 2: copied root's not DataType property rootproperty2 has a copied DataObject from containedDataObject Test Case 3: there exists dataobject's bidirectional not containment property has another DataObject as value Test Case 4: there exists dataobject's unidirectional not containment property has another DataObject as value Test Case 5: there exists dataobject's not containment property has another DataObject that is not in containment tree as value Test Case 6: copied containedProperty's ChangeSummary Type property containedProperty_ChangeSummary has a copied ChangeSummary from source's ChangeSummary chSum
 */
public void setUp(){
  super.setUp();
  rootType=new SDOType(rootTypeUri,rootTypeName);
  rootProperty1=new SDOProperty(aHelperContext);
  rootProperty1.setName("String_Node_Str");
  SDOType rootProperty1_type=SDOConstants.SDO_STRING;
  rootProperty1_type.setDataType(true);
  rootProperty1.setType(rootProperty1_type);
  rootType.addDeclaredProperty((Property)rootProperty1);
  rootProperty2=new SDOProperty(aHelperContext);
  rootProperty2.setName("String_Node_Str");
  rootProperty2.setContainment(true);
  SDOType rootProperty2_type=new SDOType("String_Node_Str","String_Node_Str");
  rootProperty2_type.setDataType(false);
  rootProperty2.setType(rootProperty2_type);
  rootType.addDeclaredProperty((Property)rootProperty2);
  rootProperty3=new SDOProperty(aHelperContext);
  rootProperty3.setName("String_Node_Str");
  rootProperty3.setContainment(true);
  SDOType rootProperty3_type=new SDOType("String_Node_Str","String_Node_Str");
  rootProperty3_type.setDataType(false);
  rootProperty3.setType(rootProperty3_type);
  rootType.addDeclaredProperty((Property)rootProperty3);
  rootProperty4=new SDOProperty(aHelperContext);
  rootProperty4.setName("String_Node_Str");
  rootProperty4.setContainment(true);
  rootProperty4.setMany(true);
  SDOType rootProperty4_type=new SDOType("String_Node_Str","String_Node_Str");
  rootProperty4_type.setDataType(false);
  rootProperty4.setType(rootProperty4_type);
  rootType.addDeclaredProperty((Property)rootProperty4);
  SDOProperty rootProperty_NotContainment=new SDOProperty(aHelperContext);
  rootProperty_NotContainment.setContainment(false);
  SDOType rootProperty_NotContainment_type=new SDOType("String_Node_Str","String_Node_Str");
  rootProperty_NotContainment_type.setDataType(false);
  rootProperty_NotContainment.setType(rootProperty_NotContainment_type);
  rootProperty_NotContainment.setName("String_Node_Str");
  rootType.addDeclaredProperty(rootProperty_NotContainment);
  contained1Property3=new SDOProperty(aHelperContext);
  contained1Property3.setName("String_Node_Str");
  contained1Property3.setContainment(false);
  SDOType contained1Property3_type=new SDOType("String_Node_Str","String_Node_Str");
  contained1Property3_type.setDataType(false);
  contained1Property3.setType(contained1Property3_type);
  objects=new ArrayList();
  SDOType obj1Type=new SDOType("String_Node_Str","String_Node_Str");
  SDOProperty obj1Property=new SDOProperty(aHelperContext);
  obj1Property.setName("String_Node_Str");
  SDOType obj1PropertyType=SDOConstants.SDO_STRING;
  obj1PropertyType.setDataType(true);
  obj1Property.setType(obj1PropertyType);
  obj1Property.setContainment(false);
  obj1Type.addDeclaredProperty(obj1Property);
  SDODataObject obj1=(SDODataObject)dataFactory.create(obj1Type);
  objects.add(obj1);
  obj1.set(obj1Property,"String_Node_Str");
  containedType=new SDOType(containedTypeUri,containedTypeName);
  containedProperty1=new SDOProperty(aHelperContext);
  containedProperty1.setName("String_Node_Str");
  SDOType containedProperty1_type=SDOConstants.SDO_STRING;
  containedProperty1_type.setDataType(true);
  containedProperty1.setType(containedProperty1_type);
  containedType.addDeclaredProperty(containedProperty1);
  containedProperty2=new SDOProperty(aHelperContext);
  containedProperty2.setName("String_Node_Str");
  containedProperty2.setContainment(true);
  SDOType containedProperty2_type=new SDOType("String_Node_Str","String_Node_Str");
  containedProperty2_type.setDataType(false);
  containedProperty2.setType(containedProperty2_type);
  containedType.addDeclaredProperty(containedProperty2);
  containedProperty3=new SDOProperty(aHelperContext);
  containedProperty3.setName("String_Node_Str");
  containedProperty3.setContainment(true);
  SDOType containedProperty3_type=new SDOType("String_Node_Str","String_Node_Str");
  containedProperty3_type.setDataType(false);
  containedProperty3.setType(containedProperty3_type);
  containedType.addDeclaredProperty(containedProperty3);
  containedProperty_ChangeSummary=new SDOProperty(aHelperContext);
  containedProperty_ChangeSummary.setContainment(false);
  containedProperty_ChangeSummary.setType(SDOConstants.SDO_CHANGESUMMARY);
  containedProperty_ChangeSummary.setName("String_Node_Str");
  containedType.addDeclaredProperty((Property)containedProperty_ChangeSummary);
  containedDataObject=(SDODataObject)dataFactory.create(containedType);
  containedDataObject.getChangeSummary().beginLogging();
  containedType1=new SDOType(containedType1Uri,containedType1Name);
  contained1Property1=new SDOProperty(aHelperContext);
  contained1Property1.setName("String_Node_Str");
  contained1Property1.setContainment(false);
  SDOType contained1Property1_type=new SDOType("String_Node_Str","String_Node_Str");
  contained1Property1_type.setDataType(false);
  contained1Property1.setType(contained1Property1_type);
  contained1Property1.setOpposite(containedByContainedProperty1);
  containedType1.addDeclaredProperty(contained1Property1);
  containedDataObject1=(SDODataObject)dataFactory.create(containedType1);
  containedByContainedType=new SDOType(containedBycontainedType1Uri,containedByContainedTypeName);
  containedByContainedProperty1=new SDOProperty(aHelperContext);
  containedByContainedProperty1.setName("String_Node_Str");
  containedByContainedProperty1.setContainment(false);
  SDOType containedByContainedProperty1_type=new SDOType("String_Node_Str","String_Node_Str");
  containedByContainedProperty1_type.setDataType(false);
  containedByContainedProperty1.setType(containedByContainedProperty1_type);
  containedByContainedProperty1.setOpposite(contained1Property1);
  containedByContainedType.addDeclaredProperty(containedByContainedProperty1);
  contained1Property1.setOpposite(containedByContainedProperty1);
  containedByContainedProperty2=new SDOProperty(aHelperContext);
  containedByContainedProperty2.setName("String_Node_Str");
  containedByContainedProperty2.setContainment(false);
  SDOType containedByContainedProperty2_type=new SDOType("String_Node_Str","String_Node_Str");
  containedByContainedProperty2_type.setDataType(false);
  containedByContainedProperty2.setType(containedByContainedProperty2_type);
  containedByContainedType.addDeclaredProperty(containedByContainedProperty2);
  containedByContainedDataObject=(SDODataObject)dataFactory.create(containedByContainedType);
  root=(SDODataObject)dataFactory.create(rootType);
  root.set(rootProperty1,"String_Node_Str");
  root.set(rootProperty2,containedDataObject);
  root.set(rootProperty3,containedDataObject1);
  root.set(rootProperty4,objects);
  containedDataObject.set(containedProperty1,"String_Node_Str");
  containedDataObject.set(containedProperty2,containedByContainedDataObject);
  containedDataObject1.set(contained1Property1,containedByContainedDataObject);
  containedByContainedDataObject.set(containedByContainedProperty1,containedDataObject1);
}

Fixed version (ground truth):
/** 
 * Structure: root rootproperty1 --> is DataType; SDOString  <---> value: "test" rootproperty2 --> not DataType            <---> value: containedDataObject root's child: containedDataObject1 contained1Property1 --> not DataType; bidirectional   <---> value: containedByContainedDataObject containedDataObject containedProperty1  --> is DataType; SDOString  <---> value: "test1" containedProperty2  --> not DataType            <---> value: containedByContainedDataObject containedProperty_ChangeSummary  --> not DataType  <---> value: chSum(ChangeSummary) containedDataObject's child: containedByContainedDataObject containedByContainedProperty1  --> not DataType; bidirectional   <---> value: containedDataObject1 Covered test cases: Test Case 1: copied root's DataType property rootproperty1 has same value Test Case 2: copied root's not DataType property rootproperty2 has a copied DataObject from containedDataObject Test Case 3: there exists dataobject's bidirectional not containment property has another DataObject as value Test Case 4: there exists dataobject's unidirectional not containment property has another DataObject as value Test Case 5: there exists dataobject's not containment property has another DataObject that is not in containment tree as value Test Case 6: copied containedProperty's ChangeSummary Type property containedProperty_ChangeSummary has a copied ChangeSummary from source's ChangeSummary chSum
 */
public void setUp(){
  super.setUp();
  SDOType changeSummaryType=(SDOType)aHelperContext.getTypeHelper().getType(SDOConstants.SDO_URL,SDOConstants.CHANGESUMMARY);
  rootType=new SDOType(rootTypeUri,rootTypeName);
  rootProperty1=new SDOProperty(aHelperContext);
  rootProperty1.setName("String_Node_Str");
  SDOType rootProperty1_type=SDOConstants.SDO_STRING;
  rootProperty1_type.setDataType(true);
  rootProperty1.setType(rootProperty1_type);
  rootType.addDeclaredProperty((Property)rootProperty1);
  rootProperty2=new SDOProperty(aHelperContext);
  rootProperty2.setName("String_Node_Str");
  rootProperty2.setContainment(true);
  SDOType rootProperty2_type=new SDOType("String_Node_Str","String_Node_Str");
  rootProperty2_type.setDataType(false);
  rootProperty2.setType(rootProperty2_type);
  rootType.addDeclaredProperty((Property)rootProperty2);
  rootProperty3=new SDOProperty(aHelperContext);
  rootProperty3.setName("String_Node_Str");
  rootProperty3.setContainment(true);
  SDOType rootProperty3_type=new SDOType("String_Node_Str","String_Node_Str");
  rootProperty3_type.setDataType(false);
  rootProperty3.setType(rootProperty3_type);
  rootType.addDeclaredProperty((Property)rootProperty3);
  rootProperty4=new SDOProperty(aHelperContext);
  rootProperty4.setName("String_Node_Str");
  rootProperty4.setContainment(true);
  rootProperty4.setMany(true);
  SDOType rootProperty4_type=new SDOType("String_Node_Str","String_Node_Str");
  rootProperty4_type.setDataType(false);
  rootProperty4.setType(rootProperty4_type);
  rootType.addDeclaredProperty((Property)rootProperty4);
  SDOProperty rootProperty_NotContainment=new SDOProperty(aHelperContext);
  rootProperty_NotContainment.setContainment(false);
  SDOType rootProperty_NotContainment_type=new SDOType("String_Node_Str","String_Node_Str");
  rootProperty_NotContainment_type.setDataType(false);
  rootProperty_NotContainment.setType(rootProperty_NotContainment_type);
  rootProperty_NotContainment.setName("String_Node_Str");
  rootType.addDeclaredProperty(rootProperty_NotContainment);
  contained1Property3=new SDOProperty(aHelperContext);
  contained1Property3.setName("String_Node_Str");
  contained1Property3.setContainment(false);
  SDOType contained1Property3_type=new SDOType("String_Node_Str","String_Node_Str");
  contained1Property3_type.setDataType(false);
  contained1Property3.setType(contained1Property3_type);
  objects=new ArrayList();
  SDOType obj1Type=new SDOType("String_Node_Str","String_Node_Str");
  SDOProperty obj1Property=new SDOProperty(aHelperContext);
  obj1Property.setName("String_Node_Str");
  SDOType obj1PropertyType=SDOConstants.SDO_STRING;
  obj1PropertyType.setDataType(true);
  obj1Property.setType(obj1PropertyType);
  obj1Property.setContainment(false);
  obj1Type.addDeclaredProperty(obj1Property);
  SDODataObject obj1=(SDODataObject)dataFactory.create(obj1Type);
  objects.add(obj1);
  obj1.set(obj1Property,"String_Node_Str");
  containedType=new SDOType(containedTypeUri,containedTypeName);
  containedProperty1=new SDOProperty(aHelperContext);
  containedProperty1.setName("String_Node_Str");
  SDOType containedProperty1_type=SDOConstants.SDO_STRING;
  containedProperty1_type.setDataType(true);
  containedProperty1.setType(containedProperty1_type);
  containedType.addDeclaredProperty(containedProperty1);
  containedProperty2=new SDOProperty(aHelperContext);
  containedProperty2.setName("String_Node_Str");
  containedProperty2.setContainment(true);
  SDOType containedProperty2_type=new SDOType("String_Node_Str","String_Node_Str");
  containedProperty2_type.setDataType(false);
  containedProperty2.setType(containedProperty2_type);
  containedType.addDeclaredProperty(containedProperty2);
  containedProperty3=new SDOProperty(aHelperContext);
  containedProperty3.setName("String_Node_Str");
  containedProperty3.setContainment(true);
  SDOType containedProperty3_type=new SDOType("String_Node_Str","String_Node_Str");
  containedProperty3_type.setDataType(false);
  containedProperty3.setType(containedProperty3_type);
  containedType.addDeclaredProperty(containedProperty3);
  containedProperty_ChangeSummary=new SDOProperty(aHelperContext);
  containedProperty_ChangeSummary.setContainment(false);
  containedProperty_ChangeSummary.setType(changeSummaryType);
  containedProperty_ChangeSummary.setName("String_Node_Str");
  containedType.addDeclaredProperty((Property)containedProperty_ChangeSummary);
  containedDataObject=(SDODataObject)dataFactory.create(containedType);
  containedDataObject.getChangeSummary().beginLogging();
  containedType1=new SDOType(containedType1Uri,containedType1Name);
  contained1Property1=new SDOProperty(aHelperContext);
  contained1Property1.setName("String_Node_Str");
  contained1Property1.setContainment(false);
  SDOType contained1Property1_type=new SDOType("String_Node_Str","String_Node_Str");
  contained1Property1_type.setDataType(false);
  contained1Property1.setType(contained1Property1_type);
  contained1Property1.setOpposite(containedByContainedProperty1);
  containedType1.addDeclaredProperty(contained1Property1);
  containedDataObject1=(SDODataObject)dataFactory.create(containedType1);
  containedByContainedType=new SDOType(containedBycontainedType1Uri,containedByContainedTypeName);
  containedByContainedProperty1=new SDOProperty(aHelperContext);
  containedByContainedProperty1.setName("String_Node_Str");
  containedByContainedProperty1.setContainment(false);
  SDOType containedByContainedProperty1_type=new SDOType("String_Node_Str","String_Node_Str");
  containedByContainedProperty1_type.setDataType(false);
  containedByContainedProperty1.setType(containedByContainedProperty1_type);
  containedByContainedProperty1.setOpposite(contained1Property1);
  containedByContainedType.addDeclaredProperty(containedByContainedProperty1);
  contained1Property1.setOpposite(containedByContainedProperty1);
  containedByContainedProperty2=new SDOProperty(aHelperContext);
  containedByContainedProperty2.setName("String_Node_Str");
  containedByContainedProperty2.setContainment(false);
  SDOType containedByContainedProperty2_type=new SDOType("String_Node_Str","String_Node_Str");
  containedByContainedProperty2_type.setDataType(false);
  containedByContainedProperty2.setType(containedByContainedProperty2_type);
  containedByContainedType.addDeclaredProperty(containedByContainedProperty2);
  containedByContainedDataObject=(SDODataObject)dataFactory.create(containedByContainedType);
  root=(SDODataObject)dataFactory.create(rootType);
  root.set(rootProperty1,"String_Node_Str");
  root.set(rootProperty2,containedDataObject);
  root.set(rootProperty3,containedDataObject1);
  root.set(rootProperty4,objects);
  containedDataObject.set(containedProperty1,"String_Node_Str");
  containedDataObject.set(containedProperty2,containedByContainedDataObject);
  containedDataObject1.set(contained1Property1,containedByContainedDataObject);
  containedByContainedDataObject.set(containedByContainedProperty1,containedDataObject1);
}