]> git.lizzy.rs Git - enumset.git/blobdiff - enumset/tests/repr.rs
Add `repr` option to derive.
[enumset.git] / enumset / tests / repr.rs
diff --git a/enumset/tests/repr.rs b/enumset/tests/repr.rs
new file mode 100644 (file)
index 0000000..c7d9d7b
--- /dev/null
@@ -0,0 +1,23 @@
+use enumset::*;
+
+#[derive(EnumSetType, Debug)]
+#[enumset(repr = "u16")]
+enum ReprEnum {
+    A, B, C, D, E, F, G, H,
+}
+
+#[test]
+fn test() {
+    let mut set = EnumSet::<ReprEnum>::new();
+    set.insert(ReprEnum::B);
+    set.insert(ReprEnum::F);
+
+    let repr: u16 = set.as_repr();
+    assert_eq!(
+        (1 << 1) | (1 << 5),
+        repr,
+    );
+
+    let set2 = unsafe { EnumSet::<ReprEnum>::from_repr_unchecked(repr) };
+    assert_eq!(set, set2);
+}