Program: 85994
Project: 85994
Buggy source:
@Test public void createComponents(){
  PartIterationDTO data=new PartIterationDTO(ResourceUtil.WORKSPACE_ID,"String_Node_Str","String_Node_Str",1);
  List partUsageLinkDTOs=new ArrayList<PartUsageLinkDTO>();
  PartUsageLinkDTO partUsageLinkDTO=new PartUsageLinkDTO();
  partUsageLinkDTO.setAmount(2);
  partUsageLinkDTO.setUnit("String_Node_Str");
  partUsageLinkDTO.setOptional(true);
  partUsageLinkDTO.setComment("String_Node_Str");
  ComponentDTO componentDTO=new ComponentDTO("String_Node_Str");
  componentDTO.setStandardPart(false);
  partUsageLinkDTO.setComponent(componentDTO);
  List<PartSubstituteLinkDTO> substituteDTOs=new ArrayList<>();
  PartSubstituteLinkDTO substituteLinkDTO=new PartSubstituteLinkDTO();
  substituteLinkDTO.setAmount(3);
  substituteLinkDTO.setUnit("String_Node_Str");
  ComponentDTO subComponentDTO=new ComponentDTO("String_Node_Str");
  substituteLinkDTO.setSubstitute(subComponentDTO);
  List<CADInstanceDTO> cadInstanceDTOs=new ArrayList<CADInstanceDTO>();
  List<CADInstanceDTO> subCadInstanceDTOs=new ArrayList<CADInstanceDTO>();
  cadInstanceDTOs.add(new CADInstanceDTO((Double)12.0,(Double)12.0,(Double)12.0,(Double)62.0,(Double)24.0,(Double)95.0));
  cadInstanceDTOs.add(new CADInstanceDTO((Double)22.0,(Double)12.0,(Double)72.0,(Double)52.0,(Double)14.0,(Double)45.0));
  subCadInstanceDTOs.add(new CADInstanceDTO((Double)10.0,(Double)11.0,(Double)12.0,(Double)13.0,(Double)14.0,(Double)15.0));
  subCadInstanceDTOs.add(new CADInstanceDTO((Double)110.0,(Double)10.0,(Double)10.0,(Double)52.0,(Double)14.0,(Double)45.0));
  subCadInstanceDTOs.add(new CADInstanceDTO((Double)120.0,(Double)10.0,(Double)10.0,(Double)52.0,(Double)14.0,(Double)45.0));
  substituteLinkDTO.setCadInstances(subCadInstanceDTOs);
  substituteDTOs.add(substituteLinkDTO);
  partUsageLinkDTO.setSubstitutes(substituteDTOs);
  partUsageLinkDTO.setCadInstances(cadInstanceDTOs);
  partUsageLinkDTOs.add(partUsageLinkDTO);
  data.setComponents(partUsageLinkDTOs);
  List<PartUsageLink> newComponents=new ArrayList<>();
  try {
    Mockito.when(productService.partMasterExists(Matchers.any(PartMasterKey.class))).thenReturn(false);
    Mockito.when(userManager.checkWorkspaceWriteAccess(ResourceUtil.WORKSPACE_ID)).thenReturn(user);
    Mockito.when(partResource.findOrCreatePartMaster(ResourceUtil.WORKSPACE_ID,componentDTO)).thenReturn(partMaster);
    Mockito.when(partResource.findOrCreatePartMaster(ResourceUtil.WORKSPACE_ID,subComponentDTO)).thenReturn(subPartMaster);
    newComponents=partResource.createComponents(ResourceUtil.WORKSPACE_ID,partUsageLinkDTOs);
  }
 catch (  Exception e) {
    fail("String_Node_Str");
  }
  assertNotNull(newComponents);
  assertTrue(newComponents.size() == 1);
  assertTrue(newComponents.get(0).getCadInstances().size() == 2);
  assertTrue(newComponents.get(0).isOptional());
  assertTrue(newComponents.get(0).getCadInstances().get(0).getRx() == (Double)12.0);
  assertTrue(newComponents.get(0).getCadInstances().get(0).getRy() == (Double)12.0);
  assertTrue(newComponents.get(0).getCadInstances().get(0).getRz() == (Double)12.0);
  assertTrue(newComponents.get(0).getCadInstances().get(0).getTx() == (Double)62.0);
  assertTrue(newComponents.get(0).getCadInstances().get(0).getTy() == (Double)24.0);
  assertTrue(newComponents.get(0).getCadInstances().get(0).getTz() == (Double)95.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getRx() == (Double)22.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getRy() == (Double)12.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getRz() == (Double)72.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getTx() == (Double)52.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getTy() == (Double)14.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getTz() == (Double)45.0);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().size() == 3);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getRx() == 10);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getRy() == 11);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getRz() == 12);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getTx() == 13.0);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getTy() == 14.0);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getTz() == 15.0);
}

Fixed version (ground truth):
@Test public void createComponents(){
  PartIterationDTO data=new PartIterationDTO(ResourceUtil.WORKSPACE_ID,"String_Node_Str","String_Node_Str",1);
  List partUsageLinkDTOs=new ArrayList<PartUsageLinkDTO>();
  PartUsageLinkDTO partUsageLinkDTO=new PartUsageLinkDTO();
  partUsageLinkDTO.setAmount(2);
  partUsageLinkDTO.setUnit("String_Node_Str");
  partUsageLinkDTO.setOptional(true);
  partUsageLinkDTO.setComment("String_Node_Str");
  partUsageLinkDTO.setReferenceDescription("String_Node_Str");
  ComponentDTO componentDTO=new ComponentDTO("String_Node_Str");
  componentDTO.setStandardPart(false);
  partUsageLinkDTO.setComponent(componentDTO);
  List<PartSubstituteLinkDTO> substituteDTOs=new ArrayList<>();
  PartSubstituteLinkDTO substituteLinkDTO=new PartSubstituteLinkDTO();
  substituteLinkDTO.setAmount(3);
  substituteLinkDTO.setUnit("String_Node_Str");
  ComponentDTO subComponentDTO=new ComponentDTO("String_Node_Str");
  substituteLinkDTO.setSubstitute(subComponentDTO);
  List<CADInstanceDTO> cadInstanceDTOs=new ArrayList<CADInstanceDTO>();
  List<CADInstanceDTO> subCadInstanceDTOs=new ArrayList<CADInstanceDTO>();
  cadInstanceDTOs.add(new CADInstanceDTO((Double)12.0,(Double)12.0,(Double)12.0,(Double)62.0,(Double)24.0,(Double)95.0));
  cadInstanceDTOs.add(new CADInstanceDTO((Double)22.0,(Double)12.0,(Double)72.0,(Double)52.0,(Double)14.0,(Double)45.0));
  subCadInstanceDTOs.add(new CADInstanceDTO((Double)10.0,(Double)11.0,(Double)12.0,(Double)13.0,(Double)14.0,(Double)15.0));
  subCadInstanceDTOs.add(new CADInstanceDTO((Double)110.0,(Double)10.0,(Double)10.0,(Double)52.0,(Double)14.0,(Double)45.0));
  subCadInstanceDTOs.add(new CADInstanceDTO((Double)120.0,(Double)10.0,(Double)10.0,(Double)52.0,(Double)14.0,(Double)45.0));
  substituteLinkDTO.setCadInstances(subCadInstanceDTOs);
  substituteDTOs.add(substituteLinkDTO);
  partUsageLinkDTO.setSubstitutes(substituteDTOs);
  partUsageLinkDTO.setCadInstances(cadInstanceDTOs);
  partUsageLinkDTOs.add(partUsageLinkDTO);
  data.setComponents(partUsageLinkDTOs);
  List<PartUsageLink> newComponents=new ArrayList<>();
  try {
    Mockito.when(productService.partMasterExists(Matchers.any(PartMasterKey.class))).thenReturn(false);
    Mockito.when(userManager.checkWorkspaceWriteAccess(ResourceUtil.WORKSPACE_ID)).thenReturn(user);
    Mockito.when(partResource.findOrCreatePartMaster(ResourceUtil.WORKSPACE_ID,componentDTO)).thenReturn(partMaster);
    Mockito.when(partResource.findOrCreatePartMaster(ResourceUtil.WORKSPACE_ID,subComponentDTO)).thenReturn(subPartMaster);
    newComponents=partResource.createComponents(ResourceUtil.WORKSPACE_ID,partUsageLinkDTOs);
  }
 catch (  Exception e) {
    fail("String_Node_Str");
  }
  assertNotNull(newComponents);
  assertTrue(newComponents.size() == 1);
  assertTrue(newComponents.get(0).getReferenceDescription().equals("String_Node_Str"));
  assertTrue(newComponents.get(0).getComponent().getNumber().equals(componentDTO.getNumber()));
  assertTrue(newComponents.get(0).getAmount() == 2);
  assertTrue(newComponents.get(0).getUnit().isEmpty());
  assertTrue(newComponents.get(0).isOptional());
  assertTrue(newComponents.get(0).getCadInstances().size() == 2);
  assertTrue(newComponents.get(0).getCadInstances().get(0).getRx() == (Double)12.0);
  assertTrue(newComponents.get(0).getCadInstances().get(0).getRy() == (Double)12.0);
  assertTrue(newComponents.get(0).getCadInstances().get(0).getRz() == (Double)12.0);
  assertTrue(newComponents.get(0).getCadInstances().get(0).getTx() == (Double)62.0);
  assertTrue(newComponents.get(0).getCadInstances().get(0).getTy() == (Double)24.0);
  assertTrue(newComponents.get(0).getCadInstances().get(0).getTz() == (Double)95.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getRx() == (Double)22.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getRy() == (Double)12.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getRz() == (Double)72.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getTx() == (Double)52.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getTy() == (Double)14.0);
  assertTrue(newComponents.get(0).getCadInstances().get(1).getTz() == (Double)45.0);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().size() == 3);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getRx() == 10);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getRy() == 11);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getRz() == 12);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getTx() == 13.0);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getTy() == 14.0);
  assertTrue(newComponents.get(0).getSubstitutes().get(0).getCadInstances().get(0).getTz() == 15.0);
}