Files
miniserde_enum/tests/serialize.rs
2019-10-11 16:32:09 +02:00

53 lines
1.2 KiB
Rust

use miniserde::{json, Serialize};
use miniserde_enum::Serialize_enum;
#[test]
fn test_internal() {
#[serde(tag = "type")]
#[derive(Serialize_enum)]
enum Internal {
A,
#[serde(rename = "renamedB")]
B,
C{x: i32},
}
use Internal::*;
let example = [A, B, C{x: 2}];
let actual = json::to_string(&example[..]);
let expected = r#"[{"type":"A"},{"type":"renamedB"},{"type":"C","x":2}]"#;
assert_eq!(actual, expected);
}
#[test]
fn test_external() {
#[derive(Serialize_enum)]
enum External {
A,
#[serde(rename = "renamedB")]
B,
C{x: i32},
}
use External::*;
let example = [A, B, C{x: 2}];
let actual = json::to_string(&example[..]);
let expected = r#"["A","renamedB",{"C":{"x":2}}]"#;
assert_eq!(actual, expected);
}
#[test]
fn test_untagged() {
#[serde(untagged)]
#[derive(Serialize_enum)]
enum Untagged {
A,
#[serde(rename = "renamedB")]
B,
C{x: i32},
}
use Untagged::*;
let example = [A, B, C{x: 2}];
let actual = json::to_string(&example[..]);
let expected = r#"["A","renamedB",{"x":2}]"#;
assert_eq!(actual, expected);
}