// // Created by erki on 03.07.21. // #include #include TEST_CASE("Function calls function appropriately.", "[utility],[function]") { static bool func_called = false; auto func_to_call = []() { func_called = true; }; Utility::Function function(func_to_call); function(); REQUIRE(func_called == true); } TEST_CASE("Function passes arguments appropriately.", "[utility],[function]") { static int int_to_set = 0; static bool bool_to_set = false; auto func_to_call = [](const int i, const bool b) { int_to_set = i; bool_to_set = b; }; Utility::Function function(func_to_call); function(10, true); REQUIRE(int_to_set == 10); REQUIRE(bool_to_set == true); } TEST_CASE("FunctionOwned calls function appropriately.", "[utility],[function]") { struct S { bool to_set = false; void toCall() { to_set = true; } }; S subject; Utility::FunctionOwned function(subject, &S::toCall); function(); REQUIRE(subject.to_set == true); } TEST_CASE("FunctionOwned passes arguments appropriately.", "[utility],[function]") { struct S { int int_to_set = 0; bool bool_to_set = true; void toCall(const int i, const bool b) { int_to_set = i; bool_to_set = b; } }; S subject; Utility::FunctionOwned function(subject, &S::toCall); function(10, false); REQUIRE(subject.int_to_set == 10); REQUIRE(subject.bool_to_set == false); }