Validate ParameterBlocks before solve.

Ensure that all parameter blocks have finite values
before the minimizer is called.

Change-Id: I15fd9c487247989626f799496bb8f5ea8728d6f0
This commit is contained in:
Sameer Agarwal
2014-01-22 17:23:27 -08:00
parent 63cff485b6
commit 5e8321c39a
6 changed files with 102 additions and 25 deletions
+17
View File
@@ -54,5 +54,22 @@ 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);
}
} // namespace internal
} // namespace ceres