20 enum class StepId { Void,
23 using VoidCallback = std::function<
void()>;
24 using IntCallback = std::function<
void(
int)>;
30 REQUIRE(callbacks.size == 2);
32 bool voidWasCalled =
false;
36 callbacks.set<StepId::Void>(voidcb);
37 int intWasCalled = -1;
38 auto intcb = [&](
int val) {
41 callbacks.set<StepId::Int>(intcb);
43 callbacks.call<StepId::Void>();
44 REQUIRE(voidWasCalled);
45 callbacks.call<StepId::Int>(5);
46 REQUIRE(intWasCalled == 5);
48 SECTION(
"test resetting")
50 auto intcb2 = [&](
int val) {
53 callbacks.set<StepId::Int>(intcb2);
54 callbacks.call<StepId::Int>(6);
55 REQUIRE(intWasCalled == 4);
58 SECTION(
"test mutable")
61 callbacks.set<StepId::Int>([&invoked](
int val) { invoked =
val; });
62 callbacks.call<StepId::Int>(6);
63 REQUIRE(invoked == 6);