added test for auto margin and fixed those layouts
This commit is contained in:
@@ -1430,3 +1430,178 @@ TEST(YogaTest, margin_should_not_be_part_of_max_width) {
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, margin_auto_left_right_child_bigger_than_parent) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetWidth(root, 52);
|
||||
YGNodeStyleSetHeight(root, 52);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetMarginAuto(root_child0, YGEdgeLeft);
|
||||
YGNodeStyleSetMarginAuto(root_child0, YGEdgeRight);
|
||||
YGNodeStyleSetWidth(root_child0, 72);
|
||||
YGNodeStyleSetHeight(root_child0, 72);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(-10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(-20, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(-10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, margin_auto_left_child_bigger_than_parent) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetWidth(root, 52);
|
||||
YGNodeStyleSetHeight(root, 52);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetMarginAuto(root_child0, YGEdgeLeft);
|
||||
YGNodeStyleSetWidth(root_child0, 72);
|
||||
YGNodeStyleSetHeight(root_child0, 72);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(-10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(-20, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(-10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, margin_fix_left_auto_right_child_bigger_than_parent) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetWidth(root, 52);
|
||||
YGNodeStyleSetHeight(root, 52);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetMargin(root_child0, YGEdgeLeft, 10);
|
||||
YGNodeStyleSetMarginAuto(root_child0, YGEdgeRight);
|
||||
YGNodeStyleSetWidth(root_child0, 72);
|
||||
YGNodeStyleSetHeight(root_child0, 72);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(10, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(-10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(-20, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(-10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, margin_auto_left_fix_right_child_bigger_than_parent) {
|
||||
const YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetJustifyContent(root, YGJustifyCenter);
|
||||
YGNodeStyleSetPositionType(root, YGPositionTypeAbsolute);
|
||||
YGNodeStyleSetWidth(root, 52);
|
||||
YGNodeStyleSetHeight(root, 52);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetMarginAuto(root_child0, YGEdgeLeft);
|
||||
YGNodeStyleSetMargin(root_child0, YGEdgeRight, 10);
|
||||
YGNodeStyleSetWidth(root_child0, 72);
|
||||
YGNodeStyleSetHeight(root_child0, 72);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(-10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionRTL);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(52, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(-30, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(-10, YGNodeLayoutGetTop(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(72, YGNodeLayoutGetHeight(root_child0));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
Reference in New Issue
Block a user