+
+void QuadraticPlanarInterpTest::checkMakePartitionAbs1()
+{
+ INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-14);
+ Node *n0=new Node(0.,0.); Node *n4=new Node(0.5,0.25);
+ Node *n1=new Node(0.,0.5); Node *n5=new Node(0.3,1.2);
+ Node *n2=new Node(1.,0.5); Node *n6=new Node(1.1,1.3);
+ Node *n3=new Node(1.,0.); Node *n7=new Node(-0.1,0.9);
+ EdgeLin *e0_1=new EdgeLin(n0,n1);
+ EdgeLin *e1_2=new EdgeLin(n1,n2); EdgeLin *e4_5=new EdgeLin(n4,n5);
+ EdgeLin *e2_3=new EdgeLin(n2,n3); EdgeLin *e5_6=new EdgeLin(n5,n6);
+ EdgeLin *e3_0=new EdgeLin(n3,n0); EdgeLin *e6_4=new EdgeLin(n6,n4);
+ EdgeLin *e4_7=new EdgeLin(n4,n7); EdgeLin *e7_5=new EdgeLin(n7,n5);
+ QuadraticPolygon pol1; pol1.pushBack(e0_1); pol1.pushBack(e1_2); pol1.pushBack(e2_3); pol1.pushBack(e3_0);
+ QuadraticPolygon pol2; pol2.pushBack(e4_5); pol2.pushBack(e5_6); pol2.pushBack(e6_4);
+ pol2.pushBack(e7_5); e4_5->incrRef(); pol2.pushBack(new ElementaryEdge(e4_5,false)); pol2.pushBack(e4_7);
+ n0->decrRef(); n1->decrRef(); n2->decrRef(); n3->decrRef(); n4->decrRef(); n5->decrRef(); n6->decrRef(); n7->decrRef();
+ pol1.dumpInXfigFileWithOther(pol2,"tony.fig");
+}
+
+/**
+ * Arc/arc intersection was buggy: a point was detected OFF when used in a linear segment, but
+ * detected ON when used in an (almost flat) arc of circle.
+ */
+void QuadraticPlanarInterpTest::checkArcArcIntersection1()
+{
+ double eps=1.0e-8;
+ INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(eps);
+
+ Node *n0=new Node(6.37533,38.8928); Node *n3=new Node(6.29194,39.2789);
+ Node *n1=new Node(6.13158,38.8308); Node *n4=new Node(6.31919,38.7607);
+ Node *n2=new Node(6.25346,38.8618); Node *n5=new Node(6.38778,39.0241);
+
+ Node *n6=new Node(6.2534549999999998, 38.861800000000002); // to have a linear edge e1
+
+ //EdgeArcCircle *e1=new EdgeArcCircle(n0, n2, n6, true); // to have a linear edge e1
+ EdgeArcCircle *e1=new EdgeArcCircle(n0, n2, n1, true);
+ EdgeArcCircle *e2=new EdgeArcCircle(n3, n5, n4, true);
+
+ MergePoints merge;
+ QuadraticPolygon c1,c2;
+ e1->intersectWith(e2,merge,c1,c2);
+ CPPUNIT_ASSERT_EQUAL(2,c1.size());
+ CPPUNIT_ASSERT_EQUAL(2,c2.size());
+ //clean-up
+ n0->decrRef(); n1->decrRef(); n2->decrRef(); n3->decrRef(); n4->decrRef(); n5->decrRef(); n6->decrRef();
+ e1->decrRef(); e2->decrRef();
+}
+
+
+}
+
+