Salome HOME
link problem with gl2ps for HYDRO_tests
[modules/hydro.git] / src / HYDRO_tests / test_HYDROData_Stream.cxx
index 581f627af6171466a5bff20c64cffca68571eb00..a6dfe1cee142267e911d840a1231824f28322f44 100644 (file)
 #include <HYDROData_PolylineXY.h>
 #include <HYDROData_Iterator.h>
 #include <AIS_InteractiveContext.hxx>
+#include <AIS_ColorScale.hxx>
 #include <TestViewer.h>
 #include <QApplication>
 #include <QTest>
 
+#include <HYDROData_LISM.h>
+#include <HYDROData_SinusX.h>
+#include <HYDROGUI_ShapeBathymetry.h>
+
 extern QString REF_DATA_PATH;
 NCollection_Sequence<HYDROData_IPolyline::Point> points2;
 const double EPS = 1E-3;
@@ -49,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();
@@ -67,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() );
 
@@ -85,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 = 
@@ -137,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 ) );
@@ -226,7 +241,9 @@ void test_HYDROData_Stream::test_dump()
 
 void test_HYDROData_Stream::test_presentation()
 {
-  Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
+  TestViewer::eraseAll( true, true );
+  
+  Handle(HYDROData_Document) aDoc = HYDROData_Document::Document();
   
   TCollection_AsciiString fname = REF_DATA_PATH.toLatin1().data();
   fname += "/Profiles.xyz";
@@ -241,7 +258,7 @@ void test_HYDROData_Stream::test_presentation()
   HYDROData_Iterator it( aDoc, KIND_PROFILE );
   for( int i=0; it.More(); it.Next(), i++ )
   {
-    if( i>=25 && i<=26 )
+    if( i>=25 && i<=35 )
     {
       it.Current()->Update();
       profiles.Append( Handle(HYDROData_Profile)::DownCast( it.Current() ) );
@@ -253,20 +270,84 @@ void test_HYDROData_Stream::test_presentation()
 
   aStream->SetProfiles( profiles, false );
   aStream->SetDDZ( 0.2 );
-  aStream->SetSpatialStep( 1000 );
+  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::show( aPrs2d, 0, true, "stream_dtm_2d", 1, 1 );
+  CPPUNIT_ASSERT_IMAGES;
 
   TestViewer::eraseAll( true );
   TestViewer::show( aPrs3d, 0, true, "stream_dtm_3d" );
-  QTest::qWait( 125000 );
   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();
+}
+