Changeset 3288

Show
Ignore:
Timestamp:
11/05/09 16:15:34 (3 weeks ago)
Author:
kraftche
Message:

add test that attempts to reproduce bug #28

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • MOAB/trunk/MBTest.cpp

    r3245 r3288  
    891891  return result; 
    892892 
     893} 
     894   
     895MBErrorCode mb_adjacencies_create_delete_test(MBInterface *mb)  
     896{ 
     897  MBCore moab; 
     898  mb = &moab; 
     899  MBErrorCode rval; 
     900 
     901  double coords[] = { 0, 0, 0, 2, 0, 0, 1, 2, 0 }; 
     902  MBRange verts; 
     903  rval = mb->create_vertices( coords, 3, verts ); 
     904  if (MB_SUCCESS != rval) 
     905    return rval; 
     906  if (verts.size() != 3) 
     907    return MB_FAILURE; 
     908  MBEntityHandle vert_arr[3]; 
     909 
     910  MBEntityHandle tri; 
     911  std::copy( verts.begin(), verts.end(), vert_arr ); 
     912  rval = mb->create_element( MBTRI, vert_arr, 3, tri ); 
     913  if (MB_SUCCESS != rval) 
     914    return rval; 
     915   
     916  vert_arr[2] = vert_arr[0]; 
     917  MBEntityHandle forward_edge, reverse_edge; 
     918  rval = mb->create_element( MBEDGE, vert_arr, 2, forward_edge ); 
     919  if (MB_SUCCESS != rval) 
     920    return rval; 
     921     
     922  std::vector<MBEntityHandle> results; 
     923  rval = mb->get_adjacencies( &forward_edge, 1, 2, false, results ); 
     924  if (results.size() != 1 || results.front() != tri) { 
     925    std::cerr << "Adjacency query from forward edge to tri failed at " 
     926              << __FILE__ <<  ":" << __LINE__ << std::endl; 
     927    return MB_FAILURE; 
     928  } 
     929  results.clear(); 
     930  rval = mb->get_adjacencies( &tri, 1, 1, false, results ); 
     931  if (results.size() != 1 || results.front() != forward_edge) { 
     932    std::cerr << "Adjacency query from tri to forward edge failed at " 
     933              << __FILE__ <<  ":" << __LINE__ << std::endl; 
     934    return MB_FAILURE; 
     935  } 
     936   
     937  rval = mb->delete_entities( &forward_edge, 1 ); 
     938  if (MB_SUCCESS != rval) 
     939    return rval; 
     940   
     941  results.clear(); 
     942  rval = mb->get_adjacencies( &tri, 1, 1, false, results ); 
     943  if (!results.empty()) { 
     944    std::cerr << "Adjacency query from tri returned non-existent edge at " 
     945              << __FILE__ <<  ":" << __LINE__ << std::endl; 
     946    return MB_FAILURE; 
     947  } 
     948   
     949  rval = mb->create_element( MBEDGE, vert_arr+1, 2, reverse_edge ); 
     950  if (MB_SUCCESS != rval) 
     951    return rval; 
     952     
     953  results.clear(); 
     954  rval = mb->get_adjacencies( &reverse_edge, 1, 2, false, results ); 
     955  if (results.size() != 1 || results.front() != tri) { 
     956    std::cerr << "Adjacency query from reverse edge to tri failed at " 
     957              << __FILE__ <<  ":" << __LINE__ << std::endl; 
     958    return MB_FAILURE; 
     959  } 
     960  results.clear(); 
     961  rval = mb->get_adjacencies( &tri, 1, 1, false, results ); 
     962  if (results.size() != 1 || results.front() != reverse_edge) { 
     963    std::cerr << "Adjacency query from tri to reverse edge failed at " 
     964              << __FILE__ <<  ":" << __LINE__ << std::endl; 
     965    return MB_FAILURE; 
     966  } 
     967   
     968  return MB_SUCCESS; 
    893969} 
    894970 
     
    67966872  RUN_TEST( mb_adjacent_vertex_test ); 
    67976873  RUN_TEST( mb_adjacencies_test ); 
     6874  RUN_TEST( mb_adjacencies_create_delete_test ); 
    67986875  RUN_TEST( mb_upward_adjacencies_test ); 
    67996876  RUN_TEST( mb_vertex_coordinate_test );