Salome HOME
Correction for hydro_test
[modules/hydro.git] / src / HYDRO_tests / test_HYDROData_BoundaryPolygons.cxx
index 18675aee835f2f119fed0aee03c5c6d224977593..541f54ba85cfe57ac5e907d8f7bd115207639001 100644 (file)
@@ -26,6 +26,7 @@
 #include <BRepGProp.hxx>
 #include <HYDROData_ShapesGroup.h>
 #include <HYDROData_BCPolygon.h>
+#include <TopExp_Explorer.hxx>
 
 extern QString REF_DATA_PATH;
 
@@ -33,9 +34,9 @@ void test_HYDROData_BoundaryPolygons::test_bp_1()
 {  
   TCollection_AsciiString fname = REF_DATA_PATH.toLatin1().data();
   fname += "/test_boundary_polygon_calc_case_1.cbf";
-  CPPUNIT_ASSERT_EQUAL( (int)DocError_OK, (int)HYDROData_Document::Load( fname.ToCString(), 1 ) );
+  CPPUNIT_ASSERT_EQUAL( (int)DocError_OK, (int)HYDROData_Document::Load( fname.ToCString() ) );
 
-  Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);  
+  Handle(HYDROData_Document) aDoc = HYDROData_Document::Document();  
   //Calc case already contains already contains 4 boundary poltgons (3 cut, 1 include)
   //Update it to recalculate the shape groups
   Handle(HYDROData_CalculationCase) aCase = 
@@ -44,15 +45,47 @@ void test_HYDROData_BoundaryPolygons::test_bp_1()
   aCase->Update();
   CPPUNIT_ASSERT_EQUAL(4, aCase->GetBoundaryPolygons().Size());
   HYDROData_SequenceOfObjects aSplitGroups = aCase->GetSplitGroups();
-  CPPUNIT_ASSERT_EQUAL(1, aSplitGroups.Size());
+  CPPUNIT_ASSERT_EQUAL(4, aSplitGroups.Size());
 
-  Handle(HYDROData_ShapesGroup) aGroup = Handle(HYDROData_ShapesGroup)::DownCast( aSplitGroups.First() );
-  std::string name = aGroup->GetName().toStdString();
-  CPPUNIT_ASSERT_EQUAL( name, std::string("Case_1_Immersible zone_1_Outer") ); 
+  Handle(HYDROData_ShapesGroup) aGroup1;
+  TopTools_MapOfShape EdgesFromBPGroups;
+  for (int i=1; i<=4;i++)
+  {
+    Handle(HYDROData_ShapesGroup) aGroup = Handle(HYDROData_ShapesGroup)::DownCast( aSplitGroups(i) );    
+    if (aGroup->GetName() == "Case_1_Immersible zone_1_Outer")
+    {
+      aGroup1 = aGroup;
+    }
+    else
+    {
+      TopTools_SequenceOfShape aSeqShapes1;
+      aGroup->GetShapes( aSeqShapes1 );
+      for (int j=1; j<=aSeqShapes1.Size();j++)
+      {
+        TopExp_Explorer exp(aSeqShapes1(j), TopAbs_EDGE);
+        for (;exp.More();exp.Next())
+          EdgesFromBPGroups.Add(exp.Current());
+      }
+    }
+  }
+  CPPUNIT_ASSERT( !aGroup1.IsNull() ); 
 
   TopTools_SequenceOfShape aSeqShapes;
-  aGroup->GetShapes( aSeqShapes );  
+  aGroup1->GetShapes( aSeqShapes );  
   CPPUNIT_ASSERT_EQUAL( 78, aSeqShapes.Size());
+  //
+  TopTools_MapOfShape EdgesFromOuter;
+
+  for (int i=1;i<=aSeqShapes.Size();i++)
+    EdgesFromOuter.Add(aSeqShapes(i));
+
+  //check that EdgesFromBPGroups is a PART of Case_1_Immersible zone_1_Outer group
+  int ext1 = EdgesFromBPGroups.Extent();
+  EdgesFromOuter.Intersect(EdgesFromBPGroups);
+  int ext2 = EdgesFromOuter.Extent();
+  CPPUNIT_ASSERT_EQUAL(35, ext1);
+  CPPUNIT_ASSERT_EQUAL(ext1, ext2);
+  //
   BRep_Builder BB;
   TopTools_IndexedMapOfShape ME, MV;
   GProp_GProps G;
@@ -76,8 +109,8 @@ void test_HYDROData_BoundaryPolygons::test_bp_2()
 {
   TCollection_AsciiString fname = REF_DATA_PATH.toLatin1().data();
   fname += "/test_boundary_polygon_calc_case_2.cbf";
-  CPPUNIT_ASSERT_EQUAL( (int)DocError_OK, (int)HYDROData_Document::Load( fname.ToCString(), 1 ) );
-  Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
+  CPPUNIT_ASSERT_EQUAL( (int)DocError_OK, (int)HYDROData_Document::Load( fname.ToCString() ) );
+  Handle(HYDROData_Document) aDoc = HYDROData_Document::Document();
   //add boundary polygons to case_1
   Handle(HYDROData_CalculationCase) aCase = 
     Handle(HYDROData_CalculationCase)::DownCast( aDoc->FindObjectByName( "Case_1" ) );