#include "catch_tmp.h" #include using namespace tmp; template struct MyPack {}; TEST_CASE("PackHead") { using P = Pack; REQUIRE_SAME(void, PackHead

); } TEST_CASE("PackTrail") { SECTION("empty trail") { using P = Pack; REQUIRE_SAME(Pack<>, PackTrail

); } SECTION("general case") { using P = Pack; using Expected = Pack; REQUIRE_SAME(Expected, PackTrail

); } } TEST_CASE("PackGet") { using P = Pack; using P0 = PackGet; using P1 = PackGet; using P2 = PackGet; using P3 = PackGet; REQUIRE_SAME(void, P0); REQUIRE_SAME(bool, P1); REQUIRE_SAME(char, P2); REQUIRE_SAME(int, P3); } TEST_CASE("PackPushFront") { SECTION("empty pack") { using Result = PackPushFront, void>; REQUIRE_SAME(Pack, Result); } SECTION("general case") { using Input = Pack; using Result = PackPushFront; using Expected = Pack; REQUIRE_SAME(Expected, Result); } } TEST_CASE("PackPushBack") { SECTION("empty pack") { using Result = PackPushBack, void>; REQUIRE_SAME(Pack, Result); } SECTION("general case") { using Input = Pack; using Result = PackPushBack; using Expected = Pack; REQUIRE_SAME(Expected, Result); } } TEST_CASE("PackCat") { SECTION("empty input") { using Result = PackCat, Pack<>>; REQUIRE_SAME(Pack<>, Result); } SECTION("empty lhs") { using Result = PackCat, Pack>; REQUIRE_SAME(Pack, Result); } SECTION("empty rhs") { using Result = PackCat, Pack<>>; REQUIRE_SAME(Pack, Result); } SECTION("general case") { using Result = PackCat, Pack>; using Expected = Pack; REQUIRE_SAME(Expected, Result); } } TEST_CASE("PackReverse") { SECTION("empty input") { using Result = PackReverse>; REQUIRE_SAME(Pack<>, Result); } SECTION("one element") { using Result = PackReverse>; REQUIRE_SAME(Pack, Result); } SECTION("general case") { using Result = PackReverse>; using Expected = Pack; REQUIRE_SAME(Expected, Result); } } TEST_CASE("PackReplace") { SECTION("empty pack") { using Result = PackReplace, void, bool>; REQUIRE_SAME(Pack<>, Result); } SECTION("general case") { using Input = Pack; using Result = PackReplace; using Expected = Pack; REQUIRE_SAME(Expected, Result); } } TEST_CASE("Repack") { SECTION("empty pack") { using Result = Repack>; REQUIRE_SAME(MyPack<>, Result); } SECTION("general case") { using Input = Pack; using Result = Repack; using Expected = MyPack; REQUIRE_SAME(Expected, Result); } } TEST_CASE("AsPack") { SECTION("empty pack") { using Result = Repack>; REQUIRE_SAME(Pack<>, Result); } SECTION("general case") { using Input = MyPack; using Result = Repack; using Expected = Pack; REQUIRE_SAME(Expected, Result); } }