Salome HOME
refs #430: incorrect coordinates in dump polyline
[modules/hydro.git] / src / HYDROData / test_HYDROData_BSplineOperation.cxx
index 33658760d4d4e1fac0460e4fd671c8ba9d90fd9f..51bf3693276fc6fe6cc4eef0aecfa571558018cf 100644 (file)
@@ -4,25 +4,32 @@
 #include <gp_Pnt.hxx>
 #include <QTransform>
 
+const double LOCAL_SELECTION_TOLERANCE = 0.0001;
+
 void test_HYDROData_BSplineOperation::testCurve()
 {
   // prepare points: function of sin(x)
-  QList<double> aPoints;
-  double x;
-  for(x = 0; x < 6.28; x += 0.1)
-    aPoints<<x<<sin(x);
+  NCollection_Sequence<gp_XYZ> aPoints;
+  for ( double x = 0; x < 6.28; x += 0.1 )
+  {
+    gp_XYZ aPoint( x, sin( x ), 0.0 );
+    aPoints.Append( aPoint );
+  }
   // compute BSpline
-  HYDROData_BSplineOperation aBSpline(aPoints, 0, false);
+  HYDROData_BSplineOperation aBSpline( aPoints, false, LOCAL_SELECTION_TOLERANCE );
+  
   Handle(Geom_BSplineCurve) aBS = aBSpline.Curve();
-  CPPUNIT_ASSERT(!aBS.IsNull());
-  CPPUNIT_ASSERT(!aBS->IsClosed());
-  CPPUNIT_ASSERT_EQUAL(aBS->Continuity(), GeomAbs_C2);
+  CPPUNIT_ASSERT( !aBS.IsNull() );
+  CPPUNIT_ASSERT( !aBS->IsClosed() );
+  CPPUNIT_ASSERT_EQUAL( aBS->Continuity(), GeomAbs_C2 );
+
   // check that values of BSpline are not far from original "sin" function
   // in all points of the curve
-  for(x = 0; x < 6.29; x += 0.001) {
-    double aDiff = aBS->Value(x).Y() - sin(aBS->Value(x).X());
-    if (aDiff < 0) aDiff = -aDiff;
-    CPPUNIT_ASSERT(aDiff < 3.e-6); // this number is found manually
+  for ( double x = 0; x < 6.29; x += 0.001 )
+  {
+    double aDiff = aBS->Value( x ).Y() - sin( aBS->Value( x ).X() );
+    if ( aDiff < 0 ) aDiff = -aDiff;
+    CPPUNIT_ASSERT( aDiff < 3.e-6 ); // this number is found manually
   }
 }
 
@@ -30,15 +37,22 @@ void test_HYDROData_BSplineOperation::testPath()
 {
   // prepare points: function of sin(x)
   static const double aScale = 10000000.;
-  QList<double> aPoints;
-  double x;
-  for(x = 0; x < 6.28; x += 0.1)
-    aPoints<<x*aScale<<sin(x) * aScale;
+
+  NCollection_Sequence<gp_XYZ> aPoints;
+  for ( double x = 0; x < 6.28; x += 0.1 )
+  {
+    gp_XYZ aPoint( x * aScale, sin( x ) * aScale, 0.0 );
+    aPoints.Append( aPoint );
+  }
+
   // convert to QPainterPath
-  HYDROData_BSplineOperation aBSpline(aPoints, 0, false);
-  CPPUNIT_ASSERT(!aBSpline.Curve().IsNull());
-  QPainterPath aPath = aBSpline.ComputePath();
-  CPPUNIT_ASSERT(!aPath.isEmpty());
+  HYDROData_BSplineOperation aBSpline( aPoints, false, LOCAL_SELECTION_TOLERANCE );
+
+  CPPUNIT_ASSERT( !aBSpline.Curve().IsNull() );
+
+  QPainterPath aPath;
+  aBSpline.ComputePath( aPath );
+  CPPUNIT_ASSERT( !aPath.isEmpty() );
   
   /*
   QImage aPic(1300, 600, QImage::Format_RGB32);
@@ -50,7 +64,7 @@ void test_HYDROData_BSplineOperation::testPath()
      
   // check that values of Path are not far from original "sin" function
   // in all points of the curve
-  QList<QPolygonF> aPolyF = aPath.toSubpathPolygons(QTransform());
+  QList<QPolygonF> aPolyF = aPath.toSubpathPolygons( QTransform() );
   QList<QPolygonF>::iterator aFIter = aPolyF.begin();
   for(; aFIter != aPolyF.end();aFIter++) {
     QPolygon aPoly = aFIter->toPolygon();