#include "gtest/gtest.h" #include "pithreadnotifier.h" TEST(PIThreadNotifierTest, One) { PIThreadNotifier n; int cnt = 0; PIThread t1([&n, &cnt](){n.wait(); cnt++;}, true); piMSleep(10); n.notifyOnce(); piMSleep(10); ASSERT_EQ(cnt, 1); n.notifyOnce(); piMSleep(10); ASSERT_EQ(cnt, 2); } TEST(PIThreadNotifierTest, Two) { PIThreadNotifier n; int cnt1 = 0; int cnt2 = 0; int cnt3 = 0; PIThread t1([&n, &cnt1](){n.wait(); cnt1++; piMSleep(2);}, true); PIThread t2([&n, &cnt2](){n.wait(); cnt2++; piMSleep(2);}, true); PIThread t3([&n, &cnt3](){n.notifyOnce(); cnt3++; piMSleep(1);}, true); piMSleep(20); t3.stop(true); piMSleep(100); t1.stop(); t2.stop(); ASSERT_EQ(cnt1+cnt2, cnt3); }