use torin::{
prelude::*,
test_utils::*,
};
#[test]
pub fn same_height_different_parent() {
let (mut layout, mut measurer) = test_utils();
let mut mocked_tree = TestingTree::default();
mocked_tree.add(
0,
None,
vec![1],
Node::from_size_and_direction(
Size::Pixels(Length::new(200.0)),
Size::Pixels(Length::new(200.0)),
Direction::Vertical,
),
);
mocked_tree.add(
1,
Some(0),
vec![2, 3],
Node::from_size_and_direction(
Size::Pixels(Length::new(200.0)),
Size::Pixels(Length::new(200.0)),
Direction::Vertical,
),
);
mocked_tree.add(
2,
Some(1),
vec![4, 5],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
mocked_tree.add(
3,
Some(1),
vec![6, 7],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
mocked_tree.add(
4,
Some(2),
vec![],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
mocked_tree.add(
5,
Some(2),
vec![],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
mocked_tree.add(
6,
Some(3),
vec![],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
mocked_tree.add(
7,
Some(3),
vec![],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
layout.measure(
0,
Rect::new(Point2D::new(0.0, 0.0), Size2D::new(1000.0, 1000.0)),
&mut measurer,
&mut mocked_tree,
);
layout.invalidate(5);
layout.invalidate(7);
layout.find_best_root(&mut mocked_tree);
assert_eq!(layout.get_root_candidate(), RootNodeCandidate::Valid(1));
}
#[test]
pub fn same_height_same_parent() {
let (mut layout, mut measurer) = test_utils();
let mut mocked_tree = TestingTree::default();
mocked_tree.add(
0,
None,
vec![1],
Node::from_size_and_direction(
Size::Pixels(Length::new(200.0)),
Size::Pixels(Length::new(200.0)),
Direction::Vertical,
),
);
mocked_tree.add(
1,
Some(0),
vec![2, 3],
Node::from_size_and_direction(
Size::Pixels(Length::new(200.0)),
Size::Pixels(Length::new(200.0)),
Direction::Vertical,
),
);
mocked_tree.add(
2,
Some(1),
vec![4, 5],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
mocked_tree.add(
3,
Some(1),
vec![6, 7],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
mocked_tree.add(
4,
Some(2),
vec![],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
mocked_tree.add(
5,
Some(2),
vec![],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
mocked_tree.add(
6,
Some(3),
vec![],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
mocked_tree.add(
7,
Some(3),
vec![],
Node::from_size_and_direction(
Size::Percentage(Length::new(100.0)),
Size::Percentage(Length::new(100.0)),
Direction::Vertical,
),
);
layout.measure(
0,
Rect::new(Point2D::new(0.0, 0.0), Size2D::new(1000.0, 1000.0)),
&mut measurer,
&mut mocked_tree,
);
layout.invalidate(6);
layout.invalidate(7);
layout.find_best_root(&mut mocked_tree);
assert_eq!(layout.get_root_candidate(), RootNodeCandidate::Valid(3));
}