81 lines
1.8 KiB
Rust
81 lines
1.8 KiB
Rust
#![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);
|
|
}
|
|
}
|