From f721b65d07e1b93c5ebc4b7baddd119167466553 Mon Sep 17 00:00:00 2001 From: asl Date: Tue, 17 Nov 2015 17:52:12 +0300 Subject: [PATCH] refs #691: the automatic test covering the bug #691 --- src/HYDROData/HYDROData_PolylineXY.cxx | 2 +- .../reference_data/LandCoverMap_Merge_2.png | Bin 0 -> 6977 bytes .../test_HYDROData_LandCoverMap.cxx | 62 +++++++++++++++++- src/HYDRO_tests/test_HYDROData_LandCoverMap.h | 2 + 4 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 src/HYDRO_tests/reference_data/LandCoverMap_Merge_2.png diff --git a/src/HYDROData/HYDROData_PolylineXY.cxx b/src/HYDROData/HYDROData_PolylineXY.cxx index 5127c91b..ea4eaf09 100644 --- a/src/HYDROData/HYDROData_PolylineXY.cxx +++ b/src/HYDROData/HYDROData_PolylineXY.cxx @@ -541,7 +541,7 @@ void HYDROData_PolylineXY::Update() aBB.MakeCompound(aCmp); if(aSeqEdges->Length() >1) { - ShapeAnalysis_FreeBounds::ConnectEdgesToWires(aSeqEdges,1E-5,Standard_False,aSeqWires); + ShapeAnalysis_FreeBounds::ConnectEdgesToWires( aSeqEdges, 1E-5, Standard_True, aSeqWires ); if( aSeqWires->Length()==1 ) aResult = aSeqWires->Value( 1 ); diff --git a/src/HYDRO_tests/reference_data/LandCoverMap_Merge_2.png b/src/HYDRO_tests/reference_data/LandCoverMap_Merge_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ff0803fc0b794bfba5c86aec62ba5e720c4301 GIT binary patch literal 6977 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 literal 0 HcmV?d00001 diff --git a/src/HYDRO_tests/test_HYDROData_LandCoverMap.cxx b/src/HYDRO_tests/test_HYDROData_LandCoverMap.cxx index 286767a6..83345f84 100644 --- a/src/HYDRO_tests/test_HYDROData_LandCoverMap.cxx +++ b/src/HYDRO_tests/test_HYDROData_LandCoverMap.cxx @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -188,6 +189,66 @@ void test_HYDROData_LandCoverMap::test_merge() aDoc->Close(); } +void test_HYDROData_LandCoverMap::test_merge_refs_691() +{ + Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1); + + Handle(HYDROData_PolylineXY) Polyline_4 = + Handle(HYDROData_PolylineXY)::DownCast( aDoc->CreateObject( KIND_POLYLINEXY ) ); + Polyline_4->SetName( "test_Polyline_4" ); + Polyline_4->AddSection( "Section_1", HYDROData_PolylineXY::SECTION_POLYLINE, true ); + Polyline_4->AddPoint( 0, gp_XY( -242.741935, -16.129032 ) ); + Polyline_4->AddPoint( 0, gp_XY( -339.516129, -95.161290 ) ); + Polyline_4->AddPoint( 0, gp_XY( -204.032258, -167.740000 ) ); + Polyline_4->AddPoint( 0, gp_XY( -86.290000, -158.060000 ) ); + Polyline_4->AddPoint( 0, gp_XY( -83.064516, -37.096774 ) ); + Polyline_4->AddPoint( 0, gp_XY( -116.935484, 17.741935 ) ); + Polyline_4->AddSection( "Section_2", HYDROData_PolylineXY::SECTION_POLYLINE, true ); + Polyline_4->AddPoint( 1, gp_XY( -239.516129, -295.161290 ) ); + Polyline_4->AddPoint( 1, gp_XY( -204.030000, -167.740000 ) ); + Polyline_4->AddPoint( 1, gp_XY( -86.290000, -158.060000 ) ); + Polyline_4->AddPoint( 1, gp_XY( -2.419355, -288.709677 ) ); + Polyline_4->AddPoint( 1, gp_XY( -165.322581, -351.612903 ) ); + Polyline_4->Update(); + + Handle(HYDROData_LandCoverMap) aMap = + Handle(HYDROData_LandCoverMap)::DownCast( aDoc->CreateObject( KIND_LAND_COVER_MAP ) ); + + CPPUNIT_ASSERT_EQUAL( true, aMap->Add( Polyline_4, "test" ) ); + + TopTools_ListOfShape aList; + HYDROData_LandCoverMap::Explorer anIt( aMap ); + CPPUNIT_ASSERT_EQUAL( true, anIt.More() ); + CPPUNIT_ASSERT_EQUAL( QString( "test" ), anIt.StricklerType() ); + aList.Append( anIt.Face() ); + anIt.Next(); + CPPUNIT_ASSERT_EQUAL( true, anIt.More() ); + CPPUNIT_ASSERT_EQUAL( QString( "test" ), anIt.StricklerType() ); + aList.Append( anIt.Face() ); + anIt.Next(); + CPPUNIT_ASSERT_EQUAL( false, anIt.More() ); + + BRepCheck_Analyzer aCheck1( aMap->GetShape() ); + CPPUNIT_ASSERT_EQUAL( true, (bool)aCheck1.IsValid() ); + + CPPUNIT_ASSERT_EQUAL( true, aMap->Merge( aList, "test" ) ); + + BRepCheck_Analyzer aCheck2( aMap->GetShape() ); + CPPUNIT_ASSERT_EQUAL( true, (bool)aCheck2.IsValid() ); + + // we try construct the triangulation to check that it is correct + BRepMesh_IncrementalMesh anIncMesh( aMap->GetShape(), 0.01 ); + CPPUNIT_ASSERT_EQUAL( true, (bool)anIncMesh.IsDone() ); + BRepCheck_Analyzer aCheck3( aMap->GetShape() ); + CPPUNIT_ASSERT_EQUAL( true, (bool)aCheck3.IsValid() ); + + Handle(HYDROGUI_LandCoverMapPrs) aPrs = new HYDROGUI_LandCoverMapPrs( aMap ); + TestViewer::show( aPrs, AIS_Shaded, 0, true, "LandCoverMap_Merge_2" ); + CPPUNIT_ASSERT_IMAGES + + aDoc->Close(); +} + void test_HYDROData_LandCoverMap::test_remove() { Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1); @@ -481,7 +542,6 @@ void test_HYDROData_LandCoverMap::test_import_dbf() QList Inds = QList() << 1 << 2 << 3; aMap->ImportDBF(aFileName, "TESTFIELD1", aDBFV, aST, Inds); HYDROData_LandCoverMap::Explorer anIt( aMap ); - CPPUNIT_ASSERT_EQUAL( QString( "forest" ), anIt.StricklerType() ); anIt.Next(); CPPUNIT_ASSERT_EQUAL( QString( "road" ), anIt.StricklerType() ); diff --git a/src/HYDRO_tests/test_HYDROData_LandCoverMap.h b/src/HYDRO_tests/test_HYDROData_LandCoverMap.h index 79eb35d3..85d34bc7 100644 --- a/src/HYDRO_tests/test_HYDROData_LandCoverMap.h +++ b/src/HYDRO_tests/test_HYDROData_LandCoverMap.h @@ -33,6 +33,7 @@ class test_HYDROData_LandCoverMap : public CppUnit::TestFixture CPPUNIT_TEST( test_split_2 ); CPPUNIT_TEST( test_incomplete_split ); CPPUNIT_TEST( test_merge ); + CPPUNIT_TEST( test_merge_refs_691 ); CPPUNIT_TEST( test_remove ); CPPUNIT_TEST( test_merge_faces_boxes ); CPPUNIT_TEST( test_merge_faces_circles ); @@ -60,6 +61,7 @@ public: void test_split_2(); void test_incomplete_split(); void test_merge(); + void test_merge_refs_691(); void test_remove(); void test_merge_faces_boxes(); void test_merge_faces_circles(); -- 2.39.2