diff options
author | ADAM David Alan Martin <adam.martin@10gen.com> | 2018-08-03 15:04:28 -0400 |
---|---|---|
committer | ADAM David Alan Martin <adam.martin@10gen.com> | 2018-08-03 16:24:47 -0400 |
commit | f9cdc546961507d3fdf1b74a438ea18455d7a660 (patch) | |
tree | fec3a5683897ad616a8f26b761eec9f4381d20f0 /src/mongo/util/future_test_promise_int.cpp | |
parent | 68be4ccd331bafca6967303430651f277a0e7a14 (diff) | |
download | mongo-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.cpp | 14 |
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 |