use winged_rust::prelude::*;
fn wide_tree(count: usize) -> Element {
ul().children_from((0..count).map(|i| li().add_class("item").text(format!("Item {i}"))))
}
#[test]
fn compact_output_size_is_stable() {
let rendered = wide_tree(1_000).render();
let expected: usize = 9
+ (0..1_000)
.map(|i| format!(r#"<li class="item">Item {i}</li>"#).len())
.sum::<usize>();
assert_eq!(
rendered.len(),
expected,
"compact render emitted unexpected bytes"
);
}
#[test]
fn pretty_output_adds_exactly_one_line_per_node() {
let rendered = wide_tree(1_000).render_pretty();
assert_eq!(rendered.lines().count(), 1_002);
}
#[test]
fn rendering_is_stable_across_repeated_calls() {
let tree = wide_tree(500);
let first = tree.render();
for _ in 0..10 {
assert_eq!(tree.render(), first, "render is not deterministic");
}
}
#[test]
fn nesting_to_the_documented_depth_renders() {
let mut node = p().text("bottom");
for _ in 0..256 {
node = div().child(node);
}
assert!(node.render().len() > 256);
assert!(node.render_pretty().lines().count() > 256);
}