From e96f5b6713814dd59814f17cb9bb437e3a6fca47 Mon Sep 17 00:00:00 2001 From: crupest Date: Mon, 1 Jan 2024 22:20:21 +0800 Subject: NEED TEST: fix compile errors of EventHandlerToken and add revoke test. --- test/common/Event2Test.cpp | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) (limited to 'test') diff --git a/test/common/Event2Test.cpp b/test/common/Event2Test.cpp index f63a5347..e14174cf 100644 --- a/test/common/Event2Test.cpp +++ b/test/common/Event2Test.cpp @@ -4,16 +4,39 @@ using cru::Event2; -TEST_CASE("Event2 handlers should work.", "[event2]") { +TEST_CASE("Event2", "[event2]") { Event2 event; int counter = 0; auto handler = [&counter] { counter++; }; - - event.AddHandler(handler); - - event.Raise(); - - REQUIRE(counter == 1); + auto token = event.AddHandler(handler); + + auto handler2 = [&counter](decltype(event)::Context* context) { counter++; }; + + SECTION("two handlers should work.") { + event.Raise(); + REQUIRE(counter == 1); + event.Raise(); + REQUIRE(counter == 2); + + event.AddHandler(handler2); + event.Raise(); + REQUIRE(counter == 4); + } + + SECTION("handler revoker should work.") { + token.RevokeHandler(); + event.Raise(); + REQUIRE(counter == 0); + + token = event.AddHandler(handler); + event.AddHandler(handler2); + event.Raise(); + REQUIRE(counter == 2); + + token.RevokeHandler(); + event.Raise(); + REQUIRE(counter == 3); + } } -- cgit v1.2.3