TEST_F(SignalTest, DeferredSynchronousSignal) { cout << "Instantiating signal object" << endl; Signal<int, int> testSignal; BasicTimer bt; cout << "Connecting signal" << endl; bt.start(); testSignal.connectSlot(ExecutorScheme::DEFERRED_SYNCHRONOUS, staticSumFunction); bt.stop(); cout << "Time to connect: " << bt.getElapsedMilliseconds() << "ms" << endl; cout << "Emitting signal" << endl; bt.start(); testSignal(1, 2); bt.stop(); cout << "Time to emit: " << bt.getElapsedMilliseconds() << "ms" << endl; ASSERT_NE(globalStaticIntX, 3); testSignal.invokeDeferred(); ASSERT_EQ(globalStaticIntX, 3); testSignal.disconnectSlot(0); }
TEST_F(SignalTest, AsynchronousSignal) { cout << "Instantiating signal object" << endl; Signal<int, int> testSignal; BasicTimer bt; BasicTimer bt2; cout << "Connecting signal" << endl; bt.start(); int id = testSignal.connectSlot(ExecutorScheme::ASYNCHRONOUS, staticSumFunction); bt.stop(); cout << "Time to connect: " << bt.getElapsedMilliseconds() << "ms" << endl; cout << "Emitting signal" << endl; bt.start(); bt2.start(); testSignal.emitSignal(1, 2); bt.stop(); while (bt2.getElapsedSeconds() < 0.1) { if (globalStaticIntX == 3) { bt2.stop(); break; } } ASSERT_LT(bt2.getElapsedSeconds(), 0.1); ASSERT_EQ(globalStaticIntX, 3); cout << "Time to emit: " << bt.getElapsedMilliseconds() << "ms" << endl; cout << "Time to emit and process: " << bt2.getElapsedMilliseconds() << "ms" << endl; cout << "Net time to process: " << bt2.getElapsedMilliseconds() - bt.getElapsedMilliseconds() << "ms" << endl; ASSERT_EQ(0, id); testSignal.disconnectSlot(0); }