@@ -48,6 +48,69 @@ TEST(Splines, SetSpline)
4848
4949 ASSERT_EQ (1 , splines.GetNumSplines ());
5050 ASSERT_EQ (4 , splines.m_splineNodes [0 ].size ());
51+
52+ constexpr double tolerance = 1e-6 ;
53+ ASSERT_NEAR (212.001953125000 , splines.m_splineNodes [0 ][0 ].x , tolerance);
54+ ASSERT_NEAR (529.253906250000 , splines.m_splineNodes [0 ][1 ].x , tolerance);
55+ ASSERT_NEAR (930.506469726562 , splines.m_splineNodes [0 ][2 ].x , tolerance);
56+ ASSERT_NEAR (1030.506469726562 , splines.m_splineNodes [0 ][3 ].x , tolerance);
57+
58+ ASSERT_NEAR (155.627197265625 , splines.m_splineNodes [0 ][0 ].y , tolerance);
59+ ASSERT_NEAR (432.379974365234 , splines.m_splineNodes [0 ][1 ].y , tolerance);
60+ ASSERT_NEAR (453.380187988281 , splines.m_splineNodes [0 ][2 ].y , tolerance);
61+ ASSERT_NEAR (653.380187988281 , splines.m_splineNodes [0 ][3 ].y , tolerance);
62+ }
63+
64+ TEST (Splines, NormalizeHorizontalSplineDirection)
65+ {
66+ std::vector<meshkernel::Point> splineNodes ({{1000.0 , 400.0 },
67+ {800.0 , 300.0 },
68+ {500.0 , 250.0 },
69+ {200.0 , 100.0 }});
70+
71+ meshkernel::Splines splines (meshkernel::Projection::cartesian);
72+ splines.AddSpline (splineNodes, 0 , static_cast <meshkernel::UInt>(splineNodes.size ()));
73+
74+ ASSERT_EQ (1 , splines.GetNumSplines ());
75+ ASSERT_EQ (4 , splines.m_splineNodes [0 ].size ());
76+
77+ constexpr double tolerance = 1e-6 ;
78+
79+ ASSERT_NEAR (200.0 , splines.m_splineNodes [0 ][0 ].x , tolerance);
80+ ASSERT_NEAR (500.0 , splines.m_splineNodes [0 ][1 ].x , tolerance);
81+ ASSERT_NEAR (800.0 , splines.m_splineNodes [0 ][2 ].x , tolerance);
82+ ASSERT_NEAR (1000.0 , splines.m_splineNodes [0 ][3 ].x , tolerance);
83+
84+ ASSERT_NEAR (100.0 , splines.m_splineNodes [0 ][0 ].y , tolerance);
85+ ASSERT_NEAR (250.0 , splines.m_splineNodes [0 ][1 ].y , tolerance);
86+ ASSERT_NEAR (300.0 , splines.m_splineNodes [0 ][2 ].y , tolerance);
87+ ASSERT_NEAR (400.0 , splines.m_splineNodes [0 ][3 ].y , tolerance);
88+ }
89+
90+ TEST (Splines, NormalizeVerticalSplineDirection)
91+ {
92+ std::vector<meshkernel::Point> splineNodes ({{500.0 , 800.0 },
93+ {500.0 , 600.0 },
94+ {500.0 , 400.0 },
95+ {500.0 , 200.0 }});
96+
97+ meshkernel::Splines splines (meshkernel::Projection::cartesian);
98+ splines.AddSpline (splineNodes, 0 , static_cast <meshkernel::UInt>(splineNodes.size ()));
99+
100+ ASSERT_EQ (1 , splines.GetNumSplines ());
101+ ASSERT_EQ (4 , splines.m_splineNodes [0 ].size ());
102+
103+ constexpr double tolerance = 1e-6 ;
104+
105+ ASSERT_NEAR (500.0 , splines.m_splineNodes [0 ][0 ].x , tolerance);
106+ ASSERT_NEAR (500.0 , splines.m_splineNodes [0 ][1 ].x , tolerance);
107+ ASSERT_NEAR (500.0 , splines.m_splineNodes [0 ][2 ].x , tolerance);
108+ ASSERT_NEAR (500.0 , splines.m_splineNodes [0 ][3 ].x , tolerance);
109+
110+ ASSERT_NEAR (200.0 , splines.m_splineNodes [0 ][0 ].y , tolerance);
111+ ASSERT_NEAR (400.0 , splines.m_splineNodes [0 ][1 ].y , tolerance);
112+ ASSERT_NEAR (600.0 , splines.m_splineNodes [0 ][2 ].y , tolerance);
113+ ASSERT_NEAR (800.0 , splines.m_splineNodes [0 ][3 ].y , tolerance);
51114}
52115
53116TEST (Splines, CubicSplineInterpolation)
0 commit comments