diff options
Diffstat (limited to 'libcxx/test/thread/futures/futures.atomic_future/get.pass.cpp')
| -rw-r--r-- | libcxx/test/thread/futures/futures.atomic_future/get.pass.cpp | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/libcxx/test/thread/futures/futures.atomic_future/get.pass.cpp b/libcxx/test/thread/futures/futures.atomic_future/get.pass.cpp deleted file mode 100644 index 5ca5408f74b..00000000000 --- a/libcxx/test/thread/futures/futures.atomic_future/get.pass.cpp +++ /dev/null @@ -1,143 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// <future> - -// class atomic_future<R> - -// const R& atomic_future::get(); -// R& atomic_future<R&>::get(); -// void atomic_future<void>::get(); - -#include <future> -#include <cassert> - -void func1(std::promise<int>& p) -{ - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - p.set_value(3); -} - -void func2(std::promise<int>& p) -{ - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - p.set_exception(std::make_exception_ptr(3)); -} - -int j = 0; - -void func3(std::promise<int&>& p) -{ - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - j = 5; - p.set_value(j); -} - -void func4(std::promise<int&>& p) -{ - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - p.set_exception(std::make_exception_ptr(3.5)); -} - -void func5(std::promise<void>& p) -{ - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - p.set_value(); -} - -void func6(std::promise<void>& p) -{ - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - p.set_exception(std::make_exception_ptr('c')); -} - -int main() -{ - { - typedef int T; - { - std::promise<T> p; - std::atomic_future<T> f = p.get_future(); - std::thread(func1, std::move(p)).detach(); - assert(f.valid()); - assert(f.get() == 3); - assert(f.valid()); - } - { - std::promise<T> p; - std::atomic_future<T> f = p.get_future(); - std::thread(func2, std::move(p)).detach(); - try - { - assert(f.valid()); - assert(f.get() == 3); - assert(false); - } - catch (int i) - { - assert(i == 3); - } - assert(f.valid()); - } - } - { - typedef int& T; - { - std::promise<T> p; - std::atomic_future<T> f = p.get_future(); - std::thread(func3, std::move(p)).detach(); - assert(f.valid()); - assert(f.get() == 5); - assert(f.valid()); - } - { - std::promise<T> p; - std::atomic_future<T> f = p.get_future(); - std::thread(func4, std::move(p)).detach(); - try - { - assert(f.valid()); - assert(f.get() == 3); - assert(false); - } - catch (double i) - { - assert(i == 3.5); - } - assert(f.valid()); - } - } - { - typedef void T; - { - std::promise<T> p; - std::atomic_future<T> f = p.get_future(); - std::thread(func5, std::move(p)).detach(); - assert(f.valid()); - f.get(); - assert(f.valid()); - } - { - std::promise<T> p; - std::atomic_future<T> f = p.get_future(); - std::thread(func6, std::move(p)).detach(); - try - { - assert(f.valid()); - f.get(); - assert(false); - } - catch (char i) - { - assert(i == 'c'); - } - assert(f.valid()); - } - } -} |

