#include "catch_tmp.h" #include using namespace tmp; TEST_CASE("void_t") {} TEST_CASE("Void") {} TEST_CASE("ReturnType") { REQUIRE_SAME(void, ReturnType); REQUIRE_SAME(void, ReturnType); REQUIRE_SAME(bool, ReturnType); REQUIRE_SAME(bool&, ReturnType); REQUIRE_SAME(bool const&, ReturnType); REQUIRE_SAME(void*, ReturnType); REQUIRE_SAME(void const*, ReturnType); REQUIRE_SAME(void const*&, ReturnType); REQUIRE_SAME(void const* const&, ReturnType); } TEST_CASE("Parameters") { REQUIRE_SAME(Pack<>, Parameters); SECTION("single parameter") { REQUIRE_SAME(Pack, Parameters); REQUIRE_SAME(Pack, Parameters); REQUIRE_SAME(Pack, Parameters); REQUIRE_SAME(Pack, Parameters); REQUIRE_SAME(Pack, Parameters); REQUIRE_SAME(Pack, Parameters); } SECTION("multiple parameters") { using Input = void(void*, char, bool, int); using Result = Parameters; using Expected = Pack; REQUIRE_SAME(Expected, Result); } } TEST_CASE("invoke_result_t") {} TEST_CASE("FunctionCat") { SECTION("empty lhs and rhs") { using Result = FunctionCat; using Expected = void(); REQUIRE_SAME(Expected, Result); } SECTION("empty lhs") { using Result = FunctionCat; using Expected = void(char); REQUIRE_SAME(Expected, Result); } SECTION("empty rhs") { using Result = FunctionCat; using Expected = void(char); REQUIRE_SAME(Expected, Result); } SECTION("general case") { using Result = FunctionCat; using Expected = void(char, int, bool, char); REQUIRE_SAME(Expected, Result); } }