Salome HOME
Merge branch 'BR_H2018_3' into BR_2018_V8_5
[modules/hydro.git] / src / HYDRO_tests / test_HYDROData_Stream.cxx
index 1466db52b9a919c46a285a6f591a942a67184c78..7de6815c083166880ccefbc81e612363ed08c68d 100644 (file)
 #include <HYDROData_IPolyline.h>
 #include <HYDROData_Profile.h>
 #include <HYDROData_PolylineXY.h>
+#include <HYDROData_Iterator.h>
+#include <AIS_InteractiveContext.hxx>
 #include <TestViewer.h>
 #include <QApplication>
+#include <QTest>
 
+extern QString REF_DATA_PATH;
 NCollection_Sequence<HYDROData_IPolyline::Point> points2;
 const double EPS = 1E-3;
 
@@ -45,6 +49,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 +70,16 @@ void test_HYDROData_Stream::test_dialog()
 
 void test_HYDROData_Stream::test_alt_object()
 {
+  TestViewer::eraseAll( true, true );
+  
   Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
 
   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 +92,13 @@ void test_HYDROData_Stream::test_alt_object()
 
 void test_HYDROData_Stream::test_params_sync()
 {
+  TestViewer::eraseAll( true, true );
+  
   Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
 
   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,6 +145,8 @@ 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);
 
@@ -219,3 +233,51 @@ 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(1);
+  
+  TCollection_AsciiString fname = REF_DATA_PATH.toLatin1().data();
+  fname += "/Profiles.xyz";
+  NCollection_Sequence<int> 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();
+}
+