package flex import "testing" func TestNested_overflowing_child(t *testing.T) { config := NewConfig() root := NewNodeWithConfig(config) root.StyleSetWidth(100) root.StyleSetHeight(100) rootChild0 := NewNodeWithConfig(config) root.InsertChild(rootChild0, 0) rootChild0Child0 := NewNodeWithConfig(config) rootChild0Child0.StyleSetWidth(200) rootChild0Child0.StyleSetHeight(200) rootChild0.InsertChild(rootChild0Child0, 0) CalculateLayout(root, Undefined, Undefined, DirectionLTR) assertFloatEqual(t, 0, root.LayoutGetLeft()) assertFloatEqual(t, 0, root.LayoutGetTop()) assertFloatEqual(t, 100, root.LayoutGetWidth()) assertFloatEqual(t, 100, root.LayoutGetHeight()) assertFloatEqual(t, 0, rootChild0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0.LayoutGetTop()) assertFloatEqual(t, 100, rootChild0.LayoutGetWidth()) assertFloatEqual(t, 200, rootChild0.LayoutGetHeight()) assertFloatEqual(t, 0, rootChild0Child0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0Child0.LayoutGetTop()) assertFloatEqual(t, 200, rootChild0Child0.LayoutGetWidth()) assertFloatEqual(t, 200, rootChild0Child0.LayoutGetHeight()) CalculateLayout(root, Undefined, Undefined, DirectionRTL) assertFloatEqual(t, 0, root.LayoutGetLeft()) assertFloatEqual(t, 0, root.LayoutGetTop()) assertFloatEqual(t, 100, root.LayoutGetWidth()) assertFloatEqual(t, 100, root.LayoutGetHeight()) assertFloatEqual(t, 0, rootChild0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0.LayoutGetTop()) assertFloatEqual(t, 100, rootChild0.LayoutGetWidth()) assertFloatEqual(t, 200, rootChild0.LayoutGetHeight()) assertFloatEqual(t, -100, rootChild0Child0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0Child0.LayoutGetTop()) assertFloatEqual(t, 200, rootChild0Child0.LayoutGetWidth()) assertFloatEqual(t, 200, rootChild0Child0.LayoutGetHeight()) } func TestNested_overflowing_child_in_constraint_parent(t *testing.T) { config := NewConfig() root := NewNodeWithConfig(config) root.StyleSetWidth(100) root.StyleSetHeight(100) rootChild0 := NewNodeWithConfig(config) rootChild0.StyleSetWidth(100) rootChild0.StyleSetHeight(100) root.InsertChild(rootChild0, 0) rootChild0Child0 := NewNodeWithConfig(config) rootChild0Child0.StyleSetWidth(200) rootChild0Child0.StyleSetHeight(200) rootChild0.InsertChild(rootChild0Child0, 0) CalculateLayout(root, Undefined, Undefined, DirectionLTR) assertFloatEqual(t, 0, root.LayoutGetLeft()) assertFloatEqual(t, 0, root.LayoutGetTop()) assertFloatEqual(t, 100, root.LayoutGetWidth()) assertFloatEqual(t, 100, root.LayoutGetHeight()) assertFloatEqual(t, 0, rootChild0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0.LayoutGetTop()) assertFloatEqual(t, 100, rootChild0.LayoutGetWidth()) assertFloatEqual(t, 100, rootChild0.LayoutGetHeight()) assertFloatEqual(t, 0, rootChild0Child0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0Child0.LayoutGetTop()) assertFloatEqual(t, 200, rootChild0Child0.LayoutGetWidth()) assertFloatEqual(t, 200, rootChild0Child0.LayoutGetHeight()) CalculateLayout(root, Undefined, Undefined, DirectionRTL) assertFloatEqual(t, 0, root.LayoutGetLeft()) assertFloatEqual(t, 0, root.LayoutGetTop()) assertFloatEqual(t, 100, root.LayoutGetWidth()) assertFloatEqual(t, 100, root.LayoutGetHeight()) assertFloatEqual(t, 0, rootChild0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0.LayoutGetTop()) assertFloatEqual(t, 100, rootChild0.LayoutGetWidth()) assertFloatEqual(t, 100, rootChild0.LayoutGetHeight()) assertFloatEqual(t, -100, rootChild0Child0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0Child0.LayoutGetTop()) assertFloatEqual(t, 200, rootChild0Child0.LayoutGetWidth()) assertFloatEqual(t, 200, rootChild0Child0.LayoutGetHeight()) } func TestParent_wrap_child_size_overflowing_parent(t *testing.T) { config := NewConfig() root := NewNodeWithConfig(config) root.StyleSetWidth(100) root.StyleSetHeight(100) rootChild0 := NewNodeWithConfig(config) rootChild0.StyleSetWidth(100) root.InsertChild(rootChild0, 0) rootChild0Child0 := NewNodeWithConfig(config) rootChild0Child0.StyleSetWidth(100) rootChild0Child0.StyleSetHeight(200) rootChild0.InsertChild(rootChild0Child0, 0) CalculateLayout(root, Undefined, Undefined, DirectionLTR) assertFloatEqual(t, 0, root.LayoutGetLeft()) assertFloatEqual(t, 0, root.LayoutGetTop()) assertFloatEqual(t, 100, root.LayoutGetWidth()) assertFloatEqual(t, 100, root.LayoutGetHeight()) assertFloatEqual(t, 0, rootChild0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0.LayoutGetTop()) assertFloatEqual(t, 100, rootChild0.LayoutGetWidth()) assertFloatEqual(t, 200, rootChild0.LayoutGetHeight()) assertFloatEqual(t, 0, rootChild0Child0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0Child0.LayoutGetTop()) assertFloatEqual(t, 100, rootChild0Child0.LayoutGetWidth()) assertFloatEqual(t, 200, rootChild0Child0.LayoutGetHeight()) CalculateLayout(root, Undefined, Undefined, DirectionRTL) assertFloatEqual(t, 0, root.LayoutGetLeft()) assertFloatEqual(t, 0, root.LayoutGetTop()) assertFloatEqual(t, 100, root.LayoutGetWidth()) assertFloatEqual(t, 100, root.LayoutGetHeight()) assertFloatEqual(t, 0, rootChild0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0.LayoutGetTop()) assertFloatEqual(t, 100, rootChild0.LayoutGetWidth()) assertFloatEqual(t, 200, rootChild0.LayoutGetHeight()) assertFloatEqual(t, 0, rootChild0Child0.LayoutGetLeft()) assertFloatEqual(t, 0, rootChild0Child0.LayoutGetTop()) assertFloatEqual(t, 100, rootChild0Child0.LayoutGetWidth()) assertFloatEqual(t, 200, rootChild0Child0.LayoutGetHeight()) }