+
+void test_HYDROData_PolylineXY::test_split_straight_refs_634()
+{
+ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document();
+
+ Handle(HYDROData_PolylineXY) aPolyline1 =
+ Handle(HYDROData_PolylineXY)::DownCast( aDoc->CreateObject( KIND_POLYLINEXY ) );
+ Handle(HYDROData_PolylineXY) aPolyline2 =
+ Handle(HYDROData_PolylineXY)::DownCast( aDoc->CreateObject( KIND_POLYLINEXY ) );
+
+ aPolyline1->SetName( "test1" );
+ aPolyline1->AddSection( "", HYDROData_PolylineXY::SECTION_POLYLINE, false );
+ aPolyline1->AddPoint( 0, gp_XY( 0, 0 ) );
+ aPolyline1->AddPoint( 0, gp_XY( 10, 20 ) );
+ aPolyline1->AddPoint( 0, gp_XY( 30, 10 ) );
+ aPolyline1->Update();
+
+ aPolyline2->SetName( "test2" );
+ aPolyline2->AddSection( "", HYDROData_PolylineXY::SECTION_SPLINE, false );
+ aPolyline2->AddPoint( 0, gp_XY( 0, 30 ) );
+ aPolyline2->AddPoint( 0, gp_XY( 10, 10 ) );
+ aPolyline2->AddPoint( 0, gp_XY( 30, 20 ) );
+ aPolyline2->Update();
+
+ HYDROData_PolylineOperator anOp;
+ HYDROData_SequenceOfObjects aPolylines;
+ aPolylines.Append( aPolyline1 );
+ aPolylines.Append( aPolyline2 );
+ bool isIntersected;
+ CPPUNIT_ASSERT_EQUAL( true, anOp.Split( aDoc, aPolyline1, aPolyline2, 1E-3, isIntersected ) );
+ CPPUNIT_ASSERT_EQUAL( true, isIntersected );
+
+ HYDROData_Iterator anIt( aDoc, KIND_POLYLINEXY );
+ CPPUNIT_ASSERT_EQUAL( true, anIt.More() );
+ CPPUNIT_ASSERT_EQUAL( QString( "test1" ), anIt.Current()->GetName() );
+ anIt.Next();
+ CPPUNIT_ASSERT_EQUAL( true, anIt.More() );
+ CPPUNIT_ASSERT_EQUAL( QString( "test2" ), anIt.Current()->GetName() );
+ anIt.Next();
+
+ CPPUNIT_ASSERT_EQUAL( true, anIt.More() );
+ CPPUNIT_ASSERT_EQUAL( QString( "test1_1" ), anIt.Current()->GetName() );
+ Handle(HYDROData_PolylineXY) aPart1 =
+ Handle(HYDROData_PolylineXY)::DownCast( anIt.Current() );
+ CPPUNIT_ASSERT_EQUAL( HYDROData_PolylineXY::SECTION_POLYLINE, aPart1->GetSectionType( 0 ) );
+ anIt.Next();
+
+ CPPUNIT_ASSERT_EQUAL( true, anIt.More() );
+ CPPUNIT_ASSERT_EQUAL( QString( "test1_2" ), anIt.Current()->GetName() );
+ Handle(HYDROData_PolylineXY) aPart2 =
+ Handle(HYDROData_PolylineXY)::DownCast( anIt.Current() );
+ CPPUNIT_ASSERT_EQUAL( HYDROData_PolylineXY::SECTION_POLYLINE, aPart2->GetSectionType( 0 ) );
+ anIt.Next();
+
+ CPPUNIT_ASSERT_EQUAL( true, anIt.More() );
+ CPPUNIT_ASSERT_EQUAL( QString( "test1_3" ), anIt.Current()->GetName() );
+ Handle(HYDROData_PolylineXY) aPart3 =
+ Handle(HYDROData_PolylineXY)::DownCast( anIt.Current() );
+ CPPUNIT_ASSERT_EQUAL( HYDROData_PolylineXY::SECTION_POLYLINE, aPart3->GetSectionType( 0 ) );
+ anIt.Next();
+
+ CPPUNIT_ASSERT_EQUAL( false, anIt.More() );
+
+ TestViewer::show( aPart1->GetShape(), 0, true, "Split_Straight" );
+ TestViewer::show( aPart2->GetShape(), 0, true, Qt::red );
+ TestViewer::show( aPart3->GetShape(), 0, true, Qt::green );
+ TestViewer::show( aPolyline2->GetShape(), 0, true, Qt::darkGreen );
+ CPPUNIT_ASSERT_IMAGES
+
+ aDoc->Close();
+}
+
+void test_HYDROData_PolylineXY::test_import_from_xyz()
+{
+ NCollection_Sequence<Handle(HYDROData_Entity)> ents;
+ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document();
+ TCollection_AsciiString fname = REF_DATA_PATH.toLatin1().data();
+ fname += "/profiles1.xyz";
+
+ NCollection_Sequence<Handle(HYDROData_Entity)> importedEntities;
+ bool stat = HYDROData_Tool::importPolylineFromXYZ(QString(fname.ToCString()), aDoc, true, importedEntities);
+ CPPUNIT_ASSERT (stat);
+ Handle(HYDROData_PolylineXY) aPolyXY = Handle(HYDROData_PolylineXY)::DownCast(importedEntities.First());
+ CPPUNIT_ASSERT_EQUAL (importedEntities.Size(), 1);
+ CPPUNIT_ASSERT (!aPolyXY.IsNull());
+ TestViewer::show( aPolyXY->GetShape(), 0, true, "Polyline_import_XY" );
+ CPPUNIT_ASSERT_IMAGES
+ importedEntities.Clear();
+
+ stat = HYDROData_Tool::importPolylineFromXYZ(QString(fname.ToCString()), aDoc, false, importedEntities);
+ CPPUNIT_ASSERT (stat);
+ CPPUNIT_ASSERT_EQUAL (importedEntities.Size(), 2);
+ Handle(HYDROData_Polyline3D) aPoly3D;
+ aPolyXY = Handle(HYDROData_PolylineXY)::DownCast(importedEntities.First());
+ aPoly3D = Handle(HYDROData_Polyline3D)::DownCast(importedEntities.Last());
+ CPPUNIT_ASSERT (!aPolyXY.IsNull());
+ CPPUNIT_ASSERT (!aPoly3D.IsNull());
+ TestViewer::show( aPolyXY->GetShape(), 0, false, "Polyline_import_XYZ" );
+ TestViewer::show( aPoly3D->GetShape3D(), 0, false, "Polyline_import_XYZ_3D" );
+ CPPUNIT_ASSERT_IMAGES
+}
+
+
+void test_HYDROData_PolylineXY::test_import_from_sx()
+{
+ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document();
+ TCollection_AsciiString fname = REF_DATA_PATH.toLatin1().data();
+ fname += "/polylines_sx.sx";
+
+ HYDROData_SinusX aSinusXImporter;
+ NCollection_Sequence<Handle(HYDROData_Entity)> importedEntities;
+ //bool stat = aSinusXImporter.Import(QString(fname.ToCString()), aDoc, importedEntities);
+ bool ParseStat = aSinusXImporter.OpenAndParse(QString(fname.ToCString()));
+ CPPUNIT_ASSERT (ParseStat);
+ aSinusXImporter.Import(aDoc, importedEntities, NULL);
+ CPPUNIT_ASSERT_EQUAL (importedEntities.Size(), 9);
+
+ Handle(HYDROData_PolylineXY) aPolyXY1 = Handle(HYDROData_PolylineXY)::DownCast(importedEntities(1));
+ Handle(HYDROData_PolylineXY) aPolyXY2 = Handle(HYDROData_PolylineXY)::DownCast(importedEntities(4));
+ Handle(HYDROData_PolylineXY) aPolyXY3 = Handle(HYDROData_PolylineXY)::DownCast(importedEntities(7));
+
+ CPPUNIT_ASSERT (!aPolyXY1.IsNull());
+ CPPUNIT_ASSERT (!aPolyXY2.IsNull());
+ CPPUNIT_ASSERT (!aPolyXY3.IsNull());
+
+ aPolyXY1->Update();
+ aPolyXY2->Update();
+ aPolyXY3->Update();
+
+ CPPUNIT_ASSERT_EQUAL (aPolyXY1->GetName(), QString("AXIS"));
+ CPPUNIT_ASSERT_EQUAL (aPolyXY2->GetName(), QString("LB"));
+ CPPUNIT_ASSERT_EQUAL (aPolyXY3->GetName(), QString("RB"));
+
+ TopoDS_Shape sh1 = aPolyXY1->GetShape();
+ TopoDS_Shape sh2 = aPolyXY2->GetShape();
+ TopoDS_Shape sh3 = aPolyXY3->GetShape();
+ CPPUNIT_ASSERT (!sh1.IsNull());
+ CPPUNIT_ASSERT (!sh2.IsNull());
+ CPPUNIT_ASSERT (!sh3.IsNull());
+
+ BRep_Builder BB;
+ TopoDS_Compound cmp;
+ BB.MakeCompound(cmp);
+ BB.Add(cmp, sh1);
+ BB.Add(cmp, sh2);
+ BB.Add(cmp, sh3);
+
+ TestViewer::show( cmp, 0, true, "Polylines_import_SX" );
+ CPPUNIT_ASSERT_IMAGES
+}
+
+void test_HYDROData_PolylineXY::test_import_from_sx_options()
+{
+ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document( 1 );
+ TCollection_AsciiString fname = REF_DATA_PATH.toLatin1().data();
+ fname += "/trait_cote_lambert1N.sx";
+
+ HYDROData_SinusX aSinusXImporter;
+ NCollection_Sequence<Handle(HYDROData_Entity)> importedEntities;
+ //bool stat = aSinusXImporter.Import(QString(fname.ToCString()), aDoc, importedEntities);
+ bool ParseStat = aSinusXImporter.OpenAndParse(QString(fname.ToCString()));
+ CPPUNIT_ASSERT (ParseStat);
+
+ std::vector<HYDROData_SinusX::ImportOptions> options;
+ int size = aSinusXImporter.GetCurveBlocks().size();
+ CPPUNIT_ASSERT_EQUAL(33, size);
+ for (int i = 0; i < 33; i++)
+ {
+ HYDROData_SinusX::ImportOptions option;
+ option.ImportAsBathy = false;
+ if (i>12)
+ {
+ option.ImportAsPolyXY = true;
+ option.ImportAsProfile = true;
+ }
+ else
+ {
+ option.ImportAsPolyXY = false;
+ option.ImportAsProfile = false;
+ }
+ options.push_back(option);
+ }
+
+ aSinusXImporter.Import(aDoc, importedEntities, &options);
+ CPPUNIT_ASSERT_EQUAL (importedEntities.Size(), 60);
+}
+
+void test_HYDROData_PolylineXY::test_polyline_dbf_info_simple()
+{
+ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document( 1 );
+ Handle(HYDROData_PolylineXY) aPolyline = Handle(HYDROData_PolylineXY)::DownCast(aDoc->CreateObject(KIND_POLYLINEXY));
+ QStringList dbf_dummy, dbf_out;
+ dbf_dummy << "n1" << "n2" << "n3" << "n4";
+ aPolyline->SetDBFInfo(dbf_dummy);
+ CPPUNIT_ASSERT (aPolyline->GetDBFInfo(dbf_out));
+ CPPUNIT_ASSERT_EQUAL (dbf_out.size(), 4);
+ CPPUNIT_ASSERT ("n1" == dbf_out[0]);
+ CPPUNIT_ASSERT ("n2" == dbf_out[1]);
+ CPPUNIT_ASSERT ("n3" == dbf_out[2]);
+ CPPUNIT_ASSERT ("n4" == dbf_out[3]);
+}
+
+