#include "catch_tmp.h" #include using namespace tmp; struct A {}; struct B {}; struct C {}; struct D {}; struct E {}; struct F {}; struct G {}; struct H {}; struct I {}; using T0 = Tree<>; using T1 = Tree; using T2 = Tree, Tree>; using T3 = Tree, Tree, Tree>, Tree>>; using T4 = Tree, Tree>>, Tree>>, Tree >; TEST_CASE("NLR") { using P0 = Pack<>; using P1 = Pack>; using P2 = Pack, TreeLeaf<1, B>, TreeLeaf<1, C>>; using P3 = Pack< TreeRoot, TreeBranch<1, B>, TreeLeaf<2, C>, TreeLeaf<2, D>, TreeLeaf<2, E>, TreeBranch<1, F>, TreeLeaf<2, G> >; using P4 = Pack< TreeRoot, TreeBranch<1, B>, TreeBranch<2, C>, TreeLeaf<3, D>, TreeLeaf<3, E>, TreeBranch<1, F>, TreeBranch<2, G>, TreeLeaf<3, H>, TreeLeaf<1, I> >; SECTION("PackFromTree") { REQUIRE_SAME(P0, PackFromTreeNLR); REQUIRE_SAME(P1, PackFromTreeNLR); REQUIRE_SAME(P2, PackFromTreeNLR); REQUIRE_SAME(P3, PackFromTreeNLR); REQUIRE_SAME(P4, PackFromTreeNLR); } SECTION("TreeFromPack") { REQUIRE_SAME(T0, TreeFromPackNLR); REQUIRE_SAME(T1, TreeFromPackNLR); REQUIRE_SAME(T2, TreeFromPackNLR); REQUIRE_SAME(T3, TreeFromPackNLR); REQUIRE_SAME(T4, TreeFromPackNLR); } }