public void PointOnLineMidpoint()
        {
            var sketch = Sketch.Create();
            var p1     = sketch.AddPoint(new Pnt2d(3, -10));
            var p2     = sketch.AddPoint(new Pnt2d(3, 10));
            var line   = new SketchSegmentLine(p1, p2);
            var s1     = sketch.AddSegment(line);
            var p3     = sketch.AddPoint(new Pnt2d(-5, -5));
            var p4     = sketch.AddPoint(new Pnt2d(20, 20));
            var s2     = sketch.AddSegment(new SketchSegmentLine(p3, p4));
            var c1     = sketch.AddConstraint(new SketchConstraintPointOnMidpoint(p3, s1));

            Assert.IsTrue(sketch.SolveConstraints(true));
            var pointOnCurve = new Geom2dAPI_ProjectPointOnCurve(sketch.Points[p3], line.MakeCurve(sketch.Points));

            Assert.AreEqual(1, pointOnCurve.NbPoints());
            Assert.AreEqual(0.0, pointOnCurve.Distance(1), MaxLengthDelta);

            sketch.Points[p3] = new Pnt2d(18, 18);
            Assert.IsTrue(sketch.SolveConstraints(true));
            pointOnCurve = new Geom2dAPI_ProjectPointOnCurve(sketch.Points[p3], new Geom2d_Line(line.GetLine(sketch.Points)));
            Assert.AreEqual(1, pointOnCurve.NbPoints());
            Assert.AreEqual(0.0, pointOnCurve.Distance(1), MaxLengthDelta);
            Assert.AreEqual(pointOnCurve.Point(1).Distance(sketch.Points[p1]), pointOnCurve.Point(1).Distance(sketch.Points[p2]), MaxLengthDelta);
        }