use snapbox::assert_data_eq;
use snapbox::str;
use super::*;
#[test]
fn render_tree_root() {
let tree = Tree::new("foo");
assert_data_eq!(
format!("{}", tree),
str![[r#"
foo
"#]]
);
}
#[test]
fn render_tree_with_leaves() {
let tree = Tree::new("foo").with_leaves([Tree::new("bar").with_leaves(["baz"])]);
assert_data_eq!(
format!("{}", tree),
str![[r#"
foo
└── bar
└── baz
"#]]
);
}
#[test]
fn render_tree_with_multiple_leaves() {
let tree = Tree::new("foo").with_leaves(["bar", "baz"]);
assert_data_eq!(
format!("{}", tree),
str![[r#"
foo
├── bar
└── baz
"#]]
);
}
#[test]
fn render_tree_with_multiline_leaf() {
let tree = Tree::new("foo").with_leaves([
Tree::new("hello\nworld").with_multiline(true),
Tree::new("goodbye\nworld").with_multiline(true),
]);
assert_data_eq!(
format!("{}", tree),
str![[r#"
foo
├── hello
│ world
└── goodbye
world
"#]]
);
}
#[test]
fn render_custom_glyphs() {
let root = GlyphPalette {
middle_item: "[mid ]",
last_item: "[last ]",
item_indent: "[indent ]",
middle_skip: "[mskip]",
last_skip: "[lskip]",
skip_indent: "[iskip ]",
};
let middle = GlyphPalette {
middle_item: "(mid )",
last_item: "(last )",
item_indent: "(indent )",
middle_skip: "(mskip)",
last_skip: "(lskip)",
skip_indent: "(iskip )",
};
let tree = Tree::new("node 1").with_glyphs(root).with_leaves([
Tree::new("node 1.1"),
Tree::new("node 1.2"),
Tree::new("node 1.3").with_leaves([
Tree::new("node 1.3.1").with_glyphs(middle),
Tree::new("node 1.3.2").with_glyphs(middle),
Tree::new("node 1.3.3")
.with_glyphs(middle)
.with_leaves(["node 1.3.3.1", "node 1.3.3.2"]),
]),
Tree::new("node 1.4").with_leaves([
Tree::new("node 1.4.1"),
Tree::new("node 1.4.2"),
Tree::new("node 1.4.3").with_leaves(["node 1.4.3.1", "node 1.4.3.2"]),
]),
]);
assert_data_eq!(
format!("{}", tree),
str![[r#"
node 1
[mid ][indent ]node 1.1
[mid ][indent ]node 1.2
[mid ][indent ]node 1.3
[mskip][iskip ](mid )(indent )node 1.3.1
[mskip][iskip ](mid )(indent )node 1.3.2
[mskip][iskip ](last )(indent )node 1.3.3
[mskip][iskip ](lskip)(iskip )(mid )(indent )node 1.3.3.1
[mskip][iskip ](lskip)(iskip )(last )(indent )node 1.3.3.2
[last ][indent ]node 1.4
[lskip][iskip ][mid ][indent ]node 1.4.1
[lskip][iskip ][mid ][indent ]node 1.4.2
[lskip][iskip ][last ][indent ]node 1.4.3
[lskip][iskip ][lskip][iskip ][mid ][indent ]node 1.4.3.1
[lskip][iskip ][lskip][iskip ][last ][indent ]node 1.4.3.2
"#]]
);
}