81 std::swap (i_,
rr.i_);
89 operator string()
const
91 static _Fmt format{
"%s──%s─"};
92 return format %
typeStr(*
this) % i_;
99 int N<n>::instanceCnt = 0;
105 template<
class...ARGS>
109 static _Fmt format{
"%2d╎%s┤"};
110 return format %
sizeof...(ARGS) % join({toString(
args)...},
"┼");
136 CHECK (0 == N<0>::instanceCnt);
137 CHECK (0 == N<1>::instanceCnt);
138 CHECK (0 == N<2>::instanceCnt);
139 CHECK (0 == N<3>::instanceCnt);
146 CHECK (0 == N<0>::instanceCnt);
147 CHECK (0 == N<1>::instanceCnt);
148 CHECK (0 == N<2>::instanceCnt);
149 CHECK (0 == N<3>::instanceCnt);
157 CHECK (0 == N<0>::instanceCnt);
158 CHECK (1 == N<1>::instanceCnt);
159 CHECK (1 == N<2>::instanceCnt);
160 CHECK (2 == N<3>::instanceCnt);
163 CHECK (0 == N<0>::instanceCnt);
164 CHECK (0 == N<1>::instanceCnt);
165 CHECK (0 == N<2>::instanceCnt);
166 CHECK (0 == N<3>::instanceCnt);
228 template<
class...ARGS,
size_t...idx>
A front-end for using printf-style formatting.
Implementation namespace for support and library code.
int rani(uint bound=_iBOUND())
Test runner and basic definitions for tests.
std::string toString(TY const &val) noexcept
get some string representation of any object, reliably.
string join(COLL &&coll, string const &delim=", ")
enumerate a collection's contents, separated by delimiter.
Simplistic test class runner.
#define LAUNCHER(_TEST_CLASS_, _GROUPS_)
Metaprogramming with type sequences based on variadic template parameters.