58 lines
786 B
C++
58 lines
786 B
C++
#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);
|
|
}
|