X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDRO_tests%2Ftest_HYDROData_BoundaryPolygons.cxx;h=541f54ba85cfe57ac5e907d8f7bd115207639001;hb=3bece499e83cc9ca95536228c7f6740030e9d5d8;hp=18675aee835f2f119fed0aee03c5c6d224977593;hpb=7a00e93240a442a8b424f326ba826a2b5f36d483;p=modules%2Fhydro.git diff --git a/src/HYDRO_tests/test_HYDROData_BoundaryPolygons.cxx b/src/HYDRO_tests/test_HYDROData_BoundaryPolygons.cxx index 18675aee..541f54ba 100644 --- a/src/HYDRO_tests/test_HYDROData_BoundaryPolygons.cxx +++ b/src/HYDRO_tests/test_HYDROData_BoundaryPolygons.cxx @@ -26,6 +26,7 @@ #include #include #include +#include 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" ) );