use { serde::Deserialize, }; #[macro_use] mod common; // check that CRLF are considered as LF #[test] fn test_crlf() { #[derive(Deserialize, PartialEq, Debug)] enum Enum { A, B, } #[derive(Deserialize, PartialEq, Debug)] struct InnerStruct { txt: String, val: Enum, } #[derive(Deserialize, PartialEq, Debug)] struct OuterStruct { int: i32, float: f64, seq: Vec, txt: Option, structs: Vec, } let hjson_lf = r#" { # Some comments int: 44, seq: [ "bla", // comments again ''' some multiline string ''' no comma ] float: 5.7, // comments too structs: [ { txt: "" val: "A" } { val: "B" txt: ''' also on three lines ''' } ] } "#; let hjson_crlf = hjson_lf.replace('\n', "\r\n"); let hjson_crlf = &hjson_crlf; fn check(os: &OuterStruct) { assert_eq!( os.seq, vo!["bla", "some\nmultiline\nstring", "no comma"], ); assert_eq!(os.int, 44); assert_eq!( os.structs[1].txt, "also on\nthree\nlines".to_owned(), ); } let crlf = deser_hjson::from_str::(hjson_crlf).unwrap(); let lf = deser_hjson::from_str::(hjson_lf).unwrap(); check(&crlf); check(&lf); assert_eq!( crlf, lf, ); }