#![allow( clippy::derive_partial_eq_without_eq, // Clippy bug: https://github.com/rust-lang/rust-clippy/issues/7422 clippy::nonstandard_macro_braces, clippy::wildcard_imports, )] use serde_repr::{Deserialize_repr, Serialize_repr}; mod small_prime { use super::*; #[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug)] #[repr(u8)] enum SmallPrime { Two = 2, Three = 3, Five = 5, Seven = 7, } #[test] fn test_serialize() { let j = serde_json::to_string(&SmallPrime::Seven).unwrap(); assert_eq!(j, "7"); } #[test] fn test_deserialize() { let p: SmallPrime = serde_json::from_str("2").unwrap(); assert_eq!(p, SmallPrime::Two); } } mod other { use super::*; #[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug)] #[repr(u8)] enum TestOther { A, B, #[serde(other, rename = "useless")] Other, } #[test] fn test_deserialize() { let p: TestOther = serde_json::from_str("0").unwrap(); assert_eq!(p, TestOther::A); let p: TestOther = serde_json::from_str("1").unwrap(); assert_eq!(p, TestOther::B); let p: TestOther = serde_json::from_str("5").unwrap(); assert_eq!(p, TestOther::Other); } } mod implicit_discriminant { use super::*; #[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug)] #[repr(u8)] enum ImplicitDiscriminant { Zero, One, Two, Three, } #[test] fn test_serialize() { let j = serde_json::to_string(&ImplicitDiscriminant::Three).unwrap(); assert_eq!(j, "3"); } #[test] fn test_deserialize() { let p: ImplicitDiscriminant = serde_json::from_str("2").unwrap(); assert_eq!(p, ImplicitDiscriminant::Two); } }