42 lines
878 B
Rust
42 lines
878 B
Rust
|
use serde_derive::{Serialize, Deserialize};
|
||
|
use serde_test::{assert_tokens, Token};
|
||
|
|
||
|
#[derive(Serialize, Deserialize, Debug, PartialEq)]
|
||
|
enum Enum {
|
||
|
Simple {
|
||
|
a: i32,
|
||
|
},
|
||
|
Flatten {
|
||
|
#[serde(flatten)]
|
||
|
flatten: (),
|
||
|
a: i32,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn simple_variant() {
|
||
|
assert_tokens(
|
||
|
&Enum::Simple { a: 42 },
|
||
|
&[
|
||
|
Token::StructVariant { name: "Enum", variant: "Simple", len: 1 },
|
||
|
Token::Str("a"),
|
||
|
Token::I32(42),
|
||
|
Token::StructVariantEnd,
|
||
|
]
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn flatten_variant() {
|
||
|
assert_tokens(
|
||
|
&Enum::Flatten { flatten: (), a: 42 },
|
||
|
&[
|
||
|
Token::NewtypeVariant { name: "Enum", variant: "Flatten" },
|
||
|
Token::Map { len: None },
|
||
|
Token::Str("a"),
|
||
|
Token::I32(42),
|
||
|
Token::MapEnd,
|
||
|
]
|
||
|
);
|
||
|
}
|