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