// Copyright (C) Stichting Deltares 2024. All rights reserved.
//
// This file is part of the Dam Engine.
//
// The Dam Engine is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using Deltares.DamEngine.Data.Geometry;
using NUnit.Framework;
namespace Deltares.DamEngine.Data.Tests.Geometry;
[TestFixture]
public class GeometryGeneratorTests
{
[TestCase(0.52, 0.51, false, true)]
[TestCase(0.51, 0.52, true, false)]
[TestCase(0.51, 0.51, true, true)]
[Test]
public void WhenDeterminePointClosestToLine_ThenResultIsAsExpected(double x1, double x2, bool isPoint1Closest, bool isPoint2Closest)
{
// Given
var line = new GeometryCurve(new Point2D(0.0, 0.0), new Point2D(1.0, 1.0));
var point1 = new Point2D(x1, 0.5);
var point2 = new Point2D(x2, 0.5);
var isPoint1ClosestToLine = true;
var isPoint2ClosestToLine = true;
// When
GeometryGenerator.DeterminePointClosestToLine(point1, point2, line, ref isPoint1ClosestToLine, ref isPoint2ClosestToLine);
Assert.Multiple(() =>
{
// Then
Assert.That(isPoint1ClosestToLine, Is.EqualTo(isPoint1Closest));
Assert.That(isPoint2ClosestToLine, Is.EqualTo(isPoint2Closest));
});
}
[Test, TestCaseSource(nameof(CurvesToBeTestedForParallelCurves))]
public void TestRegenerateParallelCurves(TestCaseCurvesToBeTestedForParallelCurves testCase)
{
// Given
var geometryData = new GeometryData();
geometryData.Points.Add(testCase.InputPoint1);
geometryData.Points.Add(testCase.InputPoint2);
geometryData.Points.Add(testCase.InputPoint3);
geometryData.Points.Add(testCase.InputPoint4);
var curve1 = new GeometryCurve(testCase.InputPoint1, testCase.InputPoint2);
var curve2 = new GeometryCurve(testCase.InputPoint3, testCase.InputPoint4);
geometryData.Curves.Add(curve1);
geometryData.Curves.Add(curve2);
var generator = new GeometryGenerator(geometryData);
// When
bool isCurveInserted = false;
generator.RegenerateParallelCurves(curve1, curve2, ref isCurveInserted);
// Then
Assert.Multiple(() =>
{
Assert.That(curve1.HeadPoint, Is.EqualTo(testCase.ExpectedPoint1));
Assert.That(curve1.EndPoint, Is.EqualTo(testCase.ExpectedPoint2));
Assert.That(curve2.HeadPoint, Is.EqualTo(testCase.ExpectedPoint3));
Assert.That(curve2.EndPoint, Is.EqualTo(testCase.ExpectedPoint4));
Assert.That(isCurveInserted, Is.EqualTo(testCase.IsCurveInserted));
if (testCase.ExpectedPoint5 != null)
{
Assert.That(geometryData.NewlyEffectedCurves[0].HeadPoint, Is.EqualTo(testCase.ExpectedPoint5));
}
if (testCase.ExpectedPoint6 != null)
{
Assert.That(geometryData.NewlyEffectedCurves[0].EndPoint, Is.EqualTo(testCase.ExpectedPoint6));
}
});
}
///
/// Test case class for parallel curves
///
public class TestCaseCurvesToBeTestedForParallelCurves
{
public Point2D InputPoint1 { get; init; }
public Point2D InputPoint2 { get; init; }
public Point2D InputPoint3 { get; init; }
public Point2D InputPoint4 { get; init; }
public Point2D ExpectedPoint1 { get; init; }
public Point2D ExpectedPoint2 { get; init; }
public Point2D ExpectedPoint3 { get; init; }
public Point2D ExpectedPoint4 { get; init; }
public Point2D ExpectedPoint5 { get; init; }
public Point2D ExpectedPoint6 { get; init; }
public bool IsCurveInserted { get; init; }
public int TestNumber { get; init; }
}
private static IEnumerable CurvesToBeTestedForParallelCurves
{
get
{
var point1 = new Point2D(0.0, 0.0);
var point2 = new Point2D(1.0, 1.0);
var point3 = new Point2D(2.0, 0.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point1,
InputPoint2 = point2,
InputPoint3 = point2,
InputPoint4 = point3,
IsCurveInserted = false,
ExpectedPoint1 = point1,
ExpectedPoint2 = point2,
ExpectedPoint3 = point2,
ExpectedPoint4 = point3,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 1: ordered, not parallel should do nothing");
var point2_1 = new Point2D(0.0, 0.0);
var point2_2 = new Point2D(4.0, 4.0);
var point2_3 = new Point2D(2.0, 2.0);
var point2_4 = new Point2D(3.0, 3.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point2_1,
InputPoint2 = point2_2,
InputPoint3 = point2_3,
InputPoint4 = point2_4,
IsCurveInserted = true,
ExpectedPoint1 = point2_1,
ExpectedPoint2 = point2_3,
ExpectedPoint3 = point2_3,
ExpectedPoint4 = point2_4,
ExpectedPoint5 = point2_4,
ExpectedPoint6 = point2_2
}).SetName("Test 2: p1--p3--p4--p2 -> split c1 to c(p1--p3) keep c2, insert c(p4--p2)");
var point3_1 = new Point2D(0.0, 0.0);
var point3_2 = new Point2D(4.0, 4.0);
var point3_3 = new Point2D(3.0, 3.0);
var point3_4 = new Point2D(2.0, 2.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point3_1,
InputPoint2 = point3_2,
InputPoint3 = point3_3,
InputPoint4 = point3_4,
IsCurveInserted = true,
ExpectedPoint1 = point3_1,
ExpectedPoint2 = point3_4,
ExpectedPoint3 = point3_3,
ExpectedPoint4 = point3_4,
ExpectedPoint5 = point3_3,
ExpectedPoint6 = point3_2
}).SetName("Test 3: p1--p4--p3--p2 split c1 to c(p1--p4) keep c2, insert c(p3--p2)");
var point4_1 = new Point2D(0.0, 0.0);
var point4_2 = new Point2D(3.0, 3.0);
var point4_3 = new Point2D(2.0, 2.0);
var point4_4 = new Point2D(4.0, 4.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point4_1,
InputPoint2 = point4_2,
InputPoint3 = point4_3,
InputPoint4 = point4_4,
IsCurveInserted = true,
ExpectedPoint1 = point4_1,
ExpectedPoint2 = point4_3,
ExpectedPoint3 = point4_2,
ExpectedPoint4 = point4_4,
ExpectedPoint5 = point4_3,
ExpectedPoint6 = point4_2
}).SetName("Test 4: p1--p3--p2--p4 split c1 to c(p1--p3) split c2 to c(p2--p4), insert c(p3--p2)");
var point5_1 = new Point2D(0.0, 0.0);
var point5_2 = new Point2D(3.0, 3.0);
var point5_3 = new Point2D(4.0, 4.0);
var point5_4 = new Point2D(2.0, 2.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point5_1,
InputPoint2 = point5_2,
InputPoint3 = point5_3,
InputPoint4 = point5_4,
IsCurveInserted = true,
ExpectedPoint1 = point5_1,
ExpectedPoint2 = point5_4,
ExpectedPoint3 = point5_3,
ExpectedPoint4 = point5_2,
ExpectedPoint5 = point5_4,
ExpectedPoint6 = point5_2
}).SetName("Test 5: p1--p4--p2--p3 split c1 to c(p1--p4) split c2 to c(p3--p2), insert c(p4--p2)");
var point6_1 = new Point2D(0.0, 0.0);
var point6_2 = new Point2D(2.0, 2.0);
var point6_3 = new Point2D(4.0, 4.0);
var point6_4 = new Point2D(3.0, 3.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point6_1,
InputPoint2 = point6_2,
InputPoint3 = point6_3,
InputPoint4 = point6_4,
IsCurveInserted = false,
ExpectedPoint1 = point6_1,
ExpectedPoint2 = point6_2,
ExpectedPoint3 = point6_3,
ExpectedPoint4 = point6_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 6: p1--p2 <--> p4--p3 in each other's extension, no overlap do nothing");
var point7_1 = new Point2D(0.0, 0.0);
var point7_2 = new Point2D(2.0, 2.0);
var point7_3 = new Point2D(3.0, 3.0);
var point7_4 = new Point2D(4.0, 4.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point7_1,
InputPoint2 = point7_2,
InputPoint3 = point7_3,
InputPoint4 = point7_4,
IsCurveInserted = false,
ExpectedPoint1 = point7_1,
ExpectedPoint2 = point7_2,
ExpectedPoint3 = point7_3,
ExpectedPoint4 = point7_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 7: p1--p2 <--> p3--p4 in each other's extension, no overlap do nothing");
var point8_1 = new Point2D(0.0, 0.0);
var point8_2 = new Point2D(2.0, 2.0);
var point8_3 = point8_1;
var point8_4 = new Point2D(4.0, 4.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point8_1,
InputPoint2 = point8_2,
InputPoint3 = point8_3,
InputPoint4 = point8_4,
IsCurveInserted = false,
ExpectedPoint1 = point8_1,
ExpectedPoint2 = point8_2,
ExpectedPoint3 = point8_2,
ExpectedPoint4 = point8_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 8: p1/p3--p2--p4 keep c1, split c2 to c(p2--p4)");
var point9_1 = new Point2D(0.0, 0.0);
var point9_2 = new Point2D(4.0, 4.0);
var point9_3 = point9_1;
var point9_4 = new Point2D(2.0, 2.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point9_1,
InputPoint2 = point9_2,
InputPoint3 = point9_3,
InputPoint4 = point9_4,
IsCurveInserted = false,
ExpectedPoint1 = point9_4,
ExpectedPoint2 = point9_2,
ExpectedPoint3 = point9_3,
ExpectedPoint4 = point9_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 9: p1/p3--p4--p2 split c1 to c(p4--p2), keep c2 (p3-p4)");
var point10_1 = new Point2D(0.0, 0.0);
var point10_2 = new Point2D(2.0, 2.0);
var point10_3 = new Point2D(4.0, 4.0);
var point10_4 = point10_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point10_1,
InputPoint2 = point10_2,
InputPoint3 = point10_3,
InputPoint4 = point10_4,
IsCurveInserted = false,
ExpectedPoint1 = point10_1,
ExpectedPoint2 = point10_2,
ExpectedPoint3 = point10_3,
ExpectedPoint4 = point10_2,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 10: p1/p4--p2--p3 keep c1(p1,p2) , split c2 to c(p3--p2)");
var point11_1 = new Point2D(0.0, 0.0);
var point11_2 = new Point2D(4.0, 4.0);
var point11_3 = new Point2D(2.0, 2.0);
var point11_4 = point11_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point11_1,
InputPoint2 = point11_2,
InputPoint3 = point11_3,
InputPoint4 = point11_4,
IsCurveInserted = false,
ExpectedPoint1 = point11_3,
ExpectedPoint2 = point11_2,
ExpectedPoint3 = point11_3,
ExpectedPoint4 = point11_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 11: p1/p4--p3--p2 split c1 to c1(p3,p2), keep c2 (p3--p4)");
var point12_1 = new Point2D(0.0, 0.0);
var point12_2 = new Point2D(2.0, 2.0);
var point12_3 = point12_2;
var point12_4 = new Point2D(4.0, 4.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point12_1,
InputPoint2 = point12_2,
InputPoint3 = point12_3,
InputPoint4 = point12_4,
IsCurveInserted = false,
ExpectedPoint1 = point12_1,
ExpectedPoint2 = point12_2,
ExpectedPoint3 = point12_3,
ExpectedPoint4 = point12_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 12: p1--p2/p3--p4 keep c1(p1,p2) , split c2(p2--p4)");
var point13_1 = new Point2D(4.0, 4.0);
var point13_2 = new Point2D(2.0, 2.0);
var point13_3 = point13_2;
var point13_4 = new Point2D(0.0, 0.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point13_1,
InputPoint2 = point13_2,
InputPoint3 = point13_3,
InputPoint4 = point13_4,
IsCurveInserted = false,
ExpectedPoint1 = point13_1,
ExpectedPoint2 = point13_2,
ExpectedPoint3 = point13_3,
ExpectedPoint4 = point13_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 13: p4--p2/p3--p1 keep c1(p1,p2) , keep c2(p3--p4)");
var point14_1 = new Point2D(2.0, 2.0);
var point14_2 = new Point2D(4.0, 4.0);
var point14_3 = new Point2D(0.0, 0.0);
var point14_4 = point14_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point14_1,
InputPoint2 = point14_2,
InputPoint3 = point14_3,
InputPoint4 = point14_4,
IsCurveInserted = false,
ExpectedPoint1 = point14_1,
ExpectedPoint2 = point14_2,
ExpectedPoint3 = point14_3,
ExpectedPoint4 = point14_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 14: p3--p1/p4--p2 keep c1(p1,p2) , keep c2(p3--p4)");
var point15_1 = new Point2D(2.0, 2.0);
var point15_2 = new Point2D(0.0, 0.0);
var point15_3 = new Point2D(4.0, 4.0);
var point15_4 = point15_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point15_1,
InputPoint2 = point15_2,
InputPoint3 = point15_3,
InputPoint4 = point15_4,
IsCurveInserted = false,
ExpectedPoint1 = point15_1,
ExpectedPoint2 = point15_2,
ExpectedPoint3 = point15_3,
ExpectedPoint4 = point15_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 15: p2--p1/p4--p3 keep c1(p1,p2) , keep c2(p3--p4)");
var point16_1 = new Point2D(4.0, 4.0);
var point16_2 = new Point2D(0.0, 0.0);
var point16_3 = new Point2D(2.0, 2.0);
var point16_4 = point16_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point16_1,
InputPoint2 = point16_2,
InputPoint3 = point16_3,
InputPoint4 = point16_4,
IsCurveInserted = false,
ExpectedPoint1 = point16_3,
ExpectedPoint2 = point16_2,
ExpectedPoint3 = point16_3,
ExpectedPoint4 = point16_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 16: p2--p3--p1/p4 split c1(p3,p2) , keep c2(p3--p4)");
var point17_1 = new Point2D(4.0, 4.0);
var point17_2 = new Point2D(2.0, 2.0);
var point17_3 = new Point2D(0.0, 0.0);
var point17_4 = point17_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point17_1,
InputPoint2 = point17_2,
InputPoint3 = point17_3,
InputPoint4 = point17_4,
IsCurveInserted = false,
ExpectedPoint1 = point17_1,
ExpectedPoint2 = point17_2,
ExpectedPoint3 = point17_3,
ExpectedPoint4 = point17_2,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 17: p3--p2--p1/p4 keep c1(p1,p2) , split c2(p3--p2)");
var point18_1 = new Point2D(2.0, 2.0);
var point18_2 = new Point2D(4.0, 4.0);
var point18_3 = point18_1;
var point18_4 = new Point2D(0.0, 0.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point18_1,
InputPoint2 = point18_2,
InputPoint3 = point18_3,
InputPoint4 = point18_4,
IsCurveInserted = false,
ExpectedPoint1 = point18_1,
ExpectedPoint2 = point18_2,
ExpectedPoint3 = point18_3,
ExpectedPoint4 = point18_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 18: p4--p1/p3--p2 keep c1(p1,p2) , keep c2(p3--p4)");
var point19_1 = new Point2D(2.0, 2.0);
var point19_2 = new Point2D(0.0, 0.0);
var point19_3 = point19_1;
var point19_4 = new Point2D(4.0, 4.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point19_1,
InputPoint2 = point19_2,
InputPoint3 = point19_3,
InputPoint4 = point19_4,
IsCurveInserted = false,
ExpectedPoint1 = point19_1,
ExpectedPoint2 = point19_2,
ExpectedPoint3 = point19_3,
ExpectedPoint4 = point19_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 19: p2--p1/p3--p4 keep c1(p1,p2) , keep c2(p3--p4)");
var point20_1 = new Point2D(4.0, 4.0);
var point20_2 = new Point2D(0.0, 0.0);
var point20_3 = point20_1;
var point20_4 = new Point2D(2.0, 2.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point20_1,
InputPoint2 = point20_2,
InputPoint3 = point20_3,
InputPoint4 = point20_4,
IsCurveInserted = false,
ExpectedPoint1 = point20_4,
ExpectedPoint2 = point20_2,
ExpectedPoint3 = point20_3,
ExpectedPoint4 = point20_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 20: p2--p4--p1/p3 split c1(p4,p2) , keep c2(p3--p4)");
var point21_1 = new Point2D(4.0, 4.0);
var point21_2 = new Point2D(2.0, 2.0);
var point21_3 = point21_1;
var point21_4 = new Point2D(0.0, 0.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point21_1,
InputPoint2 = point21_2,
InputPoint3 = point21_3,
InputPoint4 = point21_4,
IsCurveInserted = false,
ExpectedPoint1 = point21_1,
ExpectedPoint2 = point21_2,
ExpectedPoint3 = point21_2,
ExpectedPoint4 = point21_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 21: p4--p2--p1/p3 keep c1(p1,p2) , split c2(p2-p4)");
var point22_1 = new Point2D(2.0, 2.0);
var point22_2 = new Point2D(0.0, 0.0);
var point22_3 = new Point2D(4.0, 4.0);
var point22_4 = point22_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point22_1,
InputPoint2 = point22_2,
InputPoint3 = point22_3,
InputPoint4 = point22_4,
IsCurveInserted = false,
ExpectedPoint1 = point22_1,
ExpectedPoint2 = point22_2,
ExpectedPoint3 = point22_3,
ExpectedPoint4 = point22_1,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 22: p2/p4--p1--p3 keep c1(p1,p2) , split c2(p3-p1)");
var point23_1 = new Point2D(4.0, 4.0);
var point23_2 = new Point2D(0.0, 0.0);
var point23_3 = new Point2D(2.0, 2.0);
var point23_4 = point23_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point23_1,
InputPoint2 = point23_2,
InputPoint3 = point23_3,
InputPoint4 = point23_4,
IsCurveInserted = false,
ExpectedPoint1 = point23_1,
ExpectedPoint2 = point23_3,
ExpectedPoint3 = point23_3,
ExpectedPoint4 = point23_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 23: p2/p4--p3--p1 split c1(p1,p3) , keep c2(p3-p4)");
var point24_1 = new Point2D(0.0, 0.0);
var point24_2 = new Point2D(2.0, 2.0);
var point24_3 = new Point2D(4.0, 4.0);
var point24_4 = point24_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point24_1,
InputPoint2 = point24_2,
InputPoint3 = point24_3,
InputPoint4 = point24_4,
IsCurveInserted = false,
ExpectedPoint1 = point24_1,
ExpectedPoint2 = point24_2,
ExpectedPoint3 = point24_3,
ExpectedPoint4 = point24_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 24: p1--p2/p4--p3 keep c1(p1,p2) , keep c2(p3-p4)");
var point25_1 = new Point2D(4.0, 4.0);
var point25_2 = new Point2D(2.0, 2.0);
var point25_3 = new Point2D(0.0, 0.0);
var point25_4 = point25_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point25_1,
InputPoint2 = point25_2,
InputPoint3 = point25_3,
InputPoint4 = point25_4,
IsCurveInserted = false,
ExpectedPoint1 = point25_1,
ExpectedPoint2 = point25_2,
ExpectedPoint3 = point25_3,
ExpectedPoint4 = point25_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 25: p3--p2/p4--p1 keep c1(p1,p2) , keep c2(p3-p4)");
var point26_1 = new Point2D(0.0, 0.0);
var point26_2 = new Point2D(4.0, 4.0);
var point26_3 = new Point2D(2.0, 2.0);
var point26_4 = point26_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point26_1,
InputPoint2 = point26_2,
InputPoint3 = point26_3,
InputPoint4 = point26_4,
IsCurveInserted = false,
ExpectedPoint1 = point26_1,
ExpectedPoint2 = point26_3,
ExpectedPoint3 = point26_3,
ExpectedPoint4 = point26_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 26: p1--p3--p2/p4 split c1(p1,p3) , keep c2(p3-p4)");
var point27_1 = new Point2D(2.0, 2.0);
var point27_2 = new Point2D(4.0, 4.0);
var point27_3 = new Point2D(0.0, 0.0);
var point27_4 = point27_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point27_1,
InputPoint2 = point27_2,
InputPoint3 = point27_3,
InputPoint4 = point27_4,
IsCurveInserted = false,
ExpectedPoint1 = point27_1,
ExpectedPoint2 = point27_2,
ExpectedPoint3 = point27_3,
ExpectedPoint4 = point27_1,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 27: p3--p1--p2/p4 keep c1(p1,p2) , split c2(p3-p1)");
var point28_1 = new Point2D(2.0, 2.0);
var point28_2 = new Point2D(0.0, 0.0);
var point28_3 = point28_2;
var point28_4 = new Point2D(4.0, 4.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point28_1,
InputPoint2 = point28_2,
InputPoint3 = point28_3,
InputPoint4 = point28_4,
IsCurveInserted = false,
ExpectedPoint1 = point28_1,
ExpectedPoint2 = point28_2,
ExpectedPoint3 = point28_1,
ExpectedPoint4 = point28_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 28: p2/p3--p1--p4 keep c1(p1,p2) , split c2(p1-p4)");
var point29_1 = new Point2D(4.0, 4.0);
var point29_2 = new Point2D(0.0, 0.0);
var point29_3 = point29_2;
var point29_4 = new Point2D(2.0, 2.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point29_1,
InputPoint2 = point29_2,
InputPoint3 = point29_3,
InputPoint4 = point29_4,
IsCurveInserted = false,
ExpectedPoint1 = point29_1,
ExpectedPoint2 = point29_4,
ExpectedPoint3 = point29_3,
ExpectedPoint4 = point29_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 29: p2/p3--p4--p1 split c1(p1,p4) , keep c2(p3-p4)");
var point30_1 = new Point2D(0.0, 0.0);
var point30_2 = new Point2D(2.0, 2.0);
var point30_3 = point30_2;
var point30_4 = new Point2D(4.0, 4.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point30_1,
InputPoint2 = point30_2,
InputPoint3 = point30_3,
InputPoint4 = point30_4,
IsCurveInserted = false,
ExpectedPoint1 = point30_1,
ExpectedPoint2 = point30_2,
ExpectedPoint3 = point30_3,
ExpectedPoint4 = point30_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 30: p1--p2/p3--p4 keep c1(p1,p2) , keep c2(p3-p4)");
var point31_1 = new Point2D(4.0, 4.0);
var point31_2 = new Point2D(2.0, 2.0);
var point31_3 = point31_2;
var point31_4 = new Point2D(0.0, 0.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point31_1,
InputPoint2 = point31_2,
InputPoint3 = point31_3,
InputPoint4 = point31_4,
IsCurveInserted = false,
ExpectedPoint1 = point31_1,
ExpectedPoint2 = point31_2,
ExpectedPoint3 = point31_3,
ExpectedPoint4 = point31_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 31: p4--p2/p3--p1 keep c1(p1,p2) , keep c2(p3-p4)");
var point32_1 = new Point2D(0.0, 0.0);
var point32_2 = new Point2D(4.0, 4.0);
var point32_3 = point32_2;
var point32_4 = new Point2D(2.0, 2.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point32_1,
InputPoint2 = point32_2,
InputPoint3 = point32_3,
InputPoint4 = point32_4,
IsCurveInserted = false,
ExpectedPoint1 = point32_1,
ExpectedPoint2 = point32_4,
ExpectedPoint3 = point32_3,
ExpectedPoint4 = point32_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 32: p1--p4--p2/p3 split c1(p1,p4) , keep c2(p3-p4)");
var point33_1 = new Point2D(2.0, 2.0);
var point33_2 = new Point2D(4.0, 4.0);
var point33_3 = point33_2;
var point33_4 = new Point2D(0.0, 0.0);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point33_1,
InputPoint2 = point33_2,
InputPoint3 = point33_3,
InputPoint4 = point33_4,
IsCurveInserted = false,
ExpectedPoint1 = point33_1,
ExpectedPoint2 = point33_2,
ExpectedPoint3 = point33_1,
ExpectedPoint4 = point33_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 33: p4--p1--p2/p3 keep c1(p1,p2) , split c2(p1-p4)");
var point34_1 = new Point2D(39.580, 4.550);
var point34_2 = new Point2D(41.070, 4.540);
var point34_3 = point34_1;
var point34_4 = new Point2D(39.730, 4.549);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point34_1,
InputPoint2 = point34_2,
InputPoint3 = point34_3,
InputPoint4 = point34_4,
IsCurveInserted = false,
ExpectedPoint1 = point34_4,
ExpectedPoint2 = point34_2,
ExpectedPoint3 = point34_3,
ExpectedPoint4 = point34_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 34: near parallel p1/p3--p4--p2 split c1 to c(p4--p2), keep c2 (p3-p4)");
var point35_1 = new Point2D(39.580, 4.550);
var point35_2 = new Point2D(39.730, 4.549);
var point35_3 =point35_1;
var point35_4 = new Point2D(41.070, 4.540);
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
InputPoint1 = point35_1,
InputPoint2 = point35_2,
InputPoint3 = point35_3,
InputPoint4 = point35_4,
IsCurveInserted = false,
ExpectedPoint1 = point35_1,
ExpectedPoint2 = point35_2,
ExpectedPoint3 = point35_2,
ExpectedPoint4 = point35_4,
ExpectedPoint5 = null,
ExpectedPoint6 = null
}).SetName("Test 35: near parallel p1/p3--p2--p4 keep c1, split c2 to c(p2--p4)");
}
}
}