aboutsummaryrefslogtreecommitdiff
path: root/test/bitset.cc
diff options
context:
space:
mode:
authorJohannes Stoelp <johannes.stoelp@gmail.com>2024-03-26 21:47:29 +0100
committerJohannes Stoelp <johannes.stoelp@gmail.com>2024-03-26 21:47:29 +0100
commita15db74027fde75efef34f391d2a458bf64001d0 (patch)
tree6d0dbed3bcc8dad7cb8301382eab27c4540a79c5 /test/bitset.cc
parentd483452fc2ccaba5de26303a449fe5bd2ea1dc18 (diff)
downloadcpp-utils-a15db74027fde75efef34f391d2a458bf64001d0.tar.gz
cpp-utils-a15db74027fde75efef34f391d2a458bf64001d0.zip
bitset: initial state, play with fold expr
Diffstat (limited to 'test/bitset.cc')
-rw-r--r--test/bitset.cc88
1 files changed, 88 insertions, 0 deletions
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 <bitset.h>
+
+enum bits { a, b, c, d };
+
+int main() {
+ {
+ bitset<bits> 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<bits> 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<bits> 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<bits> 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<bits> 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<bits> 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 <cstdio>
+int main() {
+ puts("[bitset]: not built with >cpp17");
+}
+#endif