aboutsummaryrefslogtreecommitdiff
path: root/tests/testsuite/convert.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testsuite/convert.rs')
-rw-r--r--tests/testsuite/convert.rs79
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);
+}