From a15db74027fde75efef34f391d2a458bf64001d0 Mon Sep 17 00:00:00 2001 From: Johannes Stoelp Date: Tue, 26 Mar 2024 21:47:29 +0100 Subject: bitset: initial state, play with fold expr --- test/bitset.cc | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 test/bitset.cc (limited to 'test/bitset.cc') diff --git a/test/bitset.cc b/test/bitset.cc new file mode 100644 index 0000000..755a79c --- /dev/null +++ b/test/bitset.cc @@ -0,0 +1,88 @@ +#if __cplusplus >= 201703L +#include + +enum bits { a, b, c, d }; + +int main() { + { + bitset t; + assert(t.is_empty()); + assert(!t.is_set(a)); + assert(!t.is_set(b)); + assert(!t.is_set(c)); + assert(!t.is_set(d)); + } + { + bitset t(b); + assert(!t.is_empty()); + assert(!t.is_set(a)); + assert(t.is_set(b)); + assert(!t.is_set(c)); + assert(!t.is_set(d)); + } + { + bitset t(a, c); + assert(!t.is_empty()); + assert(t.is_set(a)); + assert(!t.is_set(b)); + assert(t.is_set(c)); + assert(!t.is_set(d)); + } + { + bitset t; + t.set(b, d); + assert(!t.is_empty()); + assert(!t.is_set(a)); + assert(t.is_set(b)); + assert(!t.is_set(c)); + assert(t.is_set(d)); + t.set(c); + assert(!t.is_empty()); + assert(!t.is_set(a)); + assert(t.is_set(b)); + assert(t.is_set(c)); + assert(t.is_set(d)); + + t.unset(); + assert(!t.is_empty()); + t.unset(b, d); + assert(!t.is_empty()); + assert(!t.is_set(a)); + assert(!t.is_set(b)); + assert(t.is_set(c)); + assert(!t.is_set(d)); + t.unset(c); + assert(t.is_empty()); + assert(!t.is_set(a)); + assert(!t.is_set(b)); + assert(!t.is_set(c)); + assert(!t.is_set(d)); + } + { + bitset t; + t.set(a, b, d); + assert(!t.any()); + assert(!t.any(c)); + assert(t.any(a)); + assert(t.any(a, c)); + assert(t.any(a, b)); + } + { + bitset t; + t.set(a, b, d); + assert(!t.all()); + assert(!t.all(c)); + assert(t.all(a)); + assert(!t.all(a, c)); + assert(t.all(a, b)); + assert(t.all(a, b, d)); + assert(!t.all(a, b, c, d)); + } + return 0; +} +#else +#include +int main() { + puts("[bitset]: not built with >cpp17"); +} +#endif -- cgit v1.2.3