#include "pithreadnotifier.h" #include "gtest/gtest.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); }