summaryrefslogtreecommitdiffstats
path: root/libcxx/test/thread/futures/futures.atomic_future/wait_until.pass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/thread/futures/futures.atomic_future/wait_until.pass.cpp')
-rw-r--r--libcxx/test/thread/futures/futures.atomic_future/wait_until.pass.cpp95
1 files changed, 0 insertions, 95 deletions
diff --git a/libcxx/test/thread/futures/futures.atomic_future/wait_until.pass.cpp b/libcxx/test/thread/futures/futures.atomic_future/wait_until.pass.cpp
deleted file mode 100644
index f6e3000a74f..00000000000
--- a/libcxx/test/thread/futures/futures.atomic_future/wait_until.pass.cpp
+++ /dev/null
@@ -1,95 +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>
-
-// template <class Clock, class Duration>
-// future_status
-// wait_until(const chrono::time_point<Clock, Duration>& abs_time) const;
-
-#include <future>
-#include <cassert>
-
-typedef std::chrono::milliseconds ms;
-
-void func1(std::promise<int>& p)
-{
- std::this_thread::sleep_for(ms(500));
- p.set_value(3);
-}
-
-int j = 0;
-
-void func3(std::promise<int&>& p)
-{
- std::this_thread::sleep_for(ms(500));
- j = 5;
- p.set_value(j);
-}
-
-void func5(std::promise<void>& p)
-{
- std::this_thread::sleep_for(ms(500));
- p.set_value();
-}
-
-int main()
-{
- typedef std::chrono::high_resolution_clock Clock;
- {
- 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.wait_until(Clock::now() + ms(300)) == std::future_status::timeout);
- assert(f.valid());
- assert(f.wait_until(Clock::now() + ms(300)) == std::future_status::ready);
- assert(f.valid());
- Clock::time_point t0 = Clock::now();
- f.wait();
- Clock::time_point t1 = Clock::now();
- assert(f.valid());
- assert(t1-t0 < ms(5));
- }
- {
- 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.wait_until(Clock::now() + ms(300)) == std::future_status::timeout);
- assert(f.valid());
- assert(f.wait_until(Clock::now() + ms(300)) == std::future_status::ready);
- assert(f.valid());
- Clock::time_point t0 = Clock::now();
- f.wait();
- Clock::time_point t1 = Clock::now();
- assert(f.valid());
- assert(t1-t0 < ms(5));
- }
- {
- 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());
- assert(f.wait_until(Clock::now() + ms(300)) == std::future_status::timeout);
- assert(f.valid());
- assert(f.wait_until(Clock::now() + ms(300)) == std::future_status::ready);
- assert(f.valid());
- Clock::time_point t0 = Clock::now();
- f.wait();
- Clock::time_point t1 = Clock::now();
- assert(f.valid());
- assert(t1-t0 < ms(5));
- }
-}
OpenPOWER on IntegriCloud