From c2fc3cbe4c8af82117ea6b975409a392aad71d95 Mon Sep 17 00:00:00 2001
From: Michael Krisper <michael.krisper@tugraz.at>
Date: Tue, 9 Aug 2016 15:57:11 +0200
Subject: [PATCH] DelaunayMapTests updated, new Test added

---
 .../VectoCoreTest/Utils/DelauneyMapTest.cs    | 93 +++++++++++++------
 1 file changed, 67 insertions(+), 26 deletions(-)

diff --git a/VectoCore/VectoCoreTest/Utils/DelauneyMapTest.cs b/VectoCore/VectoCoreTest/Utils/DelauneyMapTest.cs
index 6319a472f2..7d0732987f 100644
--- a/VectoCore/VectoCoreTest/Utils/DelauneyMapTest.cs
+++ b/VectoCore/VectoCoreTest/Utils/DelauneyMapTest.cs
@@ -29,9 +29,12 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
-using System;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System;
+using System.IO;
+using System.Linq;
 using TUGraz.VectoCommon.Exceptions;
+using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Tests.Utils
@@ -51,7 +54,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 
 			var result = map.Interpolate(0.25, 0.25);
 
-			AssertHelper.AreRelativeEqual(0, result.Value);
+			AssertHelper.AreRelativeEqual(0, result);
 		}
 
 		[TestMethod]
@@ -65,21 +68,21 @@ namespace TUGraz.VectoCore.Tests.Utils
 			map.Triangulate();
 
 			// fixed points
-			AssertHelper.AreRelativeEqual(0, map.Interpolate(0, 0).Value);
-			AssertHelper.AreRelativeEqual(1, map.Interpolate(1, 0).Value);
-			AssertHelper.AreRelativeEqual(2, map.Interpolate(0, 1).Value);
+			AssertHelper.AreRelativeEqual(0, map.Interpolate(0, 0));
+			AssertHelper.AreRelativeEqual(1, map.Interpolate(1, 0));
+			AssertHelper.AreRelativeEqual(2, map.Interpolate(0, 1));
 
 			// interpolations
-			AssertHelper.AreRelativeEqual(0.5, map.Interpolate(0.5, 0).Value);
-			AssertHelper.AreRelativeEqual(1, map.Interpolate(0, 0.5).Value);
-			AssertHelper.AreRelativeEqual(1.5, map.Interpolate(0.5, 0.5).Value);
+			AssertHelper.AreRelativeEqual(0.5, map.Interpolate(0.5, 0));
+			AssertHelper.AreRelativeEqual(1, map.Interpolate(0, 0.5));
+			AssertHelper.AreRelativeEqual(1.5, map.Interpolate(0.5, 0.5));
 
-			AssertHelper.AreRelativeEqual(0.25, map.Interpolate(0.25, 0).Value);
-			AssertHelper.AreRelativeEqual(0.5, map.Interpolate(0, 0.25).Value);
-			AssertHelper.AreRelativeEqual(0.75, map.Interpolate(0.25, 0.25).Value);
+			AssertHelper.AreRelativeEqual(0.25, map.Interpolate(0.25, 0));
+			AssertHelper.AreRelativeEqual(0.5, map.Interpolate(0, 0.25));
+			AssertHelper.AreRelativeEqual(0.75, map.Interpolate(0.25, 0.25));
 
-			AssertHelper.AreRelativeEqual(0.75, map.Interpolate(0.75, 0).Value);
-			AssertHelper.AreRelativeEqual(1.5, map.Interpolate(0, 0.75).Value);
+			AssertHelper.AreRelativeEqual(0.75, map.Interpolate(0.75, 0));
+			AssertHelper.AreRelativeEqual(1.5, map.Interpolate(0, 0.75));
 
 			// extrapolation (should fail)
 			Assert.IsNull(map.Interpolate(1, 1));
@@ -99,24 +102,24 @@ namespace TUGraz.VectoCore.Tests.Utils
 			map.Triangulate();
 
 			// fixed points
-			AssertHelper.AreRelativeEqual(0, map.Interpolate(0, 0).Value);
-			AssertHelper.AreRelativeEqual(1, map.Interpolate(1, 0).Value);
-			AssertHelper.AreRelativeEqual(2, map.Interpolate(0, 1).Value);
-			AssertHelper.AreRelativeEqual(3, map.Interpolate(1, 1).Value);
+			AssertHelper.AreRelativeEqual(0, map.Interpolate(0, 0));
+			AssertHelper.AreRelativeEqual(1, map.Interpolate(1, 0));
+			AssertHelper.AreRelativeEqual(2, map.Interpolate(0, 1));
+			AssertHelper.AreRelativeEqual(3, map.Interpolate(1, 1));
 
 			// interpolations
-			AssertHelper.AreRelativeEqual(0.5, map.Interpolate(0.5, 0).Value);
-			AssertHelper.AreRelativeEqual(1, map.Interpolate(0, 0.5).Value);
-			AssertHelper.AreRelativeEqual(2, map.Interpolate(1, 0.5).Value);
-			AssertHelper.AreRelativeEqual(2.5, map.Interpolate(0.5, 1).Value);
+			AssertHelper.AreRelativeEqual(0.5, map.Interpolate(0.5, 0));
+			AssertHelper.AreRelativeEqual(1, map.Interpolate(0, 0.5));
+			AssertHelper.AreRelativeEqual(2, map.Interpolate(1, 0.5));
+			AssertHelper.AreRelativeEqual(2.5, map.Interpolate(0.5, 1));
 
-			AssertHelper.AreRelativeEqual(1.5, map.Interpolate(0.5, 0.5).Value);
+			AssertHelper.AreRelativeEqual(1.5, map.Interpolate(0.5, 0.5));
 
-			AssertHelper.AreRelativeEqual(0.75, map.Interpolate(0.25, 0.25).Value);
-			AssertHelper.AreRelativeEqual(2.25, map.Interpolate(0.75, 0.75).Value);
+			AssertHelper.AreRelativeEqual(0.75, map.Interpolate(0.25, 0.25));
+			AssertHelper.AreRelativeEqual(2.25, map.Interpolate(0.75, 0.75));
 
-			AssertHelper.AreRelativeEqual(1.75, map.Interpolate(0.25, 0.75).Value);
-			AssertHelper.AreRelativeEqual(1.25, map.Interpolate(0.75, 0.25).Value);
+			AssertHelper.AreRelativeEqual(1.75, map.Interpolate(0.25, 0.75));
+			AssertHelper.AreRelativeEqual(1.25, map.Interpolate(0.75, 0.25));
 
 			// extrapolation (should fail)
 			AssertHelper.Exception<VectoException>(() => map.Interpolate(1.5, 0.5), "Interpolation failed.");
@@ -168,5 +171,43 @@ namespace TUGraz.VectoCore.Tests.Utils
 			AssertHelper.Exception<VectoException>(() => { map.Triangulate(); },
 				"TEST: Input Data for Delaunay map contains duplicates! \n1 / 1");
 		}
+
+		[TestMethod]
+		public void Test_Delaunay_NormalOperation()
+		{
+			foreach (var factors in	new[] {
+				Tuple.Create(1.0, 1.0),
+				Tuple.Create(1.0, 0.04),
+				Tuple.Create(1.0, 0.1),
+				Tuple.Create(1.0, 0.01),
+				Tuple.Create(1.0, 0.0001)
+			}) {
+				var xfactor = factors.Item1;
+				var yfactor = factors.Item2;
+
+				var map = new DelaunayMap("TEST");
+				var points =
+					File.ReadAllLines(@"TestData\Components\40t_Long_Haul_Truck.vmap")
+						.Skip(1)
+						.Select(s => {
+							var p = s.Split(',').ToDouble().ToList();
+							return new Point(p[0] * xfactor, p[1] * yfactor, p[2]);
+						})
+						.ToList();
+
+				points.ForEach(p => map.AddPoint(p.X, p.Y, p.Z));
+				map.Triangulate();
+
+				// test fixed points
+				foreach (var p in points) {
+					AssertHelper.AreRelativeEqual(p.Z, map.Interpolate(p.X, p.Y));
+				}
+				map.DrawGraph();
+
+				// test one arbitrary point in the middle
+				AssertHelper.AreRelativeEqual(37681, map.Interpolate(1500 * xfactor, 1300 * yfactor),
+					string.Format("{0}, {1}", xfactor, yfactor));
+			}
+		}
 	}
 }
\ No newline at end of file
-- 
GitLab