Salome HOME
Merge branch 'BR_H2018_3' into BR_2018_V8_5
[modules/hydro.git] / src / HYDRO_tests / test_HYDROData_DTM.cxx
index 9c06cc7e1fa22078972f99e30f6d2337a0d91427..48a470691ea6d6f25058ff9a37caab63f9454b58 100644 (file)
@@ -37,6 +37,9 @@
 #include <QGraphicsView>
 #include <QPixmap>
 #include <QApplication>
+#include <QTest>
+#include <QSet>
+#include <QString>
 
 const double EPS = 1E-3;
 
@@ -206,16 +209,16 @@ void test_HYDROData_DTM::test_hydraulic_axis()
   CPPUNIT_ASSERT_EQUAL( 3, (int)distances.size() );
 
   CPPUNIT_ASSERT_DOUBLES_EQUAL(   0.0,   distances[0], EPS );
-  CPPUNIT_ASSERT_DOUBLES_EQUAL(  43.499, distances[1], EPS );
-  CPPUNIT_ASSERT_DOUBLES_EQUAL( 211.474, distances[2], EPS );
+  CPPUNIT_ASSERT_DOUBLES_EQUAL(  44.859, distances[1], EPS );
+  CPPUNIT_ASSERT_DOUBLES_EQUAL( 207.661, distances[2], EPS );
 
   gp_Pnt2d p;
   gp_Vec2d q;
   HA->D1( 0, p, q );
   CPPUNIT_ASSERT_DOUBLES_EQUAL( 13.75, p.X(), EPS );
   CPPUNIT_ASSERT_DOUBLES_EQUAL( 6.25, p.Y(), EPS );
-  CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.568, q.X(), EPS );
-  CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.568, q.Y(), EPS );
+  CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.532, q.X(), EPS );
+  CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.532, q.Y(), EPS );
 
   aDoc->Close();
 }
@@ -240,7 +243,7 @@ void test_HYDROData_DTM::test_profile_conversion_to_2d()
   aProfile2->SetLeftPoint( gp_XY( 10, 10 ) );
   aProfile2->SetRightPoint( gp_XY( 20, 20 ) );
 
-  double aUMin1 = std::numeric_limits<double>::max(),
+  double aUMin1 = DBL_MAX,
          aUMax1 = -aUMin1,
          aUMin2 = aUMin1,
          aUMax2 = aUMax1;
@@ -341,7 +344,8 @@ void test_HYDROData_DTM::test_profile_discretization_polyline()
 
   HYDROData_DTM::CurveUZ aMid( 0.0, gp_Vec2d(), 0, 0 ), aWid( 0.0, gp_Vec2d(), 0, 0 );
   int dummy = 0;
-  HYDROData_DTM::ProfileDiscretization( aProfile, 0.0, 0.0, 5.0, 5.0, 0.5, aMid, aWid, dummy );
+  QSet<QString> warnings;
+  HYDROData_DTM::ProfileDiscretization( aProfile, 0.0, 0.0, 5.0, 5.0, 0.5, aMid, aWid, dummy, 1E-6, warnings );
   CPPUNIT_ASSERT_EQUAL( 11, (int)aMid.size() );
   CPPUNIT_ASSERT_DOUBLES_EQUAL(  0.0,   aMid[0].U, EPS );
   CPPUNIT_ASSERT_DOUBLES_EQUAL(  0.0,   aMid[0].Z, EPS );
@@ -379,7 +383,8 @@ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
 
   HYDROData_DTM::CurveUZ aMid( 0.0, gp_Vec2d(), 0, 0 ), aWid( 0.0, gp_Vec2d(), 0, 0 );
   int dummy = 0 ;
-  HYDROData_DTM::ProfileDiscretization( aProfile, 0.0, 0.0, 5.0, 5.0, 0.5, aMid, aWid, dummy );
+  QSet<QString> warnings;
+  HYDROData_DTM::ProfileDiscretization( aProfile, 0.0, 0.0, 5.0, 5.0, 0.5, aMid, aWid, dummy, 1E-6, warnings );
   CPPUNIT_ASSERT_EQUAL( 11, (int)aMid.size() );
   CPPUNIT_ASSERT_DOUBLES_EQUAL(  0.242, aMid[0].U, EPS );
   CPPUNIT_ASSERT_DOUBLES_EQUAL(  0.0,   aMid[0].Z, EPS );
@@ -499,19 +504,19 @@ void test_HYDROData_DTM::test_curve_to_3d()
 
   Handle(Geom2d_BSplineCurve) HA = HYDROData_DTM::CreateHydraulicAxis( profiles, distances );
   HYDROData_DTM::AltitudePoints points;
-  HYDROData_DTM::CurveUZ mid( 5.0, gp_Vec2d(-10,10), 0, 0 );
+  HYDROData_DTM::CurveUZ mid( 5.0, gp_Vec2d(-10,10), 0, 10 );
   mid.push_back( HYDROData_DTM::PointUZ( 0, 5 ) );
   mid.push_back( HYDROData_DTM::PointUZ( 1, 6 ) );
-  HYDROData_DTM::CurveUZ wid( 5.0, gp_Vec2d(-10,10), 0, 0 );
+  HYDROData_DTM::CurveUZ wid( 5.0, gp_Vec2d(-10,10), 0, 10 );
   wid.push_back( HYDROData_DTM::PointUZ( 2, 5 ) );
   wid.push_back( HYDROData_DTM::PointUZ( 6, 6 ) );
   HYDROData_DTM::CurveTo3D( HA, mid, wid, points );
 
   CPPUNIT_ASSERT_EQUAL( 4, (int)points.size() );
-  CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 16.380, -2.186, 6.0 ), points[0] );
-  CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 15.673, -1.479, 5.0 ), points[1] );
-  CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 14.259, -0.065, 5.0 ), points[2] );
-  CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 12.137,  2.056, 6.0 ), points[3] );
+  CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 21.588, 5.419, 6.0 ), points[0] );
+  CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 20.881, 6.126, 5.0 ), points[1] );
+  CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 19.466, 7.541, 5.0 ), points[2] );
+  CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 17.345, 9.662, 6.0 ), points[3] );
 
   aDoc->Close();
 }
@@ -548,11 +553,12 @@ void test_HYDROData_DTM::test_presentation()
   CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, DTM->GetSpatialStep(), EPS );
   DTM->Update();
   
-  CPPUNIT_ASSERT_EQUAL( 9177, (int)DTM->GetAltitudePoints().size() ); 
+  CPPUNIT_ASSERT_EQUAL( 9108, (int)DTM->GetAltitudePoints().size() ); 
 
   Handle(AIS_InteractiveContext) aContext = TestViewer::context();
   HYDROGUI_ShapeBathymetry* aBathPrs = new HYDROGUI_ShapeBathymetry( 0, aContext, DTM );
   aBathPrs->update( true, false );
+  aBathPrs->RescaleDefault();
 
   bool ColorScaleIsDisp = TestViewer::ColorScaleIsDisplayed();
   TestViewer::showColorScale( true );
@@ -561,9 +567,9 @@ void test_HYDROData_DTM::test_presentation()
   aCS->SetMax( 5.0 );
   aCS->SetNumberOfIntervals( 10 );
   aBathPrs->UpdateWithColorScale( aCS );
-  
+  //QTest::qWait(50000);
   QImage aDTMPrs = draw_DTM( aBathPrs, 0.5, 600, 600 );
-  CPPUNIT_ASSERT_IMAGES2( &aDTMPrs, "DTM_1" );
+  CPPUNIT_ASSERT_IMAGES3( &aDTMPrs, "DTM_1", false );
   delete aBathPrs;
   TestViewer::showColorScale( ColorScaleIsDisp );
 
@@ -601,11 +607,12 @@ void test_HYDROData_DTM::test_garonne()
   CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, DTM->GetSpatialStep(), EPS );
   DTM->Update();
   
-  CPPUNIT_ASSERT_EQUAL( 282338, (int)DTM->GetAltitudePoints().size() ); 
+  CPPUNIT_ASSERT_EQUAL( 281898, (int)DTM->GetAltitudePoints().size() ); 
   
   Handle(AIS_InteractiveContext) aContext = TestViewer::context();
   HYDROGUI_ShapeBathymetry* aBathPrs = new HYDROGUI_ShapeBathymetry( 0, aContext, DTM );
   aBathPrs->update( true, false );
+  aBathPrs->RescaleDefault();
   
   bool ColorScaleIsDisp = TestViewer::ColorScaleIsDisplayed();
 
@@ -617,7 +624,7 @@ void test_HYDROData_DTM::test_garonne()
   aBathPrs->UpdateWithColorScale( aCS );
   
   QImage aDTMPrs = draw_DTM( aBathPrs, 0.5, 600, 600 );
-  CPPUNIT_ASSERT_IMAGES2( &aDTMPrs, "DTM_2" );
+  CPPUNIT_ASSERT_IMAGES3( &aDTMPrs, "DTM_2", false );
   TestViewer::showColorScale( ColorScaleIsDisp );
   delete aBathPrs;
   aDoc->Close();
@@ -647,18 +654,18 @@ void test_HYDROData_DTM::test_classifier_1()
   CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0123, values[0], EPS );
   CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0123, values[1], EPS );
   CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0221, values[2], EPS );
-  CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0123, values[3], EPS );
-  CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0123, values[4], EPS );
-  CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0123, values[5], EPS );
+  CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0221, values[3], EPS );
+  CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0221, values[4], EPS );
+  CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0221, values[5], EPS );
 
   std::vector<int> types = aCase->GetStricklerTypeForPoints( points );
   CPPUNIT_ASSERT_EQUAL( 6, (int)types.size() );
   CPPUNIT_ASSERT_EQUAL( 123, types[0] );
   CPPUNIT_ASSERT_EQUAL( 123, types[1] );
   CPPUNIT_ASSERT_EQUAL( 221, types[2] );
-  CPPUNIT_ASSERT_EQUAL( 123, types[3] );
-  CPPUNIT_ASSERT_EQUAL( 123, types[4] );
-  CPPUNIT_ASSERT_EQUAL( 123, types[5] );
+  CPPUNIT_ASSERT_EQUAL( 221, types[3] );
+  CPPUNIT_ASSERT_EQUAL( 221, types[4] );
+  CPPUNIT_ASSERT_EQUAL( 221, types[5] );
 
   aDoc->Close();
 }