82TEST(SplineDeathTest, XIsFullRange) {
86 (void)
s.calculateCurve();
92 (void)
s.calculateCurve();
97TEST(SplineDeathTest, YIsLimited) {
100 Spline<> s({{0, {}}, {32767, -1}, {65535, {}}});
101 (void)
s.calculateCurve();
106 Spline<> s({{0, {}}, {32767, 65536}, {65535, {}}});
107 (void)
s.calculateCurve();
112TEST(SplineDeathTest, XIsStrictlyIncreasing) {
115 Spline<> s({{0, {}}, {0, {}}, {65535, {}}});
116 (void)
s.calculateCurve();
118 "strictly increasing");
121 Spline<> s({{0, {}}, {32767, {}}, {32767, {}}, {65535, {}}});
122 (void)
s.calculateCurve();
124 "strictly increasing");
127 Spline<> s({{0, {}}, {65535, {}}, {65535, {}}});
128 (void)
s.calculateCurve();
130 "strictly increasing");
133 Spline<> s({{0, {}}, {32767, {}}, {32766, {}}, {65535, {}}});
134 (void)
s.calculateCurve();
136 "strictly increasing");
217 make_tuple(std::array<rawspeed::iPoint2D, 2>{{{0, 0}, {65535, 65535}}},
218 std::vector<std::array<double, 4>>{{{0.0, 1.0, 0.0, 0.0}}}),
220 std::array<rawspeed::iPoint2D, 2>{{{0, 65535}, {65535, 0}}},
221 std::vector<std::array<double, 4>>{{{65535.0, -1.0, 0.0, 0.0}}})};
250 std::vector<T> steps;
252 const auto ptsTotal = 2U + numCp;
253 steps.reserve(ptsTotal);
255 std::generate_n(std::back_inserter(steps), ptsTotal,
256 [ptsTotal, &steps]() -> T {
257 const double t =
double(steps.size()) / (ptsTotal - 1);
258 const double x =
lerp(0.0, 65535.0, t);
259 if constexpr (std::is_floating_point<T>::value)
265 assert(ptsTotal == steps.size());
316 make_tuple(0, std::vector<int>{0, 65535}),
317 make_tuple(1, std::vector<int>{0, 32768, 65535}),
318 make_tuple(2, std::vector<int>{0, 21845, 43690, 65535}),
319 make_tuple(3, std::vector<int>{0, 16384, 32768, 49151, 65535}),
320 make_tuple(4, std::vector<int>{0, 13107, 26214, 39321, 52428, 65535}),
321 make_tuple(5, std::vector<int>{0, 10923, 21845, 32768, 43690, 54613, 65535}),
322 make_tuple(6, std::vector<int>{0, 9362, 18724, 28086, 37449, 46811, 56173, 65535}),
323 make_tuple(7, std::vector<int>{0, 8192, 16384, 24576, 32768, 40959, 49151, 57343, 65535}),
324 make_tuple(8, std::vector<int>{0, 7282, 14563, 21845, 29127, 36408, 43690, 50972, 58253, 65535}),
336 for (
auto i = 0U; i < got.size(); i++) {
337 ASSERT_NEAR(got[i], expected[i], 0.5);
340 ASSERT_GE(got[i], expected[i] - 0.5);
341 ASSERT_LT(got[i], expected[i] + 0.5);