diff --git a/CppUnitLite/Test.h b/CppUnitLite/Test.h index 8a240046b..7230c0816 100644 --- a/CppUnitLite/Test.h +++ b/CppUnitLite/Test.h @@ -66,6 +66,15 @@ protected: return; } \ catch (...) {} } +#define CHECK_EXCEPTION(condition, exception_name)\ +{ try { condition; \ + result_.addFailure (Failure (name_, __FILE__,__LINE__, SimpleString("Didn't throw: ") + StringFrom(#condition))); \ + return; } \ + catch (exception_name& e) {} \ + catch (...) { \ + result_.addFailure (Failure (name_, __FILE__,__LINE__, SimpleString("Wrong exception: ") + StringFrom(#condition) + StringFrom(", expected: ") + StringFrom(#exception_name))); \ + return; } } + #define CHECK_EQUAL(expected,actual)\ { if ((expected) == (actual)) return; result_.addFailure(Failure(name_, __FILE__, __LINE__, StringFrom(expected), StringFrom(actual))); } diff --git a/tests/testNonlinearEquality.cpp b/tests/testNonlinearEquality.cpp index 0ce942a0b..08fce39ef 100644 --- a/tests/testNonlinearEquality.cpp +++ b/tests/testNonlinearEquality.cpp @@ -81,12 +81,7 @@ TEST ( NonlinearEquality, linearization_fail ) { shared_nle nle(new NLE(key, value,vector_compare)); // check linearize to ensure that it fails for bad linearization points - try { - GaussianFactor::shared_ptr actualLF = nle->linearize(bad_linearize); - CHECK(false); - } catch (std::invalid_argument) { - CHECK(true); - } + CHECK_EXCEPTION(nle->linearize(bad_linearize), std::invalid_argument); } /* ********************************************************************** */ @@ -102,12 +97,7 @@ TEST ( NonlinearEquality, linearization_fail_pose ) { shared_poseNLE nle(new PoseNLE(key, value)); // check linearize to ensure that it fails for bad linearization points - try { - GaussianFactor::shared_ptr actualLF = nle->linearize(bad_linearize); - CHECK(false); - } catch (std::invalid_argument) { - CHECK(true); - } + CHECK_EXCEPTION(nle->linearize(bad_linearize), std::invalid_argument); } /* ********************************************************************** */ @@ -123,12 +113,7 @@ TEST ( NonlinearEquality, linearization_fail_pose_origin ) { shared_poseNLE nle(new PoseNLE(key, value)); // check linearize to ensure that it fails for bad linearization points - try { - GaussianFactor::shared_ptr actualLF = nle->linearize(bad_linearize); - CHECK(false); - } catch (std::invalid_argument) { - CHECK(true); - } + CHECK_EXCEPTION(nle->linearize(bad_linearize), std::invalid_argument); } /* ************************************************************************* */ diff --git a/tests/testTupleConfig.cpp b/tests/testTupleConfig.cpp index f20fe8bf3..dd682b36e 100644 --- a/tests/testTupleConfig.cpp +++ b/tests/testTupleConfig.cpp @@ -146,21 +146,8 @@ TEST(TupleConfig, at) CHECK(assert_equal(l1, config1[PointKey(1)])); CHECK(assert_equal(l2, config1[PointKey(2)])); - bool caught = false; - try { - config1[PoseKey(3)]; - } catch(invalid_argument e) { - caught = true; - } - CHECK(caught); - - caught = false; - try { - config1[PointKey(3)]; - } catch(invalid_argument e) { - caught = true; - } - CHECK(caught); + CHECK_EXCEPTION(config1[PoseKey(3)], std::invalid_argument); + CHECK_EXCEPTION(config1[PointKey(3)], std::invalid_argument); } /* ************************************************************************* */ diff --git a/wrap/testWrap.cpp b/wrap/testWrap.cpp index 527a86c91..cf29c4616 100644 --- a/wrap/testWrap.cpp +++ b/wrap/testWrap.cpp @@ -33,7 +33,8 @@ TEST( wrap, ArgumentList ) { /* ************************************************************************* */ TEST( wrap, check_exception ) { - THROWS_EXCEPTION(Module("/home", "geometry",verbose)); + THROWS_EXCEPTION(Module("/notarealpath", "geometry",verbose)); + CHECK_EXCEPTION(Module("/alsonotarealpath", "geometry",verbose), CantOpenFile); } /* ************************************************************************* */