#include "../test.h" SCENARIO("timer", "[!hide][periodically][timer][scheduler][long][perf][sources]"){ GIVEN("the timer of 1 sec"){ WHEN("the period is 1 sec"){ using namespace std::chrono; auto sc = rxsc::make_current_thread(); auto so = rx::synchronize_in_one_worker(sc); auto start = sc.now(); auto period = seconds(1); rx::composite_subscription cs; rx::observable<>::timer(period, so) .subscribe( cs, [=](long counter){ auto nsDelta = duration_cast(sc.now() - (start + (period * counter))); std::cout << "timer : period " << counter << ", " << nsDelta.count() << "ms delta from target time" << std::endl; }, [](rxu::error_ptr){abort();}, [](){std::cout << "completed" << std::endl;}); } } }