extern crate ordered_float;
#[macro_use]
extern crate yoga;
use yoga::{prelude::*, Direction, FlexDirection, Node, Undefined};
#[test]
fn test_start_overrides() {
let mut root = Node::new();
style!(root,
FlexDirection(FlexDirection::Row),
Width(100 pt),
Height(100 pt)
);
let mut root_child_0 = Node::new();
style!(root_child_0,
FlexGrow(1.0),
MarginStart(10 pt),
MarginLeft(20 pt),
MarginRight(20 pt)
);
root.insert_child(&mut root_child_0, 0);
root.calculate_layout(Undefined, Undefined, Direction::LTR);
let root_layout = root.get_layout();
let child_layout = root_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!(10.0, child_layout.left());
assert_eq!(20.0, child_layout.right());
assert_eq!(0.0, child_layout.top());
assert_eq!(70.0, child_layout.width());
assert_eq!(100.0, child_layout.height());
root.calculate_layout(Undefined, Undefined, Direction::RTL);
let root_layout = root.get_layout();
let child_layout = root_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!(20.0, child_layout.left());
assert_eq!(10.0, child_layout.right());
assert_eq!(0.0, child_layout.top());
assert_eq!(70.0, child_layout.width());
assert_eq!(100.0, child_layout.height());
}
#[test]
fn test_end_overrides() {
let mut root = Node::new();
style!(root,
FlexDirection(FlexDirection::Row),
Width(100 pt),
Height(100 pt)
);
let mut root_child_0 = Node::new();
style!(root_child_0,
FlexGrow(1.0),
MarginEnd(10 pt),
MarginLeft(20 pt),
MarginRight(20 pt)
);
root.insert_child(&mut root_child_0, 0);
root.calculate_layout(Undefined, Undefined, Direction::LTR);
let root_layout = root.get_layout();
let child_layout = root_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!(20.0, child_layout.left());
assert_eq!(10.0, child_layout.right());
assert_eq!(0.0, child_layout.top());
assert_eq!(70.0, child_layout.width());
assert_eq!(100.0, child_layout.height());
root.calculate_layout(Undefined, Undefined, Direction::RTL);
let root_layout = root.get_layout();
let child_layout = root_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!(10.0, child_layout.left());
assert_eq!(20.0, child_layout.right());
assert_eq!(0.0, child_layout.top());
assert_eq!(70.0, child_layout.width());
assert_eq!(100.0, child_layout.height());
}
#[test]
fn test_horizontal_overridden() {
let mut root = Node::new();
style!(root,
FlexDirection(FlexDirection::Row),
Width(100 pt),
Height(100 pt)
);
let mut root_child_0 = Node::new();
style!(root_child_0,
FlexGrow(1.0),
MarginHorizontal(10 pt),
MarginLeft(20 pt)
);
root.insert_child(&mut root_child_0, 0);
root.calculate_layout(Undefined, Undefined, Direction::LTR);
let root_layout = root.get_layout();
let child_layout = root_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!(20.0, child_layout.left());
assert_eq!(10.0, child_layout.right());
assert_eq!(0.0, child_layout.top());
assert_eq!(70.0, child_layout.width());
assert_eq!(100.0, child_layout.height());
root.calculate_layout(Undefined, Undefined, Direction::RTL);
let root_layout = root.get_layout();
let child_layout = root_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!(20.0, child_layout.left());
assert_eq!(10.0, child_layout.right());
assert_eq!(0.0, child_layout.top());
assert_eq!(70.0, child_layout.width());
assert_eq!(100.0, child_layout.height());
}
#[test]
fn test_vertical_overridden() {
let mut root = Node::new();
style!(root,
FlexDirection(FlexDirection::Row),
Width(100 pt),
Height(100 pt)
);
let mut root_child_0 = Node::new();
style!(root_child_0,
FlexGrow(1.0),
MarginVertical(10 pt),
MarginTop(20 pt)
);
root.insert_child(&mut root_child_0, 0);
root.calculate_layout(Undefined, Undefined, Direction::LTR);
let root_layout = root.get_layout();
let child_layout = root_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_layout.left());
assert_eq!(0.0, child_layout.right());
assert_eq!(20.0, child_layout.top());
assert_eq!(10.0, child_layout.bottom());
assert_eq!(100.0, child_layout.width());
assert_eq!(70.0, child_layout.height());
root.calculate_layout(Undefined, Undefined, Direction::RTL);
let root_layout = root.get_layout();
let child_layout = root_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_layout.left());
assert_eq!(0.0, child_layout.right());
assert_eq!(20.0, child_layout.top());
assert_eq!(10.0, child_layout.bottom());
assert_eq!(100.0, child_layout.width());
assert_eq!(70.0, child_layout.height());
}
#[test]
fn test_horizontal_overrides_all() {
let mut root = Node::new();
style!(root,
FlexDirection(FlexDirection::Row),
Width(100 pt),
Height(100 pt)
);
let mut root_child_0 = Node::new();
style!(root_child_0,
FlexGrow(1.0),
MarginHorizontal(10 pt),
Margin(20 pt)
);
root.insert_child(&mut root_child_0, 0);
root.calculate_layout(Undefined, Undefined, Direction::LTR);
let root_layout = root.get_layout();
let child_layout = root_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!(10.0, child_layout.left());
assert_eq!(10.0, child_layout.right());
assert_eq!(20.0, child_layout.top());
assert_eq!(20.0, child_layout.bottom());
assert_eq!(80.0, child_layout.width());
assert_eq!(60.0, child_layout.height());
root.calculate_layout(Undefined, Undefined, Direction::RTL);
let root_layout = root.get_layout();
let child_layout = root_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!(10.0, child_layout.left());
assert_eq!(10.0, child_layout.right());
assert_eq!(20.0, child_layout.top());
assert_eq!(20.0, child_layout.bottom());
assert_eq!(80.0, child_layout.width());
assert_eq!(60.0, child_layout.height());
}
#[test]
fn test_vertical_overrides_all() {
let mut root = Node::new();
style!(root,
FlexDirection(FlexDirection::Row),
Width(100 pt),
Height(100 pt)
);
let mut root_child_0 = Node::new();
style!(root_child_0,
FlexGrow(1.0),
MarginVertical(10 pt),
Margin(20 pt)
);
root.insert_child(&mut root_child_0, 0);
root.calculate_layout(Undefined, Undefined, Direction::LTR);
let root_layout = root.get_layout();
let child_layout = root_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!(20.0, child_layout.left());
assert_eq!(20.0, child_layout.right());
assert_eq!(10.0, child_layout.top());
assert_eq!(10.0, child_layout.bottom());
assert_eq!(60.0, child_layout.width());
assert_eq!(80.0, child_layout.height());
root.calculate_layout(Undefined, Undefined, Direction::RTL);
let root_layout = root.get_layout();
let child_layout = root_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!(20.0, child_layout.left());
assert_eq!(20.0, child_layout.right());
assert_eq!(10.0, child_layout.top());
assert_eq!(10.0, child_layout.bottom());
assert_eq!(60.0, child_layout.width());
assert_eq!(80.0, child_layout.height());
}
#[test]
fn test_all_overridden() {
let mut root = Node::new();
style!(root,
FlexDirection(FlexDirection::Row),
Width(100 pt),
Height(100 pt)
);
let mut root_child_0 = Node::new();
style!(root_child_0,
FlexGrow(1.0),
MarginLeft(10 pt),
MarginTop(10 pt),
MarginRight(10 pt),
MarginBottom(10 pt),
Margin(20 pt)
);
root.insert_child(&mut root_child_0, 0);
root.calculate_layout(Undefined, Undefined, Direction::LTR);
let root_layout = root.get_layout();
let child_layout = root_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!(10.0, child_layout.left());
assert_eq!(10.0, child_layout.right());
assert_eq!(10.0, child_layout.top());
assert_eq!(10.0, child_layout.bottom());
assert_eq!(80.0, child_layout.width());
assert_eq!(80.0, child_layout.height());
root.calculate_layout(Undefined, Undefined, Direction::RTL);
let root_layout = root.get_layout();
let child_layout = root_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!(10.0, child_layout.left());
assert_eq!(10.0, child_layout.right());
assert_eq!(10.0, child_layout.top());
assert_eq!(10.0, child_layout.bottom());
assert_eq!(80.0, child_layout.width());
assert_eq!(80.0, child_layout.height());
}