use serde_derive::Deserialize; use std::fs::File; use std::io::prelude::*; mod common; use crate::common::deserializes_to; #[derive(Deserialize, PartialEq, Debug)] #[serde(rename_all = "camelCase")] struct Example { unquoted: String, single_quotes: String, line_breaks: String, hexadecimal: u32, leading_decimal_point: f64, and_trailing: f64, positive_sign: i32, trailing_comma: String, and_in: Vec, backwards_compatible: String, } #[test] fn serializes_example_from_json5_dot_org() { let mut contents = String::new(); File::open("tests/assets/json5_dot_org_example.json5") .unwrap() .read_to_string(&mut contents) .unwrap(); let expected = Example { unquoted: "and you can quote me on that".to_owned(), single_quotes: "I can use \"double quotes\" here".to_owned(), line_breaks: "Look, Mom! No \\n's!".to_owned(), hexadecimal: 0xdecaf, leading_decimal_point: 0.8675309, and_trailing: 8675309.0, positive_sign: 1, trailing_comma: "in objects".to_owned(), and_in: vec!["arrays".to_owned()], backwards_compatible: "with JSON".to_owned(), }; deserializes_to(&contents, expected) }