diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/pretty.rs | 19 | ||||
| -rw-r--r-- | tests/valid.rs | 55 | 
2 files changed, 69 insertions, 5 deletions
| diff --git a/tests/pretty.rs b/tests/pretty.rs index ae9a839..f7d1612 100644 --- a/tests/pretty.rs +++ b/tests/pretty.rs @@ -166,3 +166,22 @@ fn pretty_no_string() {      }      assert_eq!(toml, &result);  } + +const PRETTY_TRICKY: &'static str = r"[example] +text = ''' +this is the first line +This has a ''\' in it for no reason +this is the third line +''' +"; + +#[test] +fn pretty_tricky() { +    let toml = PRETTY_TRICKY; +    let value: toml::Value = toml::from_str(toml).unwrap(); +    let mut result = String::with_capacity(128); +    value.serialize(&mut toml::Serializer::pretty(&mut result)).unwrap(); +    println!("EXPECTED:\n{}", toml); +    println!("\nRESULT:\n{}", result); +    assert_eq!(toml, &result); +} diff --git a/tests/valid.rs b/tests/valid.rs index 6a04866..b186800 100644 --- a/tests/valid.rs +++ b/tests/valid.rs @@ -1,7 +1,9 @@  extern crate toml; +extern crate serde;  extern crate serde_json; -use toml::Value as Toml; +use toml::{Value as Toml, to_string_pretty}; +use serde::ser::Serialize;  use serde_json::Value as Json;  fn to_json(toml: toml::Value) -> Json { @@ -40,10 +42,52 @@ fn to_json(toml: toml::Value) -> Json {      }  } -fn run(toml: &str, json: &str) { -    println!("parsing:\n{}", toml); -    let toml: Toml = toml.parse().unwrap(); -    let json: Json = json.parse().unwrap(); +fn run_pretty(toml: Toml) { +    // Assert toml == json +    println!("### pretty round trip parse."); +     +    // standard pretty +    let toml_raw = to_string_pretty(&toml).expect("to string"); +    let toml2 = toml_raw.parse().expect("from string"); +    assert_eq!(toml, toml2); + +    // pretty with indent 2 +    let mut result = String::with_capacity(128); +    { +        let mut serializer = toml::Serializer::pretty(&mut result); +        serializer.pretty_array_indent(2); +        toml.serialize(&mut serializer).expect("to string"); +    } +    assert_eq!(toml, result.parse().expect("from str")); +    result.clear(); +    { +        let mut serializer = toml::Serializer::new(&mut result); +        serializer.pretty_array_trailing_comma(false); +        toml.serialize(&mut serializer).expect("to string"); +    } +    assert_eq!(toml, result.parse().expect("from str")); +    result.clear(); +    { +        let mut serializer = toml::Serializer::pretty(&mut result); +        serializer.pretty_string(false); +        toml.serialize(&mut serializer).expect("to string"); +        assert_eq!(toml, toml2); +    } +    assert_eq!(toml, result.parse().expect("from str")); +    result.clear(); +    { +        let mut serializer = toml::Serializer::pretty(&mut result); +        serializer.pretty_array(false); +        toml.serialize(&mut serializer).expect("to string"); +        assert_eq!(toml, toml2); +    } +    assert_eq!(toml, result.parse().expect("from str")); +} + +fn run(toml_raw: &str, json_raw: &str) { +    println!("parsing:\n{}", toml_raw); +    let toml: Toml = toml_raw.parse().unwrap(); +    let json: Json = json_raw.parse().unwrap();      // Assert toml == json      let toml_json = to_json(toml.clone()); @@ -56,6 +100,7 @@ fn run(toml: &str, json: &str) {      println!("round trip parse: {}", toml);      let toml2 = toml.to_string().parse().unwrap();      assert_eq!(toml, toml2); +    run_pretty(toml);  }  macro_rules! test( ($name:ident, $toml:expr, $json:expr) => ( |