зеркало из https://github.com/mozilla/gecko-dev.git
54 строки
1.3 KiB
Rust
54 строки
1.3 KiB
Rust
use ron::{
|
|
de::from_str,
|
|
ser::{to_string_pretty, PrettyConfig},
|
|
};
|
|
use serde::{Deserialize, Serialize};
|
|
use std::collections::BTreeMap;
|
|
|
|
#[derive(Debug, Deserialize, Serialize)]
|
|
struct Config {
|
|
boolean: bool,
|
|
float: f32,
|
|
map: BTreeMap<u8, char>,
|
|
nested: Nested,
|
|
tuple: (u32, u32),
|
|
}
|
|
|
|
#[derive(Debug, Deserialize, Serialize)]
|
|
struct Nested {
|
|
a: String,
|
|
b: char,
|
|
}
|
|
|
|
fn read_original(source: &str) -> String {
|
|
source.to_string().replace("\r\n", "\n")
|
|
}
|
|
|
|
fn make_roundtrip(source: &str) -> String {
|
|
let config: Config = match from_str(source) {
|
|
Ok(x) => x,
|
|
Err(e) => {
|
|
println!("Failed to load config: {}", e);
|
|
std::process::exit(1);
|
|
}
|
|
};
|
|
let pretty = PrettyConfig::new()
|
|
.with_depth_limit(3)
|
|
.with_separate_tuple_members(true)
|
|
.with_enumerate_arrays(true)
|
|
.with_new_line("\n".into());
|
|
to_string_pretty(&config, pretty).expect("Serialization failed")
|
|
}
|
|
|
|
#[test]
|
|
fn test_sequence_ex1() {
|
|
let file = include_str!("preserve_sequence_ex1.ron");
|
|
assert_eq!(read_original(file), make_roundtrip(file));
|
|
}
|
|
|
|
#[test]
|
|
fn test_sequence_ex2() {
|
|
let file = include_str!("preserve_sequence_ex2.ron");
|
|
assert_eq!(read_original(file), make_roundtrip(file));
|
|
}
|