diff --git a/include/hsm/details/sm.h b/include/hsm/details/sm.h index 7d7d78d..d38d53c 100644 --- a/include/hsm/details/sm.h +++ b/include/hsm/details/sm.h @@ -77,7 +77,7 @@ template class sm { update_current_regions(); } - template auto process_event(Event&& event) + template auto process_event(Event&& event) -> bool { static_assert( bh::contains( @@ -87,10 +87,11 @@ template class sm { if (!process_event_internal(event)) { call_unexpected_event_handler(event); - return; + return false; } process_deferred_events(); + return true; } template auto is(State state) -> bool diff --git a/test/integration/unexpected_event_handler.cpp b/test/integration/unexpected_event_handler.cpp index 6731994..7e33608 100644 --- a/test/integration/unexpected_event_handler.cpp +++ b/test/integration/unexpected_event_handler.cpp @@ -63,7 +63,7 @@ class UnexpectedEventHandler : public Test { TEST_F(UnexpectedEventHandler, should_call_unexpected_event_handler) { auto event = e2 {}; - sm.process_event(event); + ASSERT_FALSE(sm.process_event(event)); ASSERT_TRUE(event.called); } @@ -71,10 +71,10 @@ TEST_F(UnexpectedEventHandler, should_call_unexpected_event_handler) TEST_F(UnexpectedEventHandler, should_not_call_unexpected_event_handler_when_guard_fails) { - sm.process_event(e3 {}); + ASSERT_TRUE(sm.process_event(e3 {})); auto event = e2 {}; - sm.process_event(event); + ASSERT_TRUE(sm.process_event(event)); ASSERT_FALSE(event.called); } \ No newline at end of file