X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDRO_tests%2Ftest_HYDROData_Stream.cxx;h=a6dfe1cee142267e911d840a1231824f28322f44;hb=5ac23856072a615487ce98401d28fb3b7934150c;hp=1466db52b9a919c46a285a6f591a942a67184c78;hpb=8a699901ec6830f65a1515467162ad7471a1a951;p=modules%2Fhydro.git diff --git a/src/HYDRO_tests/test_HYDROData_Stream.cxx b/src/HYDRO_tests/test_HYDROData_Stream.cxx index 1466db52..a6dfe1ce 100644 --- a/src/HYDRO_tests/test_HYDROData_Stream.cxx +++ b/src/HYDRO_tests/test_HYDROData_Stream.cxx @@ -24,9 +24,18 @@ #include #include #include +#include +#include +#include #include #include +#include +#include +#include +#include + +extern QString REF_DATA_PATH; NCollection_Sequence points2; const double EPS = 1E-3; @@ -45,6 +54,9 @@ void test_HYDROData_Stream::tearDown() void test_HYDROData_Stream::test_dialog() { + return; + TestViewer::eraseAll( true, true ); + HYDROGUI_StreamDlg* aDlg = new HYDROGUI_StreamDlg( 0, "stream" ); aDlg->show(); qApp->processEvents(); @@ -63,12 +75,16 @@ void test_HYDROData_Stream::test_dialog() void test_HYDROData_Stream::test_alt_object() { - Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1); + TestViewer::eraseAll( true, true ); + + Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(); Handle(HYDROData_Stream) aStream = 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() ); @@ -81,12 +97,13 @@ void test_HYDROData_Stream::test_alt_object() void test_HYDROData_Stream::test_params_sync() { - Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1); + TestViewer::eraseAll( true, true ); + + Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(); 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 = @@ -133,8 +150,10 @@ void test_HYDROData_Stream::test_params_sync() void test_HYDROData_Stream::test_dump() { + TestViewer::eraseAll( true, true ); + // Case 1. Without hydraulic axis - Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1); + Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(); Handle(HYDROData_Stream) aStream1 = Handle(HYDROData_Stream)::DownCast( aDoc->CreateObject( KIND_STREAM ) ); @@ -219,3 +238,116 @@ void test_HYDROData_Stream::test_dump() aDoc->Close(); } + +void test_HYDROData_Stream::test_presentation() +{ + TestViewer::eraseAll( true, true ); + + Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(); + + 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", 1, 1 ); + CPPUNIT_ASSERT_IMAGES; + + TestViewer::eraseAll( true ); + TestViewer::show( aPrs3d, 0, true, "stream_dtm_3d" ); + CPPUNIT_ASSERT_IMAGES + + aDoc->Close(); +} + + +void test_HYDROData_Stream::test_lism_1() +{ + TCollection_AsciiString ref_path = REF_DATA_PATH.toLatin1().data(); + + TCollection_AsciiString fname = REF_DATA_PATH.toLatin1().data(); + fname += "/study_lism_1.cbf"; + CPPUNIT_ASSERT_EQUAL( (int)DocError_OK, (int)HYDROData_Document::Load( fname.ToCString() ) ); + + Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(); + + HYDROData_SequenceOfObjects profiles; + HYDROData_Iterator it( aDoc, KIND_PROFILE ); + for( int i=0; it.More(); it.Next(), i++ ) + { + if( i>=15 && i<=42 ) + profiles.Append( Handle(HYDROData_Profile)::DownCast( it.Current() ) ); + } + CPPUNIT_ASSERT_EQUAL( 28, (int)profiles.Size() ); + /// + + Handle(HYDROData_PolylineXY) aPolyXY_AX = Handle(HYDROData_PolylineXY)::DownCast(aDoc->FindObjectByName("AX")); + Handle(HYDROData_PolylineXY) aPolyXY_LB = Handle(HYDROData_PolylineXY)::DownCast(aDoc->FindObjectByName("LB")); + Handle(HYDROData_PolylineXY) aPolyXY_RB = Handle(HYDROData_PolylineXY)::DownCast(aDoc->FindObjectByName("RB")); + + aPolyXY_AX->Update(); + aPolyXY_LB->Update(); + aPolyXY_RB->Update(); + // + Handle(HYDROData_LISM) aLISM = Handle(HYDROData_LISM)::DownCast( aDoc->CreateObject( KIND_LISM ) ); + aLISM->SetProfiles( profiles ); + aLISM->SetHaxStep(2.0); + aLISM->SetNbProfilePoints( 200 ); + aLISM->SetHydraulicAxis(aPolyXY_AX); + aLISM->SetLeftBank(aPolyXY_LB); + aLISM->SetRightBank(aPolyXY_RB); + CPPUNIT_ASSERT_DOUBLES_EQUAL( 2.0, aLISM->GetHaxStep(), EPS ); + CPPUNIT_ASSERT_EQUAL( 200, aLISM->GetNbProfilePoints() ); + aLISM->Update(); + + CPPUNIT_ASSERT_EQUAL( 99000, (int)aLISM->GetAltitudePoints().size() ); + + Handle(AIS_InteractiveContext) aContext = TestViewer::context(); + HYDROGUI_ShapeBathymetry* aBathPrs = new HYDROGUI_ShapeBathymetry( 0, aContext, aLISM ); + //aBathPrs->Build(); + aBathPrs->update( true, false ); + aBathPrs->RescaleDefault(); + double min, max; + aBathPrs->GetRange( min, max ); + TestViewer::colorScale()->SetRange( min, max ); + CPPUNIT_ASSERT_DOUBLES_EQUAL( -0.98390276785714281, min, EPS ); + CPPUNIT_ASSERT_DOUBLES_EQUAL( 25.991840625000002, max, EPS ); + + aBathPrs->UpdateWithColorScale( TestViewer::colorScale() ); + + Handle(AIS_InteractiveObject) lism_prs = aBathPrs->getAISObjects()[0]; + CPPUNIT_ASSERT( !lism_prs.IsNull() ); + + TestViewer::show( lism_prs, 0, 0, true, "lism_prs" ); + CPPUNIT_ASSERT_IMAGES + + delete aBathPrs; + aDoc->Close(); +} +