X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDRO_tests%2Ftest_HYDROData_Stream.cxx;h=52388f33737ab8df33cf6688dbae9c7b3f227115;hb=58bb6b7459bebeeb089c9ed486c4683a8bae7288;hp=d354d17584fe1f9f16cdddad6eae3f6847f19b37;hpb=9cd1bdfa95443b2bd7ee04502737cb4c7d387063;p=modules%2Fhydro.git diff --git a/src/HYDRO_tests/test_HYDROData_Stream.cxx b/src/HYDRO_tests/test_HYDROData_Stream.cxx index d354d175..52388f33 100644 --- a/src/HYDRO_tests/test_HYDROData_Stream.cxx +++ b/src/HYDRO_tests/test_HYDROData_Stream.cxx @@ -23,9 +23,14 @@ #include #include #include +#include +#include +#include #include #include +#include +extern QString REF_DATA_PATH; NCollection_Sequence points2; const double EPS = 1E-3; @@ -68,6 +73,8 @@ void test_HYDROData_Stream::test_alt_object() Handle(HYDROData_Stream)::DownCast( aDoc->CreateObject( KIND_STREAM ) ); CPPUNIT_ASSERT_EQUAL( false, (bool)aStream.IsNull() ); + CPPUNIT_ASSERT_EQUAL( true, (bool)aStream->GetAltitudeObject().IsNull() ); + CPPUNIT_ASSERT_EQUAL( false, (bool)aStream->DTM().IsNull() ); CPPUNIT_ASSERT_EQUAL( false, (bool)aStream->GetAltitudeObject().IsNull() ); CPPUNIT_ASSERT_EQUAL( KIND_DTM, aStream->getAltitudeObjectType() ); @@ -84,8 +91,7 @@ void test_HYDROData_Stream::test_params_sync() Handle(HYDROData_Stream) aStream = Handle(HYDROData_Stream)::DownCast( aDoc->CreateObject( KIND_STREAM ) ); - Handle(HYDROData_DTM) aDTM = - Handle(HYDROData_DTM)::DownCast( aStream->GetAltitudeObject() ); + Handle(HYDROData_DTM) aDTM = aStream->DTM(); CPPUNIT_ASSERT_EQUAL( false, (bool)aDTM.IsNull() ); Handle(HYDROData_Profile) aProfile1 = @@ -182,5 +188,85 @@ void test_HYDROData_Stream::test_dump() CPPUNIT_ASSERT_EQUAL( std::string( "stream_1.Update()" ), aScript1[8].toStdString() ); CPPUNIT_ASSERT_EQUAL( std::string( "" ), aScript1[9].toStdString() ); + // Case 2. With hydraulic axis + + Handle(HYDROData_Stream) aStream2 = + Handle(HYDROData_Stream)::DownCast( aDoc->CreateObject( KIND_STREAM ) ); + aStream2->SetName( "stream_2" ); + + Handle(HYDROData_PolylineXY) anHAxis = + Handle(HYDROData_PolylineXY)::DownCast( aDoc->CreateObject( KIND_POLYLINEXY ) ); + anHAxis->SetName( "axis" ); + + aStream2->SetProfiles( profiles, false ); + aStream2->SetDDZ( 0.2 ); + aStream2->SetSpatialStep( 3.0 ); + aStream2->SetReferenceObject( anHAxis, HYDROData_Stream::DataTag_HydraulicAxis ); + + objs.clear(); + objs["p1"] = aProfile1; + objs["p2"] = aProfile2; + objs["axis"] = anHAxis; + + QStringList aScript2 = aStream2->DumpToPython( "", objs ); + CPPUNIT_ASSERT_EQUAL( 11, aScript2.size() ); + CPPUNIT_ASSERT_EQUAL( std::string( "stream_2 = hydro_doc.CreateObject( KIND_STREAM )" ), aScript2[0].toStdString() ); + CPPUNIT_ASSERT_EQUAL( std::string( "stream_2.SetName( \"stream_2\" )" ), aScript2[1].toStdString() ); + CPPUNIT_ASSERT_EQUAL( std::string( "" ), aScript2[2].toStdString() ); + CPPUNIT_ASSERT_EQUAL( std::string( "stream_2.SetHydraulicAxis( axis )" ), aScript2[3].toStdString() ); + CPPUNIT_ASSERT_EQUAL( std::string( "stream_2.AddProfile( p1 )" ), aScript2[4].toStdString() ); + CPPUNIT_ASSERT_EQUAL( std::string( "stream_2.AddProfile( p2 )" ), aScript2[5].toStdString() ); + CPPUNIT_ASSERT_EQUAL( std::string( "stream_2.SetDDZ( 0.200 )" ), aScript2[6].toStdString() ); + CPPUNIT_ASSERT_EQUAL( std::string( "stream_2.SetSpatialStep( 3.000 )" ), aScript2[7].toStdString() ); + CPPUNIT_ASSERT_EQUAL( std::string( "" ), aScript2[8].toStdString() ); + CPPUNIT_ASSERT_EQUAL( std::string( "stream_2.Update()" ), aScript2[9].toStdString() ); + CPPUNIT_ASSERT_EQUAL( std::string( "" ), aScript2[10].toStdString() ); + + aDoc->Close(); +} + +void test_HYDROData_Stream::test_presentation() +{ + Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1); + + TCollection_AsciiString fname = REF_DATA_PATH.toLatin1().data(); + fname += "/Profiles.xyz"; + NCollection_Sequence bad_ids; + + int aSize = HYDROData_Profile::ImportFromFile( aDoc, fname, bad_ids, true ); + + CPPUNIT_ASSERT_EQUAL( 0, bad_ids.Size() ); + CPPUNIT_ASSERT_EQUAL( 46, aSize ); + + HYDROData_SequenceOfObjects profiles; + HYDROData_Iterator it( aDoc, KIND_PROFILE ); + for( int i=0; it.More(); it.Next(), i++ ) + { + if( i>=25 && i<=35 ) + { + it.Current()->Update(); + profiles.Append( Handle(HYDROData_Profile)::DownCast( it.Current() ) ); + } + } + + Handle(HYDROData_Stream) aStream = + Handle(HYDROData_Stream)::DownCast( aDoc->CreateObject( KIND_STREAM ) ); + + aStream->SetProfiles( profiles, false ); + aStream->SetDDZ( 0.2 ); + aStream->SetSpatialStep( 10 ); + aStream->Update(); + + TopoDS_Shape aPrs3d = aStream->GetShape3D(); + TopoDS_Shape aPrs2d = aStream->GetTopShape(); + + TestViewer::show( aPrs2d, 0, true, "stream_dtm_2d" ); + CPPUNIT_ASSERT_IMAGES; + + TestViewer::eraseAll( true ); + TestViewer::show( aPrs3d, 0, true, "stream_dtm_3d" ); + CPPUNIT_ASSERT_IMAGES + aDoc->Close(); } +