diff options
author | Alex Crichton <alex@alexcrichton.com> | 2017-07-28 15:18:18 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-28 15:18:18 -0500 |
commit | cb14d39f154c4d3cc35ad21db14f35e0e3dfd913 (patch) | |
tree | 0a31778707796afe24b418ca1dc7a32d0ca1d84d /tests | |
parent | 1a770fdb229621c1f62c4ea6ea9ab61cb7f0befe (diff) | |
parent | ca81a4a291930aa25637cf814b2f760f4e9d487d (diff) | |
download | milf-rs-cb14d39f154c4d3cc35ad21db14f35e0e3dfd913.tar.gz milf-rs-cb14d39f154c4d3cc35ad21db14f35e0e3dfd913.zip |
Merge pull request #201 from vitiral/triple
demonstrate tripple quote problem
Diffstat (limited to 'tests')
-rw-r--r-- | tests/pretty.rs | 58 | ||||
-rw-r--r-- | tests/valid.rs | 55 |
2 files changed, 102 insertions, 11 deletions
diff --git a/tests/pretty.rs b/tests/pretty.rs index ae9a839..cceb815 100644 --- a/tests/pretty.rs +++ b/tests/pretty.rs @@ -41,11 +41,12 @@ fn disable_pretty() { const PRETTY_STD: &'static str = "\ [example] array = [ - \"item 1\", - \"item 2\", + 'item 1', + 'item 2', ] empty = [] -oneline = \"this has no newlines.\" +one = ['one'] +oneline = 'this has no newlines.' text = ''' this is the first line this is the second line @@ -67,15 +68,21 @@ fn pretty_std() { const PRETTY_INDENT_2: &'static str = "\ [example] array = [ - \"item 1\", - \"item 2\", + 'item 1', + 'item 2', ] empty = [] -oneline = \"this has no newlines.\" +one = ['one'] +oneline = 'this has no newlines.' text = ''' this is the first line this is the second line ''' +three = [ + 'one', + 'two', + 'three', +] "; #[test] @@ -88,6 +95,7 @@ fn pretty_indent_2() { serializer.pretty_array_indent(2); value.serialize(&mut serializer).unwrap(); } + println!(">> Result:\n{}", result); assert_eq!(toml, &result); } @@ -166,3 +174,41 @@ fn pretty_no_string() { } assert_eq!(toml, &result); } + +const PRETTY_TRICKY: &'static str = r##"[example] +f = "\f" +glass = ''' +Nothing too unusual, except that I can eat glass in: +- Greek: Μπορώ να φάω σπασμένα γυαλιά χωρίς να πάθω τίποτα. +- Polish: Mogę jeść szkło, i mi nie szkodzi. +- Hindi: मैं काँच खा सकता हूँ, मुझे उस से कोई पीडा नहीं होती. +- Japanese: 私はガラスを食べられます。それは私を傷つけません。 +''' +r = "\r" +r_newline = """ +\r +""" +single = '''this is a single line but has '' cuz it's tricky''' +single_tricky = "single line with ''' in it" +tabs = ''' +this is pretty standard + except for some tabs right here +''' +text = """ +this is the first line. +This has a ''' in it and \"\"\" cuz it's tricky yo +Also ' and \" because why not +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) => ( |