diff --git a/.cproject b/.cproject index 9d037969e..5e52e703d 100644 --- a/.cproject +++ b/.cproject @@ -322,14 +322,6 @@ true true - - make - -j2 - testGaussianFactor.run - true - true - true - make -j2 @@ -356,6 +348,7 @@ make + tests/testBayesTree.run true false @@ -363,6 +356,7 @@ make + testBinaryBayesNet.run true false @@ -410,6 +404,7 @@ make + testSymbolicBayesNet.run true false @@ -417,6 +412,7 @@ make + tests/testSymbolicFactor.run true false @@ -424,6 +420,7 @@ make + testSymbolicFactorGraph.run true false @@ -439,11 +436,20 @@ make + tests/testBayesTree true false true + + make + -j2 + testGaussianFactor.run + true + true + true + make -j2 @@ -478,7 +484,6 @@ make - testGraph.run true false @@ -574,7 +579,6 @@ make - testInference.run true false @@ -582,7 +586,6 @@ make - testGaussianBayesNet.run true false @@ -590,7 +593,6 @@ make - testGaussianFactor.run true false @@ -598,7 +600,6 @@ make - testJunctionTree.run true false @@ -606,7 +607,6 @@ make - testSymbolicBayesNet.run true false @@ -614,7 +614,6 @@ make - testSymbolicFactorGraph.run true false @@ -966,6 +965,7 @@ make + testErrors.run true false @@ -1325,7 +1325,6 @@ make - testSimulated2DOriented.run true false @@ -1365,7 +1364,6 @@ make - testSimulated2D.run true false @@ -1373,7 +1371,6 @@ make - testSimulated3D.run true false @@ -1395,6 +1392,14 @@ true true + + make + -j2 + tests/testTestableAssertions.run + true + true + true + make -j2 @@ -1469,7 +1474,6 @@ make - tests/testGaussianISAM2 true false @@ -1491,6 +1495,46 @@ true true + + make + -j2 + install + true + true + true + + + make + -j2 + clean + true + true + true + + + make + -j2 + check + true + true + true + + + make + -j2 + all + true + true + true + + + make + -j2 + dist + true + true + true + make -j2 @@ -1587,54 +1631,6 @@ true true - - make - -j2 - install - true - true - true - - - make - -j2 - clean - true - true - true - - - make - -j2 - check - true - true - true - - - make - -j2 - all - true - true - true - - - make - -j2 - dist - true - true - true - - - make - -j2 - check - true - true - true - make -j2 @@ -1667,6 +1663,14 @@ true true + + make + -j2 + check + true + true + true + @@ -1989,14 +1993,6 @@ true true - - make - -j2 - testGaussianFactor.run - true - true - true - make -j2 @@ -2023,6 +2019,7 @@ make + tests/testBayesTree.run true false @@ -2030,6 +2027,7 @@ make + testBinaryBayesNet.run true false @@ -2077,6 +2075,7 @@ make + testSymbolicBayesNet.run true false @@ -2084,6 +2083,7 @@ make + tests/testSymbolicFactor.run true false @@ -2091,6 +2091,7 @@ make + testSymbolicFactorGraph.run true false @@ -2106,11 +2107,20 @@ make + tests/testBayesTree true false true + + make + -j2 + testGaussianFactor.run + true + true + true + make -j2 @@ -2145,7 +2155,6 @@ make - testGraph.run true false @@ -2241,7 +2250,6 @@ make - testInference.run true false @@ -2249,7 +2257,6 @@ make - testGaussianBayesNet.run true false @@ -2257,7 +2264,6 @@ make - testGaussianFactor.run true false @@ -2265,7 +2271,6 @@ make - testJunctionTree.run true false @@ -2273,7 +2278,6 @@ make - testSymbolicBayesNet.run true false @@ -2281,7 +2285,6 @@ make - testSymbolicFactorGraph.run true false @@ -2633,6 +2636,7 @@ make + testErrors.run true false @@ -2992,7 +2996,6 @@ make - testSimulated2DOriented.run true false @@ -3032,7 +3035,6 @@ make - testSimulated2D.run true false @@ -3040,7 +3042,6 @@ make - testSimulated3D.run true false @@ -3062,6 +3063,14 @@ true true + + make + -j2 + tests/testTestableAssertions.run + true + true + true + make -j2 @@ -3136,7 +3145,6 @@ make - tests/testGaussianISAM2 true false @@ -3158,6 +3166,46 @@ true true + + make + -j2 + install + true + true + true + + + make + -j2 + clean + true + true + true + + + make + -j2 + check + true + true + true + + + make + -j2 + all + true + true + true + + + make + -j2 + dist + true + true + true + make -j2 @@ -3254,54 +3302,6 @@ true true - - make - -j2 - install - true - true - true - - - make - -j2 - clean - true - true - true - - - make - -j2 - check - true - true - true - - - make - -j2 - all - true - true - true - - - make - -j2 - dist - true - true - true - - - make - -j2 - check - true - true - true - make -j2 @@ -3334,6 +3334,14 @@ true true + + make + -j2 + check + true + true + true + diff --git a/gtsam/base/Makefile.am b/gtsam/base/Makefile.am index c01b20f7a..2e0a0a65d 100644 --- a/gtsam/base/Makefile.am +++ b/gtsam/base/Makefile.am @@ -25,7 +25,7 @@ endif # Testing headers += Testable.h TestableAssertions.h numericalDerivative.h sources += timing.cpp debug.cpp -check_PROGRAMS += tests/testDebug +check_PROGRAMS += tests/testDebug tests/testTestableAssertions # Lie Groups headers += Lie.h Lie-inl.h lieProxies.h LieScalar.h diff --git a/gtsam/base/TestableAssertions.h b/gtsam/base/TestableAssertions.h index f02bf2eda..597d7fee1 100644 --- a/gtsam/base/TestableAssertions.h +++ b/gtsam/base/TestableAssertions.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -37,6 +38,39 @@ bool assert_equal(const Index& expected, const Index& actual, double tol = 0.0) return true; } +/** + * Comparisons for boost.optional objects that checks whether objects exist + * before comparing their values. First version allows for both to be + * boost::none, but the second, with expected given rather than optional + * + * Concept requirement: V is testable + */ +template +bool assert_equal(const boost::optional& expected, + const boost::optional& actual, double tol = 1e-9) { + if (!expected && actual) { + std::cout << "expected is boost::none, while actual is not" << std::endl; + return false; + } + if (expected && !actual) { + std::cout << "actual is boost::none, while expected is not" << std::endl; + return false; + } + if (!expected && !actual) + return true; + return assert_equal(*expected, *actual, tol); +} + +template +bool assert_equal(const V& expected, const boost::optional& actual, double tol = 1e-9) { + if (!actual) { + std::cout << "actual is boost::none" << std::endl; + return false; + } + return assert_equal(expected, *actual, tol); +} + + /** * Version of assert_equals to work with vectors * @DEPRECIATED: use container equals instead diff --git a/gtsam/base/tests/testTestableAssertions.cpp b/gtsam/base/tests/testTestableAssertions.cpp new file mode 100644 index 000000000..1a77285d8 --- /dev/null +++ b/gtsam/base/tests/testTestableAssertions.cpp @@ -0,0 +1,25 @@ +/** + * @file testTestableAssertions + * @author Alex Cunningham + */ + +#include + +#include +#include + +using namespace gtsam; + +/* ************************************************************************* */ +TEST( testTestableAssertions, optional ) { + typedef boost::optional OptionalScalar; + LieScalar x(1.0); + OptionalScalar ox(x), dummy = boost::none; + EXPECT(assert_equal(ox, ox)); + EXPECT(assert_equal(x, ox)); + EXPECT(assert_equal(dummy, dummy)); +} + +/* ************************************************************************* */ +int main() { TestResult tr; return TestRegistry::runAllTests(tr); } +/* ************************************************************************* */