diff options
Diffstat (limited to 'tests/testsuite/convert.rs')
-rw-r--r-- | tests/testsuite/convert.rs | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/testsuite/convert.rs b/tests/testsuite/convert.rs new file mode 100644 index 0000000..98f9397 --- /dev/null +++ b/tests/testsuite/convert.rs @@ -0,0 +1,79 @@ +use snapbox::assert_eq; + +use toml_edit::{Document, Item, Value}; + +#[test] +fn table_into_inline() { + let toml = r#" +[table] +string = "value" +array = [1, 2, 3] +inline = { "1" = 1, "2" = 2 } + +[table.child] +other = "world" +"#; + let mut doc = toml.parse::<Document>().unwrap(); + + doc.get_mut("table").unwrap().make_value(); + + let actual = doc.to_string(); + // `table=` is because we didn't re-format the table key, only the value + let expected = r#"table= { string = "value", array = [1, 2, 3], inline = { "1" = 1, "2" = 2 }, child = { other = "world" } } +"#; + assert_eq(expected, actual); +} + +#[test] +fn inline_table_to_table() { + let toml = r#"table = { string = "value", array = [1, 2, 3], inline = { "1" = 1, "2" = 2 }, child = { other = "world" } } +"#; + let mut doc = toml.parse::<Document>().unwrap(); + + let t = doc.remove("table").unwrap(); + let t = match t { + Item::Value(Value::InlineTable(t)) => t, + _ => unreachable!("Unexpected {:?}", t), + }; + let t = t.into_table(); + doc.insert("table", Item::Table(t)); + + let actual = doc.to_string(); + let expected = r#"[table] +string = "value" +array = [1, 2, 3] +inline = { "1" = 1, "2" = 2 } +child = { other = "world" } +"#; + assert_eq(expected, actual); +} + +#[test] +fn array_of_tables_to_array() { + let toml = r#" +[[table]] +string = "value" +array = [1, 2, 3] +inline = { "1" = 1, "2" = 2 } + +[table.child] +other = "world" + +[[table]] +string = "value" +array = [1, 2, 3] +inline = { "1" = 1, "2" = 2 } + +[table.child] +other = "world" +"#; + let mut doc = toml.parse::<Document>().unwrap(); + + doc.get_mut("table").unwrap().make_value(); + + let actual = doc.to_string(); + // `table=` is because we didn't re-format the table key, only the value + let expected = r#"table= [{ string = "value", array = [1, 2, 3], inline = { "1" = 1, "2" = 2 }, child = { other = "world" } }, { string = "value", array = [1, 2, 3], inline = { "1" = 1, "2" = 2 }, child = { other = "world" } }] +"#; + assert_eq(expected, actual); +} |