From 3c9f620c77643d8099e24f87e1780c983560131b Mon Sep 17 00:00:00 2001 From: Dustin Shahidehpour Date: Sat, 11 Feb 2017 08:22:55 -0800 Subject: [PATCH] BREAKING CHANGE: Computed edge values are no longer returned on concrete properties, fix tests. Summary: Now that the Yoga library supports percentage values, the results returned from it's API were changed. `YGNodeStyleGetPadding` returns the explicit value that you set, whereas `YGNodeLayoutGetPadding` returns the computed value. Since we are planning to build support for percentages, I'm modifying our API so that it strictly returns the value that was set. As a result: ``` view.yoga.margin = 10; // view.yoga.margin == 10 // view.yoga.marginLeftWidth == 0 // view.yoga.marginRightWidth == 0 // etc. ``` Reviewed By: emilsjolander Differential Revision: D4543471 fbshipit-source-id: a731025cd4b47e9f1a559c766494fc5a259291ae --- YogaKit/Source/YGLayout.m | 22 ++------ YogaKit/Tests/YogaKitTests.m | 101 ++++++++++++++--------------------- 2 files changed, 43 insertions(+), 80 deletions(-) diff --git a/YogaKit/Source/YGLayout.m b/YogaKit/Source/YGLayout.m index 80d1a244..3e7516c7 100644 --- a/YogaKit/Source/YGLayout.m +++ b/YogaKit/Source/YGLayout.m @@ -43,12 +43,6 @@ return YGNodeStyleGet##property(self.node, edge); \ } -#define YG_SHORTHAND_EDGE_PROPERTY_GETTER(lowercased_name) \ -- (CGFloat)lowercased_name \ -{ \ - return YGUndefined; \ -} - #define YG_EDGE_PROPERTY_SETTER(lowercased_name, capitalized_name, property, edge) \ - (void)set##capitalized_name:(CGFloat)lowercased_name \ { \ @@ -59,10 +53,6 @@ YG_EDGE_PROPERTY_GETTER(lowercased_name, capitalized_name, property, edge) \ YG_EDGE_PROPERTY_SETTER(lowercased_name, capitalized_name, property, edge) -#define YG_SHORTHAND_EDGE_PROPERTY(lowercased_name, capitalized_name, property, edge) \ -YG_SHORTHAND_EDGE_PROPERTY_GETTER(lowercased_name) \ -YG_EDGE_PROPERTY_SETTER(lowercased_name, capitalized_name, property, edge) - #define YG_VALUE_EDGE_PROPERTY_GETTER(objc_lowercased_name, objc_capitalized_name, c_name, edge) \ - (CGFloat)objc_lowercased_name \ { \ @@ -84,10 +74,6 @@ YG_EDGE_PROPERTY_SETTER(lowercased_name, capitalized_name, property, edge) YG_VALUE_EDGE_PROPERTY_GETTER(lowercased_name, capitalized_name, property, edge) \ YG_VALUE_EDGE_PROPERTY_SETTER(lowercased_name, capitalized_name, property, edge) -#define YG_VALUE_SHORTHAND_EDGE_PROPERTY(lowercased_name, capitalized_name, property, edge) \ -YG_SHORTHAND_EDGE_PROPERTY_GETTER(lowercased_name) \ -YG_VALUE_EDGE_PROPERTY_SETTER(lowercased_name, capitalized_name, property, edge) - #define YG_VALUE_EDGES_PROPERTIES(lowercased_name, capitalized_name) \ YG_VALUE_EDGE_PROPERTY(lowercased_name##Left, capitalized_name##Left, capitalized_name, YGEdgeLeft) \ YG_VALUE_EDGE_PROPERTY(lowercased_name##Top, capitalized_name##Top, capitalized_name, YGEdgeTop) \ @@ -95,9 +81,9 @@ YG_VALUE_EDGE_PROPERTY(lowercased_name##Right, capitalized_name##Right, capitali YG_VALUE_EDGE_PROPERTY(lowercased_name##Bottom, capitalized_name##Bottom, capitalized_name, YGEdgeBottom) \ YG_VALUE_EDGE_PROPERTY(lowercased_name##Start, capitalized_name##Start, capitalized_name, YGEdgeStart) \ YG_VALUE_EDGE_PROPERTY(lowercased_name##End, capitalized_name##End, capitalized_name, YGEdgeEnd) \ -YG_VALUE_SHORTHAND_EDGE_PROPERTY(lowercased_name##Horizontal, capitalized_name##Horizontal, capitalized_name, YGEdgeHorizontal) \ -YG_VALUE_SHORTHAND_EDGE_PROPERTY(lowercased_name##Vertical, capitalized_name##Vertical, capitalized_name, YGEdgeVertical) \ -YG_VALUE_SHORTHAND_EDGE_PROPERTY(lowercased_name, capitalized_name, capitalized_name, YGEdgeAll) +YG_VALUE_EDGE_PROPERTY(lowercased_name##Horizontal, capitalized_name##Horizontal, capitalized_name, YGEdgeHorizontal) \ +YG_VALUE_EDGE_PROPERTY(lowercased_name##Vertical, capitalized_name##Vertical, capitalized_name, YGEdgeVertical) \ +YG_VALUE_EDGE_PROPERTY(lowercased_name, capitalized_name, capitalized_name, YGEdgeAll) @interface YGLayout () @@ -202,7 +188,7 @@ YG_EDGE_PROPERTY(borderRightWidth, BorderRightWidth, Border, YGEdgeRight) YG_EDGE_PROPERTY(borderBottomWidth, BorderBottomWidth, Border, YGEdgeBottom) YG_EDGE_PROPERTY(borderStartWidth, BorderStartWidth, Border, YGEdgeStart) YG_EDGE_PROPERTY(borderEndWidth, BorderEndWidth, Border, YGEdgeEnd) -YG_SHORTHAND_EDGE_PROPERTY(borderWidth, BorderWidth, Border, YGEdgeAll) +YG_EDGE_PROPERTY(borderWidth, BorderWidth, Border, YGEdgeAll) YG_VALUE_PROPERTY(width, Width) YG_VALUE_PROPERTY(height, Height) diff --git a/YogaKit/Tests/YogaKitTests.m b/YogaKit/Tests/YogaKitTests.m index 2180be07..5342f9c3 100644 --- a/YogaKit/Tests/YogaKitTests.m +++ b/YogaKit/Tests/YogaKitTests.m @@ -451,39 +451,27 @@ UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; view.yoga.margin = 1; - XCTAssertEqual(view.yoga.marginLeft, 1); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeLeft).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.marginRight, 1); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeRight).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.marginStart, 1); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeStart).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.marginEnd, 1); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeEnd).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.marginTop, 1); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeTop).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.marginBottom, 1); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeBottom).unit, YGUnitPixel); + XCTAssertEqual(view.yoga.margin, 1); + XCTAssertTrue(isnan(view.yoga.marginLeft)); + XCTAssertTrue(isnan(view.yoga.marginRight)); + XCTAssertTrue(isnan(view.yoga.marginStart)); + XCTAssertTrue(isnan(view.yoga.marginEnd)); + XCTAssertTrue(isnan(view.yoga.marginTop)); + XCTAssertTrue(isnan(view.yoga.marginBottom)); XCTAssertTrue(isnan(view.yoga.marginHorizontal)); XCTAssertTrue(isnan(view.yoga.marginVertical)); - XCTAssertTrue(isnan(view.yoga.margin)); view.yoga.marginHorizontal = 2; - XCTAssertEqual(view.yoga.marginLeft, 2); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeLeft).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.marginRight, 2); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeRight).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.marginStart, 2); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeStart).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.marginEnd, 2); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeEnd).unit, YGUnitPixel); - XCTAssertTrue(isnan(view.yoga.marginHorizontal)); + XCTAssertEqual(view.yoga.marginHorizontal, 2); + XCTAssertTrue(isnan(view.yoga.marginLeft)); + XCTAssertTrue(isnan(view.yoga.marginRight)); + XCTAssertTrue(isnan(view.yoga.marginStart)); + XCTAssertTrue(isnan(view.yoga.marginEnd)); view.yoga.marginVertical = 3; - XCTAssertEqual(view.yoga.marginTop, 3); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeTop).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.marginBottom, 3); - XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeBottom).unit, YGUnitPixel); - XCTAssertTrue(isnan(view.yoga.marginVertical)); + XCTAssertEqual(view.yoga.marginVertical, 3); + XCTAssertTrue(isnan(view.yoga.marginTop)); + XCTAssertTrue(isnan(view.yoga.marginBottom)); view.yoga.marginLeft = 4; XCTAssertEqual(YGNodeStyleGetMargin(view.yoga.node, YGEdgeLeft).value, 4); @@ -521,39 +509,27 @@ UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; view.yoga.padding = 1; - XCTAssertEqual(view.yoga.paddingLeft, 1); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeLeft).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.paddingRight, 1); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeRight).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.paddingStart, 1); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeStart).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.paddingEnd, 1); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeEnd).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.paddingTop, 1); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeTop).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.paddingBottom, 1); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeBottom).unit, YGUnitPixel); + XCTAssertEqual(view.yoga.padding, 1); + XCTAssertTrue(isnan(view.yoga.paddingLeft)); + XCTAssertTrue(isnan(view.yoga.paddingRight)); + XCTAssertTrue(isnan(view.yoga.paddingStart)); + XCTAssertTrue(isnan(view.yoga.paddingEnd)); + XCTAssertTrue(isnan(view.yoga.paddingTop)); + XCTAssertTrue(isnan(view.yoga.paddingBottom)); XCTAssertTrue(isnan(view.yoga.paddingHorizontal)); XCTAssertTrue(isnan(view.yoga.paddingVertical)); - XCTAssertTrue(isnan(view.yoga.padding)); view.yoga.paddingHorizontal = 2; - XCTAssertEqual(view.yoga.paddingLeft, 2); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeLeft).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.paddingRight, 2); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeRight).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.paddingStart, 2); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeStart).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.paddingEnd, 2); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeEnd).unit, YGUnitPixel); - XCTAssertTrue(isnan(view.yoga.paddingHorizontal)); + XCTAssertEqual(view.yoga.paddingHorizontal, 2); + XCTAssertTrue(isnan(view.yoga.paddingLeft)); + XCTAssertTrue(isnan(view.yoga.paddingRight)); + XCTAssertTrue(isnan(view.yoga.paddingStart)); + XCTAssertTrue(isnan(view.yoga.paddingEnd)); view.yoga.paddingVertical = 3; - XCTAssertEqual(view.yoga.paddingTop, 3); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeTop).unit, YGUnitPixel); - XCTAssertEqual(view.yoga.paddingBottom, 3); - XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeBottom).unit, YGUnitPixel); - XCTAssertTrue(isnan(view.yoga.paddingVertical)); + XCTAssertEqual(view.yoga.paddingVertical, 3); + XCTAssertTrue(isnan(view.yoga.paddingTop)); + XCTAssertTrue(isnan(view.yoga.paddingBottom)); view.yoga.paddingLeft = 4; XCTAssertEqual(YGNodeStyleGetPadding(view.yoga.node, YGEdgeLeft).value, 4); @@ -591,13 +567,13 @@ UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; view.yoga.borderWidth = 1; - XCTAssertEqual(view.yoga.borderLeftWidth, 1); - XCTAssertEqual(view.yoga.borderRightWidth, 1); - XCTAssertEqual(view.yoga.borderStartWidth, 1); - XCTAssertEqual(view.yoga.borderEndWidth, 1); - XCTAssertEqual(view.yoga.borderTopWidth, 1); - XCTAssertEqual(view.yoga.borderBottomWidth, 1); - XCTAssertTrue(isnan(view.yoga.borderWidth)); + XCTAssertEqual(view.yoga.borderWidth, 1); + XCTAssertTrue(isnan(view.yoga.borderLeftWidth)); + XCTAssertTrue(isnan(view.yoga.borderRightWidth)); + XCTAssertTrue(isnan(view.yoga.borderStartWidth)); + XCTAssertTrue(isnan(view.yoga.borderEndWidth)); + XCTAssertTrue(isnan(view.yoga.borderTopWidth)); + XCTAssertTrue(isnan(view.yoga.borderBottomWidth)); view.yoga.borderLeftWidth = 2; XCTAssertEqual(view.yoga.borderLeftWidth, 2); @@ -618,7 +594,8 @@ XCTAssertEqual(view.yoga.borderEndWidth, 7); } -- (void)testOriginIsPreservedOnRootOfLayout { +- (void)testOriginIsPreservedOnRootOfLayout +{ const CGSize containerSize = CGSizeMake(200, 50); UIView *container = [[UIView alloc] initWithFrame:CGRectMake(10, 10, containerSize.width, containerSize.height)];