Skip to content

Commit 530845f

Browse files
martijn-resolumeomartijn
authored andcommitted
Add test with lambda as callback
1 parent 90abc2c commit 530845f

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

tests/table.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,36 @@ TEST_CASE("paths can be matched", "[path]") {
100100
REQUIRE(tester.callback4_invoked == true);
101101
}
102102

103+
SECTION("invoking a lambda") {
104+
bool callback1_invoked{false};
105+
bool callback2_invoked{false};
106+
std::size_t number{};
107+
108+
auto callback1 = [&callback1_invoked]() { callback1_invoked = true; };
109+
auto callback2 = [&callback2_invoked, &number](std::size_t input) {
110+
callback2_invoked = true;
111+
number = input;
112+
};
113+
114+
table.add<&decltype(callback1)::operator()>("/callback/1", &callback1);
115+
table.add<&decltype(callback2)::operator()>("/callback/2/{\\d+}",
116+
&callback2);
117+
118+
REQUIRE(callback1_invoked == false);
119+
REQUIRE(callback2_invoked == false);
120+
121+
table.route("/callback/1");
122+
123+
REQUIRE(callback1_invoked == true);
124+
REQUIRE(callback2_invoked == false);
125+
126+
table.route("/callback/2/5");
127+
128+
REQUIRE(callback1_invoked == true);
129+
REQUIRE(callback2_invoked == true);
130+
REQUIRE(number == 5);
131+
}
132+
103133
SECTION("invoking a member function with slug") {
104134
struct slug_data {
105135
std::size_t number;

0 commit comments

Comments
 (0)