Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geometry/GeometryGeneratorTests.cs
===================================================================
diff -u -r6030 -r6404
--- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geometry/GeometryGeneratorTests.cs (.../GeometryGeneratorTests.cs) (revision 6030)
+++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geometry/GeometryGeneratorTests.cs (.../GeometryGeneratorTests.cs) (revision 6404)
@@ -1,4 +1,4 @@
-// Copyright (C) Stichting Deltares 2024. All rights reserved.
+// Copyright (C) Stichting Deltares 2025. All rights reserved.
//
// This file is part of the Dam Engine.
//
@@ -20,8 +20,6 @@
// All rights reserved.
using System.Collections.Generic;
-using System.Linq;
-using System.Security.Cryptography.X509Certificates;
using Deltares.DamEngine.Data.Geometry;
using NUnit.Framework;
@@ -30,84 +28,6 @@
[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
@@ -119,9 +39,9 @@
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point1,
- InputPoint2 = point2,
- InputPoint3 = point2,
+ InputPoint1 = point1,
+ InputPoint2 = point2,
+ InputPoint3 = point2,
InputPoint4 = point3,
IsCurveInserted = false,
ExpectedPoint1 = point1,
@@ -131,7 +51,7 @@
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);
@@ -140,9 +60,9 @@
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point2_1,
- InputPoint2 = point2_2,
- InputPoint3 = point2_3,
+ InputPoint1 = point2_1,
+ InputPoint2 = point2_2,
+ InputPoint3 = point2_3,
InputPoint4 = point2_4,
IsCurveInserted = true,
ExpectedPoint1 = point2_1,
@@ -152,7 +72,7 @@
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);
@@ -161,9 +81,9 @@
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point3_1,
- InputPoint2 = point3_2,
- InputPoint3 = point3_3,
+ InputPoint1 = point3_1,
+ InputPoint2 = point3_2,
+ InputPoint3 = point3_3,
InputPoint4 = point3_4,
IsCurveInserted = true,
ExpectedPoint1 = point3_1,
@@ -173,7 +93,7 @@
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);
@@ -182,9 +102,9 @@
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point4_1,
- InputPoint2 = point4_2,
- InputPoint3 = point4_3,
+ InputPoint1 = point4_1,
+ InputPoint2 = point4_2,
+ InputPoint3 = point4_3,
InputPoint4 = point4_4,
IsCurveInserted = true,
ExpectedPoint1 = point4_1,
@@ -194,7 +114,7 @@
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);
@@ -203,9 +123,9 @@
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point5_1,
- InputPoint2 = point5_2,
- InputPoint3 = point5_3,
+ InputPoint1 = point5_1,
+ InputPoint2 = point5_2,
+ InputPoint3 = point5_3,
InputPoint4 = point5_4,
IsCurveInserted = true,
ExpectedPoint1 = point5_1,
@@ -215,7 +135,7 @@
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);
@@ -224,9 +144,9 @@
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point6_1,
- InputPoint2 = point6_2,
- InputPoint3 = point6_3,
+ InputPoint1 = point6_1,
+ InputPoint2 = point6_2,
+ InputPoint3 = point6_3,
InputPoint4 = point6_4,
IsCurveInserted = false,
ExpectedPoint1 = point6_1,
@@ -236,7 +156,7 @@
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);
@@ -245,9 +165,9 @@
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point7_1,
- InputPoint2 = point7_2,
- InputPoint3 = point7_3,
+ InputPoint1 = point7_1,
+ InputPoint2 = point7_2,
+ InputPoint3 = point7_3,
InputPoint4 = point7_4,
IsCurveInserted = false,
ExpectedPoint1 = point7_1,
@@ -257,18 +177,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point8_1,
+ InputPoint2 = point8_2,
+ InputPoint3 = point8_3,
InputPoint4 = point8_4,
IsCurveInserted = false,
ExpectedPoint1 = point8_1,
@@ -278,18 +198,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point9_1,
+ InputPoint2 = point9_2,
+ InputPoint3 = point9_3,
InputPoint4 = point9_4,
IsCurveInserted = false,
ExpectedPoint1 = point9_4,
@@ -299,18 +219,18 @@
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;
+ Point2D point10_4 = point10_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point10_1,
- InputPoint2 = point10_2,
- InputPoint3 = point10_3,
+ InputPoint1 = point10_1,
+ InputPoint2 = point10_2,
+ InputPoint3 = point10_3,
InputPoint4 = point10_4,
IsCurveInserted = false,
ExpectedPoint1 = point10_1,
@@ -320,18 +240,18 @@
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;
+ Point2D point11_4 = point11_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point11_1,
- InputPoint2 = point11_2,
- InputPoint3 = point11_3,
+ InputPoint1 = point11_1,
+ InputPoint2 = point11_2,
+ InputPoint3 = point11_3,
InputPoint4 = point11_4,
IsCurveInserted = false,
ExpectedPoint1 = point11_3,
@@ -341,18 +261,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point12_1,
+ InputPoint2 = point12_2,
+ InputPoint3 = point12_3,
InputPoint4 = point12_4,
IsCurveInserted = false,
ExpectedPoint1 = point12_1,
@@ -362,18 +282,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point13_1,
+ InputPoint2 = point13_2,
+ InputPoint3 = point13_3,
InputPoint4 = point13_4,
IsCurveInserted = false,
ExpectedPoint1 = point13_1,
@@ -383,18 +303,18 @@
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;
+ Point2D point14_4 = point14_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point14_1,
- InputPoint2 = point14_2,
- InputPoint3 = point14_3,
+ InputPoint1 = point14_1,
+ InputPoint2 = point14_2,
+ InputPoint3 = point14_3,
InputPoint4 = point14_4,
IsCurveInserted = false,
ExpectedPoint1 = point14_1,
@@ -404,18 +324,18 @@
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;
+ Point2D point15_4 = point15_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point15_1,
- InputPoint2 = point15_2,
- InputPoint3 = point15_3,
+ InputPoint1 = point15_1,
+ InputPoint2 = point15_2,
+ InputPoint3 = point15_3,
InputPoint4 = point15_4,
IsCurveInserted = false,
ExpectedPoint1 = point15_1,
@@ -425,18 +345,18 @@
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;
+ Point2D point16_4 = point16_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point16_1,
- InputPoint2 = point16_2,
- InputPoint3 = point16_3,
+ InputPoint1 = point16_1,
+ InputPoint2 = point16_2,
+ InputPoint3 = point16_3,
InputPoint4 = point16_4,
IsCurveInserted = false,
ExpectedPoint1 = point16_3,
@@ -446,18 +366,18 @@
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;
+ Point2D point17_4 = point17_1;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point17_1,
- InputPoint2 = point17_2,
- InputPoint3 = point17_3,
+ InputPoint1 = point17_1,
+ InputPoint2 = point17_2,
+ InputPoint3 = point17_3,
InputPoint4 = point17_4,
IsCurveInserted = false,
ExpectedPoint1 = point17_1,
@@ -467,18 +387,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point18_1,
+ InputPoint2 = point18_2,
+ InputPoint3 = point18_3,
InputPoint4 = point18_4,
IsCurveInserted = false,
ExpectedPoint1 = point18_1,
@@ -488,18 +408,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point19_1,
+ InputPoint2 = point19_2,
+ InputPoint3 = point19_3,
InputPoint4 = point19_4,
IsCurveInserted = false,
ExpectedPoint1 = point19_1,
@@ -509,18 +429,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point20_1,
+ InputPoint2 = point20_2,
+ InputPoint3 = point20_3,
InputPoint4 = point20_4,
IsCurveInserted = false,
ExpectedPoint1 = point20_4,
@@ -530,18 +450,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point21_1,
+ InputPoint2 = point21_2,
+ InputPoint3 = point21_3,
InputPoint4 = point21_4,
IsCurveInserted = false,
ExpectedPoint1 = point21_1,
@@ -551,18 +471,18 @@
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;
+ Point2D point22_4 = point22_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point22_1,
- InputPoint2 = point22_2,
- InputPoint3 = point22_3,
+ InputPoint1 = point22_1,
+ InputPoint2 = point22_2,
+ InputPoint3 = point22_3,
InputPoint4 = point22_4,
IsCurveInserted = false,
ExpectedPoint1 = point22_1,
@@ -572,18 +492,18 @@
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;
+ Point2D point23_4 = point23_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point23_1,
- InputPoint2 = point23_2,
- InputPoint3 = point23_3,
+ InputPoint1 = point23_1,
+ InputPoint2 = point23_2,
+ InputPoint3 = point23_3,
InputPoint4 = point23_4,
IsCurveInserted = false,
ExpectedPoint1 = point23_1,
@@ -593,18 +513,18 @@
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;
+ Point2D point24_4 = point24_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point24_1,
- InputPoint2 = point24_2,
- InputPoint3 = point24_3,
+ InputPoint1 = point24_1,
+ InputPoint2 = point24_2,
+ InputPoint3 = point24_3,
InputPoint4 = point24_4,
IsCurveInserted = false,
ExpectedPoint1 = point24_1,
@@ -614,18 +534,18 @@
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;
+ Point2D point25_4 = point25_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point25_1,
- InputPoint2 = point25_2,
- InputPoint3 = point25_3,
+ InputPoint1 = point25_1,
+ InputPoint2 = point25_2,
+ InputPoint3 = point25_3,
InputPoint4 = point25_4,
IsCurveInserted = false,
ExpectedPoint1 = point25_1,
@@ -635,18 +555,18 @@
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;
+ Point2D point26_4 = point26_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point26_1,
- InputPoint2 = point26_2,
- InputPoint3 = point26_3,
+ InputPoint1 = point26_1,
+ InputPoint2 = point26_2,
+ InputPoint3 = point26_3,
InputPoint4 = point26_4,
IsCurveInserted = false,
ExpectedPoint1 = point26_1,
@@ -656,18 +576,18 @@
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;
+ Point2D point27_4 = point27_2;
yield return new TestCaseData(
new TestCaseCurvesToBeTestedForParallelCurves
{
TestNumber = 1,
- InputPoint1 = point27_1,
- InputPoint2 = point27_2,
- InputPoint3 = point27_3,
+ InputPoint1 = point27_1,
+ InputPoint2 = point27_2,
+ InputPoint3 = point27_3,
InputPoint4 = point27_4,
IsCurveInserted = false,
ExpectedPoint1 = point27_1,
@@ -677,18 +597,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point28_1,
+ InputPoint2 = point28_2,
+ InputPoint3 = point28_3,
InputPoint4 = point28_4,
IsCurveInserted = false,
ExpectedPoint1 = point28_1,
@@ -698,18 +618,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point29_1,
+ InputPoint2 = point29_2,
+ InputPoint3 = point29_3,
InputPoint4 = point29_4,
IsCurveInserted = false,
ExpectedPoint1 = point29_1,
@@ -719,18 +639,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point30_1,
+ InputPoint2 = point30_2,
+ InputPoint3 = point30_3,
InputPoint4 = point30_4,
IsCurveInserted = false,
ExpectedPoint1 = point30_1,
@@ -740,18 +660,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point31_1,
+ InputPoint2 = point31_2,
+ InputPoint3 = point31_3,
InputPoint4 = point31_4,
IsCurveInserted = false,
ExpectedPoint1 = point31_1,
@@ -761,18 +681,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point32_1,
+ InputPoint2 = point32_2,
+ InputPoint3 = point32_3,
InputPoint4 = point32_4,
IsCurveInserted = false,
ExpectedPoint1 = point32_1,
@@ -782,19 +702,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point33_1,
+ InputPoint2 = point33_2,
+ InputPoint3 = point33_3,
InputPoint4 = point33_4,
IsCurveInserted = false,
ExpectedPoint1 = point33_1,
@@ -804,18 +723,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point34_1,
+ InputPoint2 = point34_2,
+ InputPoint3 = point34_3,
InputPoint4 = point34_4,
IsCurveInserted = false,
ExpectedPoint1 = point34_4,
@@ -825,18 +744,18 @@
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;
+ Point2D 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,
+ InputPoint1 = point35_1,
+ InputPoint2 = point35_2,
+ InputPoint3 = point35_3,
InputPoint4 = point35_4,
IsCurveInserted = false,
ExpectedPoint1 = point35_1,
@@ -848,4 +767,84 @@
}).SetName("Test 35: near parallel p1/p3--p2--p4 keep c1, split c2 to c(p2--p4)");
}
}
+
+ [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
+ var 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; }
+ }
}
\ No newline at end of file