#[macro_use]
extern crate yoga;
use yoga::{prelude::*, Align, Direction, FlexDirection, Node, NodeRef, Undefined};
#[test]
fn test_align_baseline_customer_func() {
extern "C" fn baseline_func(_: NodeRef, _: f32, _: f32) -> f32 {
10.0
}
let mut root = Node::new();
style!(root,
FlexDirection(FlexDirection::Row),
AlignItems(Align::Baseline),
Width(100 pt),
Height(100 pt)
);
let mut root_child_0 = Node::new();
style!(root_child_0,
Width(50 pt),
Height(50 pt)
);
let mut root_child_1 = Node::new();
style!(root_child_1,
Width(50 pt),
Height(20 pt)
);
let mut root_child_1_child_0 = Node::new();
root_child_1_child_0.set_baseline_func(Some(baseline_func));
style!(root_child_1_child_0,
Width(50 pt),
Height(20 pt)
);
root.insert_child(&mut root_child_0, 0);
root.insert_child(&mut root_child_1, 1);
root_child_1.insert_child(&mut root_child_1_child_0, 0);
root.calculate_layout(Undefined, Undefined, Direction::LTR);
let root_layout = root.get_layout();
let child_0_layout = root_child_0.get_layout();
let child_1_layout = root_child_1.get_layout();
let child_1_child_0_layout = root_child_1_child_0.get_layout();
assert_eq!(0.0, root_layout.left());
assert_eq!(0.0, root_layout.top());
assert_eq!(100.0, root_layout.width());
assert_eq!(100.0, root_layout.height());
assert_eq!(0.0, child_0_layout.left());
assert_eq!(0.0, child_0_layout.top());
assert_eq!(50.0, child_0_layout.width());
assert_eq!(50.0, child_0_layout.height());
assert_eq!(50.0, child_1_layout.left());
assert_eq!(40.0, child_1_layout.top());
assert_eq!(50.0, child_1_layout.width());
assert_eq!(20.0, child_1_layout.height());
assert_eq!(0.0, child_1_child_0_layout.left());
assert_eq!(0.0, child_1_child_0_layout.top());
assert_eq!(50.0, child_1_child_0_layout.width());
assert_eq!(20.0, child_1_child_0_layout.height());
}