diff options
Diffstat (limited to 'modules/core/tests')
-rw-r--r-- | modules/core/tests/core.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/modules/core/tests/core.cpp b/modules/core/tests/core.cpp index b1ce741..f418a07 100644 --- a/modules/core/tests/core.cpp +++ b/modules/core/tests/core.cpp @@ -1,6 +1,7 @@ #include "../c++/test/suite.hpp" #include "../c++/id.hpp" #include "../c++/string_literal.hpp" +#include "../c++/reduce_templates.hpp" namespace { SAW_TEST("ID functionality") { @@ -37,4 +38,26 @@ SAW_TEST("String Literal Append"){ SAW_EXPECT(c == "foobar", "CT String sum is not \"foobar\""); } + +SAW_TEST("Template Group Reduction"){ + using namespace saw; + + struct foo { + std::string name = "foo"; + }; + struct bar { + std::string name = "bar"; + }; + struct baz { + std::string name = "baz"; + }; + + using grp = tmpl_group<foo, bar, baz, foo, bar, foo>; + using red_grp = tmpl_group<baz, bar, foo>; + + using alg_red_grp = tmpl_reduce<grp>::type; + + static_assert(std::is_same_v<alg_red_grp, red_grp>, "Should be same type"); + SAW_EXPECT((std::is_same_v<alg_red_grp, red_grp>), "Should be same type"); +} } |