aboutsummaryrefslogtreecommitdiff
path: root/tests/test.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test.rs')
-rw-r--r--tests/test.rs52
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/test.rs b/tests/test.rs
new file mode 100644
index 0000000..3f2daa7
--- /dev/null
+++ b/tests/test.rs
@@ -0,0 +1,52 @@
+use enumn::N;
+
+#[derive(Debug, N, PartialEq)]
+enum EmptyEnum {}
+
+#[test]
+fn test_empty() {
+ assert_eq!(EmptyEnum::n(0), None);
+ assert_eq!(EmptyEnum::n(1), None);
+ assert_eq!(EmptyEnum::n(-1), None);
+}
+
+#[derive(Debug, N, PartialEq)]
+enum SimpleEnum {
+ Case0,
+ Case1,
+}
+
+#[test]
+fn test_simple() {
+ assert_eq!(SimpleEnum::n(0), Some(SimpleEnum::Case0));
+ assert_eq!(SimpleEnum::n(1), Some(SimpleEnum::Case1));
+ assert_eq!(SimpleEnum::n(4), None);
+ assert_eq!(SimpleEnum::n(-1), None);
+}
+
+#[derive(Debug, N, PartialEq)]
+#[repr(u8)]
+enum EnumWithRepr {
+ Case0,
+}
+
+#[test]
+fn test_repr() {
+ assert_eq!(EnumWithRepr::n(0), Some(EnumWithRepr::Case0));
+ assert_eq!(EnumWithRepr::n(255), None);
+}
+
+#[derive(Debug, N, PartialEq)]
+enum EnumWithDiscriminant {
+ A = 10,
+ B, // implicitly 11
+ C = -80,
+}
+
+#[test]
+fn test_discriminant() {
+ assert_eq!(EnumWithDiscriminant::n(10), Some(EnumWithDiscriminant::A));
+ assert_eq!(EnumWithDiscriminant::n(11), Some(EnumWithDiscriminant::B));
+ assert_eq!(EnumWithDiscriminant::n(-80), Some(EnumWithDiscriminant::C));
+ assert_eq!(EnumWithDiscriminant::n(12), None);
+}