summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2015-05-13 16:16:26 -0400
committerBenety Goh <benety@mongodb.com>2015-05-14 20:47:06 -0400
commitf3d242c808ec6c1b7145dd3f084da438829552cb (patch)
tree0dd6e60dd8e247d4e64e3f5b2a17588747ce0247
parent463d3343d559590d60cfd5c48ac98ad675d5390e (diff)
downloadmongo-f3d242c808ec6c1b7145dd3f084da438829552cb.tar.gz
SERVER-18016 added unit test assertion macro to check error code in exception
-rw-r--r--src/mongo/db/repl/task_runner_test.cpp10
-rw-r--r--src/mongo/unittest/unittest.h9
2 files changed, 15 insertions, 4 deletions
diff --git a/src/mongo/db/repl/task_runner_test.cpp b/src/mongo/db/repl/task_runner_test.cpp
index 38166cf706f..7de153bb227 100644
--- a/src/mongo/db/repl/task_runner_test.cpp
+++ b/src/mongo/db/repl/task_runner_test.cpp
@@ -45,12 +45,14 @@ namespace {
TEST_F(TaskRunnerTest, InvalidConstruction) {
// Null thread pool.
- ASSERT_THROWS(TaskRunner(nullptr, []() -> OperationContext* { return nullptr; }),
- UserException);
+ ASSERT_THROWS_CODE(TaskRunner(nullptr, []() -> OperationContext* { return nullptr; }),
+ UserException,
+ ErrorCodes::BadValue);
// Null function for creating operation contexts.
- ASSERT_THROWS(TaskRunner(&getThreadPool(), TaskRunner::CreateOperationContextFn()),
- UserException);
+ ASSERT_THROWS_CODE(TaskRunner(&getThreadPool(), TaskRunner::CreateOperationContextFn()),
+ UserException,
+ ErrorCodes::BadValue);
}
TEST_F(TaskRunnerTest, GetDiagnosticString) {
diff --git a/src/mongo/unittest/unittest.h b/src/mongo/unittest/unittest.h
index b5f6f3eb850..e22f76c5f1d 100644
--- a/src/mongo/unittest/unittest.h
+++ b/src/mongo/unittest/unittest.h
@@ -135,6 +135,15 @@
::mongo::stdx::placeholders::_1)))
/**
+ * Behaves like ASSERT_THROWS, above, but also fails if calling getCode() on the thrown exception
+ * does not return an error code equal to EXPECTED_CODE.
+ */
+#define ASSERT_THROWS_CODE(STATEMENT, EXCEPTION_TYPE, EXPECTED_CODE) \
+ ASSERT_THROWS_PRED(STATEMENT, \
+ EXCEPTION_TYPE, \
+ ([](const EXCEPTION_TYPE& ex) { return (EXPECTED_CODE) == ex.getCode(); }))
+
+/**
* Behaves like ASSERT_THROWS, above, but also fails if PREDICATE(ex) for the throw exception, ex,
* is false.
*/