TEST(ProcessTest, Executor) { ASSERT_TRUE(GTEST_IS_THREADSAFE); std::atomic_bool event1Called(false); std::atomic_bool event2Called(false); EventReceiver receiver; EXPECT_CALL(receiver, event1(42)) .WillOnce(Assign(&event1Called, true)); EXPECT_CALL(receiver, event2("event2")) .WillOnce(Assign(&event2Called, true)); Executor executor; Deferred<void(int)> event1 = executor.defer([&receiver](int i) { return receiver.event1(i); }); event1(42); Deferred<void(const string&)> event2 = executor.defer([&receiver](const string& s) { return receiver.event2(s); }); event2("event2"); while (event1Called.load() == false); while (event2Called.load() == false); }
TEST(Process, executor) { ASSERT_TRUE(GTEST_IS_THREADSAFE); volatile bool event1Called = false; volatile bool event2Called = false; EventReceiver receiver; EXPECT_CALL(receiver, event1(42)) .WillOnce(Assign(&event1Called, true)); EXPECT_CALL(receiver, event2("event2")) .WillOnce(Assign(&event2Called, true)); Executor executor; deferred<void(int)> event1 = executor.defer(std::tr1::bind(&EventReceiver::event1, &receiver, std::tr1::placeholders::_1)); event1(42); deferred<void(const std::string&)> event2 = executor.defer(std::tr1::bind(&EventReceiver::event2, &receiver, std::tr1::placeholders::_1)); event2("event2"); while (!event1Called); while (!event2Called); }