summaryrefslogtreecommitdiff
path: root/src/mongo/util/future_test_promise_int.cpp
diff options
context:
space:
mode:
authorADAM David Alan Martin <adam.martin@10gen.com>2018-08-03 15:04:28 -0400
committerADAM David Alan Martin <adam.martin@10gen.com>2018-08-03 16:24:47 -0400
commitf9cdc546961507d3fdf1b74a438ea18455d7a660 (patch)
treefec3a5683897ad616a8f26b761eec9f4381d20f0 /src/mongo/util/future_test_promise_int.cpp
parent68be4ccd331bafca6967303430651f277a0e7a14 (diff)
downloadmongo-f9cdc546961507d3fdf1b74a438ea18455d7a660.tar.gz
SERVER-35686 Add move assignment to promise.
Since `Promise` now can only be correctly created using `makePromiseFuture`, we can now make `Promise` move assignable.
Diffstat (limited to 'src/mongo/util/future_test_promise_int.cpp')
-rw-r--r--src/mongo/util/future_test_promise_int.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mongo/util/future_test_promise_int.cpp b/src/mongo/util/future_test_promise_int.cpp
index 144fae7ed5f..1145bb59e49 100644
--- a/src/mongo/util/future_test_promise_int.cpp
+++ b/src/mongo/util/future_test_promise_int.cpp
@@ -100,5 +100,19 @@ TEST(Promise, Fail_setWith_Future) {
});
}
+TEST(Promise, MoveAssignBreaksPromise) {
+ auto pf = makePromiseFuture<int>();
+ pf.promise = Promise<int>(); // This should break the promise.
+ ASSERT_THROWS_CODE(std::move(pf.future).get(), DBException, ErrorCodes::BrokenPromise);
+}
+
+TEST(Promise, MoveAssignedPromiseIsTheSameAsTheOldOne) {
+ const int kResult = 11;
+ auto pf = makePromiseFuture<int>();
+ auto promise = std::move(pf.promise);
+ promise.emplaceValue(kResult);
+ ASSERT_EQ(std::move(pf.future).get(), kResult);
+}
+
} // namespace
} // namespace mongo