MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / TestEvents

Method TestEvents

tests/async/marl-test/event_test.cpp:32–229  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

30} // namespace std
31
32void WithBoundSchedulerBase::TestEvents()
33{
34 SUBCASE("EventIsSignalled") {
35 for (auto mode : {marl::Event::Mode::Manual, marl::Event::Mode::Auto}) {
36 auto event = marl::Event(mode);
37 ASSERT_EQ(event.isSignalled(), false);
38 event.signal();
39 ASSERT_EQ(event.isSignalled(), true);
40 ASSERT_EQ(event.isSignalled(), true);
41 event.clear();
42 ASSERT_EQ(event.isSignalled(), false);
43 }
44 }
45
46 SUBCASE("EventAutoTest") {
47 auto event = marl::Event(marl::Event::Mode::Auto);
48 ASSERT_EQ(event.test(), false);
49 event.signal();
50 ASSERT_EQ(event.test(), true);
51 ASSERT_EQ(event.test(), false);
52 }
53
54 SUBCASE("EventManualTest") {
55 auto event = marl::Event(marl::Event::Mode::Manual);
56 ASSERT_EQ(event.test(), false);
57 event.signal();
58 ASSERT_EQ(event.test(), true);
59 ASSERT_EQ(event.test(), true);
60 }
61
62 SUBCASE("EventAutoWait") {
63 std::atomic<int> counter = {0};
64 auto event = marl::Event(marl::Event::Mode::Auto);
65 auto done = marl::Event(marl::Event::Mode::Auto);
66
67 for (int i = 0; i < 3; i++) {
68 marl::schedule([=, &counter] {
69 event.wait();
70 counter++;
71 done.signal();
72 });
73 }
74
75 ASSERT_EQ(counter.load(), 0);
76 event.signal();
77 done.wait();
78 ASSERT_EQ(counter.load(), 1);
79 event.signal();
80 done.wait();
81 ASSERT_EQ(counter.load(), 2);
82 event.signal();
83 done.wait();
84 ASSERT_EQ(counter.load(), 3);
85 }
86
87 SUBCASE("EventManualWait") {
88 std::atomic<int> counter = {0};
89 auto event = marl::Event(marl::Event::Mode::Manual);

Callers

nothing calls this directly

Calls 13

deferFunction · 0.85
signalMethod · 0.80
EventClass · 0.50
scheduleFunction · 0.50
anyFunction · 0.50
clearMethod · 0.45
testMethod · 0.45
waitMethod · 0.45
loadMethod · 0.45
doneMethod · 0.45
wait_forMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected