module ut; public import unit_threaded; // Passing two AliasSeqs causes them to collapse into their concatenated contents void shouldEqual(A...)() { import std.conv: text; static assert(A.length % 2 == 0, text("\n\n", "Can only compare even number of template arguments, not sequence of length ", A.length, ":\n\n", A.stringof, "\n\n", ) ); static foreach(i; 0 .. A.length / 2) {{ enum j = i + A.length / 2; static assert(__traits(isSame, A[i], A[j]), text("\n\n", " Expected: ", A[A.length / 2 .. $].stringof, "\n\n", " Got: ", A[0 .. A.length / 2].stringof, "\n\n", ) ); }} }