1 // Copyright 2015, Tobias Hermann and the FunctionalPlus contributors.
2 // https://github.com/Dobiasd/FunctionalPlus
3 // Distributed under the Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE_1_0.txt or copy at
5 //  http://www.boost.org/LICENSE_1_0.txt)
6 
7 #include <doctest/doctest.h>
8 #include <fplus/fplus.hpp>
9 #include <vector>
10 
11 
12 namespace {
13     typedef std::vector<double> FloatVector;
14     FloatVector xs = {1.0, 2.0, 6.0};
15 }
16 
17 TEST_CASE("interpolate_test - interpolate_linear")
18 {
19     using namespace fplus;
20     REQUIRE(is_in_interval_around(0.0001, 1.0, elem_at_float_idx(-1.7, xs)));
21     REQUIRE(is_in_interval_around(0.0001, 1.0, elem_at_float_idx(-0.2, xs)));
22     REQUIRE(is_in_interval_around(0.0001, 1.0, elem_at_float_idx( 0.0, xs)));
23     REQUIRE(is_in_interval_around(0.0001, 1.2, elem_at_float_idx( 0.2, xs)));
24     REQUIRE(is_in_interval_around(0.0001, 1.7, elem_at_float_idx( 0.7, xs)));
25     REQUIRE(is_in_interval_around(0.0001, 2.0, elem_at_float_idx( 1.0, xs)));
26     REQUIRE(is_in_interval_around(0.0001, 4.0, elem_at_float_idx( 1.5, xs)));
27     REQUIRE(is_in_interval_around(0.0001, 5.6, elem_at_float_idx( 1.9, xs)));
28     REQUIRE(is_in_interval_around(0.0001, 6.0, elem_at_float_idx( 2.0, xs)));
29     REQUIRE(is_in_interval_around(0.0001, 6.0, elem_at_float_idx( 2.1, xs)));
30     REQUIRE(is_in_interval_around(0.0001, 6.0, elem_at_float_idx( 2.8, xs)));
31 }
32