summaryrefslogtreecommitdiff
path: root/modules/core/tests
diff options
context:
space:
mode:
Diffstat (limited to 'modules/core/tests')
-rw-r--r--modules/core/tests/core.cpp23
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");
+}
}