diff options
Diffstat (limited to 'internal/ceres/array_utils_test.cc')
-rw-r--r-- | internal/ceres/array_utils_test.cc | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/internal/ceres/array_utils_test.cc b/internal/ceres/array_utils_test.cc index c19a44a..203a301 100644 --- a/internal/ceres/array_utils_test.cc +++ b/internal/ceres/array_utils_test.cc @@ -32,6 +32,7 @@ #include <limits> #include <cmath> +#include <vector> #include "gtest/gtest.h" namespace ceres { @@ -54,5 +55,68 @@ TEST(ArrayUtils, IsArrayValid) { EXPECT_FALSE(IsArrayValid(3, x)); } +TEST(ArrayUtils, FindInvalidIndex) { + double x[3]; + x[0] = 0.0; + x[1] = 1.0; + x[2] = 2.0; + EXPECT_EQ(FindInvalidValue(3, x), 3); + x[1] = std::numeric_limits<double>::infinity(); + EXPECT_EQ(FindInvalidValue(3, x), 1); + x[1] = std::numeric_limits<double>::quiet_NaN(); + EXPECT_EQ(FindInvalidValue(3, x), 1); + x[1] = std::numeric_limits<double>::signaling_NaN(); + EXPECT_EQ(FindInvalidValue(3, x), 1); + EXPECT_EQ(FindInvalidValue(1, NULL), 1); + InvalidateArray(3, x); + EXPECT_EQ(FindInvalidValue(3, x), 0); +} + +TEST(MapValuesToContiguousRange, ContiguousEntries) { + vector<int> array; + array.push_back(0); + array.push_back(1); + vector<int> expected = array; + MapValuesToContiguousRange(array.size(), &array[0]); + EXPECT_EQ(array, expected); + array.clear(); + + array.push_back(1); + array.push_back(0); + expected = array; + MapValuesToContiguousRange(array.size(), &array[0]); + EXPECT_EQ(array, expected); +} + +TEST(MapValuesToContiguousRange, NonContiguousEntries) { + vector<int> array; + array.push_back(0); + array.push_back(2); + vector<int> expected; + expected.push_back(0); + expected.push_back(1); + MapValuesToContiguousRange(array.size(), &array[0]); + EXPECT_EQ(array, expected); +} + +TEST(MapValuesToContiguousRange, NonContiguousRepeatingEntries) { + vector<int> array; + array.push_back(3); + array.push_back(1); + array.push_back(0); + array.push_back(0); + array.push_back(0); + array.push_back(5); + vector<int> expected; + expected.push_back(2); + expected.push_back(1); + expected.push_back(0); + expected.push_back(0); + expected.push_back(0); + expected.push_back(3); + MapValuesToContiguousRange(array.size(), &array[0]); + EXPECT_EQ(array, expected); +} + } // namespace internal } // namespace ceres |