diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-16 14:09:50 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-16 14:09:50 +0800 |
| commit | 07d662aafc25b145eb20e4123ebc82b5736cdeb7 (patch) | |
| tree | 0b94baddd3235623beac4997ac09a503a00645e7 /test/base/EventTest.cpp | |
| parent | faf73c4af74bdae1abf394a33b573149b98ec2b1 (diff) | |
| download | cru-07d662aafc25b145eb20e4123ebc82b5736cdeb7.tar.gz cru-07d662aafc25b145eb20e4123ebc82b5736cdeb7.tar.bz2 cru-07d662aafc25b145eb20e4123ebc82b5736cdeb7.zip | |
New timer impl on Windows. Add Event test. Fix delete later.
Diffstat (limited to 'test/base/EventTest.cpp')
| -rw-r--r-- | test/base/EventTest.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/test/base/EventTest.cpp b/test/base/EventTest.cpp new file mode 100644 index 00000000..9ebf8b28 --- /dev/null +++ b/test/base/EventTest.cpp @@ -0,0 +1,39 @@ +#include "cru/base/Event.h" + +#include <catch2/catch_test_macros.hpp> + +TEST_CASE("Event should work.", "[event]") { + using cru::Event; + + Event<int&> event; + + int count = 0; + bool triggered = false; + + auto revoker = event.AddHandler([](int& count) { count++; }); + event.AddHandler([](int& count) { count++; }); + event.AddSpyOnlyHandler([&triggered] { triggered = true; }); + + event.Raise(count); + REQUIRE(count == 2); + REQUIRE(triggered); + + revoker(); + + event.Raise(count); + REQUIRE(count == 3); +} + +TEST_CASE("Event destroy during raising.", "[event]") { + using cru::Event; + + Event<int&>* event = new Event<int&>(); + + event->AddSpyOnlyHandler([event] { delete event; }); + auto revoker = event->AddHandler([](int& count) { count++; }); + + int count = 0; + event->Raise(count); + REQUIRE(count == 1); + revoker(); +} |
