aboutsummaryrefslogtreecommitdiff
path: root/test/bitset.cc
diff options
context:
space:
mode:
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