use links_notation::{format_links, parse_lino_to_links};
#[test]
fn indented_id_retains_nested_values() {
let cases = [
("outer:\n inner:\n value1\n value2\n value3", "(outer: (inner: value1 value2) value3)"),
("statement:\n subject:\n I\n verb:\n love\n object:\n you:\n very\n much", "(statement: (subject: I) (verb: love) (object: (you: very much)))"),
("document:\n (metadata: title author date)\n content:\n paragraph1\n (paragraph2: text (with: nested structure))\n paragraph3", "(document: (metadata: title author date) (content: paragraph1 (paragraph2: text (with: nested structure)) paragraph3))"),
("image:\n file: .gitpod.Dockerfile\n context: ./docker-content", "(image: (file: .gitpod.Dockerfile) (context: ./docker-content))"),
("level1:\n level2:\n level3a\n level3b\n level2b", "(level1: (level2: level3a level3b) level2b)"),
("root:\n child1\n child2\n grandchild", "(root: child1 (child2 grandchild))"),
];
for (source, expected) in cases {
let actual = parse_lino_to_links(source).unwrap();
assert_eq!(format_links(&actual), expected, "{source}");
assert_eq!(actual, parse_lino_to_links(expected).unwrap(), "{source}");
}
}