diff --git a/AsyncDisplayKit.xcodeproj/project.pbxproj b/AsyncDisplayKit.xcodeproj/project.pbxproj index 03faea2050..ba29d4d32d 100644 --- a/AsyncDisplayKit.xcodeproj/project.pbxproj +++ b/AsyncDisplayKit.xcodeproj/project.pbxproj @@ -330,7 +330,6 @@ ACF6ED5C1B178DC700DA7C62 /* ASCenterLayoutNodeSnapshotTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = ACF6ED531B178DC700DA7C62 /* ASCenterLayoutNodeSnapshotTests.mm */; }; ACF6ED5D1B178DC700DA7C62 /* ASDimensionTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = ACF6ED541B178DC700DA7C62 /* ASDimensionTests.mm */; }; ACF6ED5E1B178DC700DA7C62 /* ASInsetLayoutNodeSnapshotTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = ACF6ED551B178DC700DA7C62 /* ASInsetLayoutNodeSnapshotTests.mm */; }; - ACF6ED5F1B178DC700DA7C62 /* ASLayoutNodeSizeTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = ACF6ED561B178DC700DA7C62 /* ASLayoutNodeSizeTests.mm */; }; ACF6ED601B178DC700DA7C62 /* ASLayoutNodeSnapshotTestsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = ACF6ED581B178DC700DA7C62 /* ASLayoutNodeSnapshotTestsHelper.m */; }; ACF6ED611B178DC700DA7C62 /* ASOverlayLayoutNodeSnapshotTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = ACF6ED591B178DC700DA7C62 /* ASOverlayLayoutNodeSnapshotTests.mm */; }; ACF6ED621B178DC700DA7C62 /* ASRatioLayoutNodeSnapshotTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = ACF6ED5A1B178DC700DA7C62 /* ASRatioLayoutNodeSnapshotTests.mm */; }; @@ -558,7 +557,6 @@ ACF6ED531B178DC700DA7C62 /* ASCenterLayoutNodeSnapshotTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASCenterLayoutNodeSnapshotTests.mm; sourceTree = ""; }; ACF6ED541B178DC700DA7C62 /* ASDimensionTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASDimensionTests.mm; sourceTree = ""; }; ACF6ED551B178DC700DA7C62 /* ASInsetLayoutNodeSnapshotTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASInsetLayoutNodeSnapshotTests.mm; sourceTree = ""; }; - ACF6ED561B178DC700DA7C62 /* ASLayoutNodeSizeTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASLayoutNodeSizeTests.mm; sourceTree = ""; }; ACF6ED571B178DC700DA7C62 /* ASLayoutNodeSnapshotTestsHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASLayoutNodeSnapshotTestsHelper.h; sourceTree = ""; }; ACF6ED581B178DC700DA7C62 /* ASLayoutNodeSnapshotTestsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ASLayoutNodeSnapshotTestsHelper.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; ACF6ED591B178DC700DA7C62 /* ASOverlayLayoutNodeSnapshotTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASOverlayLayoutNodeSnapshotTests.mm; sourceTree = ""; }; @@ -746,7 +744,6 @@ 058D0A2F195D057000B7D73C /* ASDisplayNodeTests.m */, 058D0A30195D057000B7D73C /* ASDisplayNodeTestsHelper.h */, 058D0A31195D057000B7D73C /* ASDisplayNodeTestsHelper.m */, - ACF6ED561B178DC700DA7C62 /* ASLayoutNodeSizeTests.mm */, 052EE0651A159FEF002C6279 /* ASMultiplexImageNodeTests.m */, 058D0A32195D057000B7D73C /* ASMutableAttributedStringBuilderTests.m */, 3C9C128419E616EF00E942A0 /* ASTableViewTests.m */, @@ -1420,7 +1417,6 @@ 058D0A3F195D057000B7D73C /* ASTextNodeShadowerTests.m in Sources */, ACF6ED631B178DC700DA7C62 /* ASStackLayoutNodeSnapshotTests.mm in Sources */, 29CDC2E21AAE70D000833CA4 /* ASBasicImageDownloaderContextTests.m in Sources */, - ACF6ED5F1B178DC700DA7C62 /* ASLayoutNodeSizeTests.mm in Sources */, 056D21551ABCEF50001107EF /* ASImageNodeSnapshotTests.m in Sources */, 05EA6FE71AC0966E00E35788 /* ASSnapshotTestCase.mm in Sources */, ACF6ED5E1B178DC700DA7C62 /* ASInsetLayoutNodeSnapshotTests.mm in Sources */, diff --git a/AsyncDisplayKitTests/ASCenterLayoutNodeSnapshotTests.mm b/AsyncDisplayKitTests/ASCenterLayoutNodeSnapshotTests.mm index fda14e8a35..e935ffb1e1 100644 --- a/AsyncDisplayKitTests/ASCenterLayoutNodeSnapshotTests.mm +++ b/AsyncDisplayKitTests/ASCenterLayoutNodeSnapshotTests.mm @@ -47,7 +47,9 @@ static const ASSizeRange kSize = {{100, 120}, {320, 160}}; sizingOptions:(ASCenterLayoutNodeSizingOptions)sizingOptions { ASDisplayNode *backgroundNode = ASDisplayNodeWithBackgroundColor([UIColor redColor]); - ASDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor greenColor]); + ASStaticSizeDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor greenColor]); + foregroundNode.staticSize = {70, 100}; + ASLayoutNode *layoutNode = [ASBackgroundLayoutNode @@ -55,8 +57,7 @@ static const ASSizeRange kSize = {{100, 120}, {320, 160}}; [ASCenterLayoutNode newWithCenteringOptions:options sizingOptions:sizingOptions - child:[ASCompositeNode newWithSize:ASLayoutNodeSizeMake(70.0, 100.0) displayNode:foregroundNode] - size:{}] + child:[ASCompositeNode newWithDisplayNode:foregroundNode]] background:[ASCompositeNode newWithDisplayNode:backgroundNode]]; [self testLayoutNode:layoutNode @@ -92,7 +93,8 @@ static NSString *suffixForCenteringOptions(ASCenterLayoutNodeCenteringOptions ce - (void)testMinimumSizeRangeIsGivenToChildWhenNotCentering { ASDisplayNode *backgroundNode = ASDisplayNodeWithBackgroundColor([UIColor redColor]); - ASDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor redColor]); + ASStaticSizeDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor redColor]); + foregroundNode.staticSize = {10, 10}; ASCenterLayoutNode *layoutNode = [ASCenterLayoutNode @@ -102,14 +104,12 @@ static NSString *suffixForCenteringOptions(ASCenterLayoutNodeCenteringOptions ce [ASBackgroundLayoutNode newWithNode: [ASStackLayoutNode - newWithSize:{} - style:{} + newWithStyle:{} children:@[[ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(10, 10) displayNode:foregroundNode]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:foregroundNode]; mutableChild.flexGrow = YES; }]]] - background: [ASCompositeNode newWithDisplayNode:backgroundNode]] - size:{}]; + background: [ASCompositeNode newWithDisplayNode:backgroundNode]]]; [self testLayoutNode:layoutNode sizeRange:kSize subnodes:@[backgroundNode, foregroundNode] identifier:nil]; } diff --git a/AsyncDisplayKitTests/ASInsetLayoutNodeSnapshotTests.mm b/AsyncDisplayKitTests/ASInsetLayoutNodeSnapshotTests.mm index 930ba246e7..7f8ce221e6 100644 --- a/AsyncDisplayKitTests/ASInsetLayoutNodeSnapshotTests.mm +++ b/AsyncDisplayKitTests/ASInsetLayoutNodeSnapshotTests.mm @@ -58,14 +58,15 @@ static NSString *nameForInsets(UIEdgeInsets insets) for (NSUInteger combination = 0; combination < 16; combination++) { UIEdgeInsets insets = insetsForCombination(combination, 10); ASDisplayNode *backgroundNode = ASDisplayNodeWithBackgroundColor([UIColor grayColor]); - ASDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor greenColor]); + ASStaticSizeDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor greenColor]); + foregroundNode.staticSize = {10, 10}; ASLayoutNode *layoutNode = [ASBackgroundLayoutNode newWithNode: [ASInsetLayoutNode newWithInsets:insets - node:[ASCompositeNode newWithSize:ASLayoutNodeSizeMake(10, 10) displayNode:foregroundNode]] + node:[ASCompositeNode newWithDisplayNode:foregroundNode]] background:[ASCompositeNode newWithDisplayNode:backgroundNode]]; static ASSizeRange kVariableSize = {{0, 0}, {300, 300}}; @@ -81,14 +82,15 @@ static NSString *nameForInsets(UIEdgeInsets insets) for (NSUInteger combination = 0; combination < 16; combination++) { UIEdgeInsets insets = insetsForCombination(combination, 10); ASDisplayNode *backgroundNode = ASDisplayNodeWithBackgroundColor([UIColor grayColor]); - ASDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor greenColor]); + ASStaticSizeDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor greenColor]); + foregroundNode.staticSize = {10, 10}; ASLayoutNode *layoutNode = [ASBackgroundLayoutNode newWithNode: [ASInsetLayoutNode newWithInsets:insets - node:[ASCompositeNode newWithSize:ASLayoutNodeSizeMake(10, 10) displayNode:foregroundNode]] + node:[ASCompositeNode newWithDisplayNode:foregroundNode]] background:[ASCompositeNode newWithDisplayNode:backgroundNode]]; static ASSizeRange kFixedSize = {{300, 300}, {300, 300}}; @@ -105,14 +107,15 @@ static NSString *nameForInsets(UIEdgeInsets insets) for (NSUInteger combination = 0; combination < 16; combination++) { UIEdgeInsets insets = insetsForCombination(combination, 0); ASDisplayNode *backgroundNode = ASDisplayNodeWithBackgroundColor([UIColor grayColor]); - ASDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor greenColor]); + ASStaticSizeDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor greenColor]); + foregroundNode.staticSize = {10, 10}; ASLayoutNode *layoutNode = [ASBackgroundLayoutNode newWithNode: [ASInsetLayoutNode newWithInsets:insets - node:[ASCompositeNode newWithSize:ASLayoutNodeSizeMake(10, 10) displayNode:foregroundNode]] + node:[ASCompositeNode newWithDisplayNode:foregroundNode]] background:[ASCompositeNode newWithDisplayNode:backgroundNode]]; static ASSizeRange kFixedSize = {{300, 300}, {300, 300}}; diff --git a/AsyncDisplayKitTests/ASLayoutNodeSizeTests.mm b/AsyncDisplayKitTests/ASLayoutNodeSizeTests.mm deleted file mode 100644 index 961e45f82e..0000000000 --- a/AsyncDisplayKitTests/ASLayoutNodeSizeTests.mm +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import - -#import "ASLayoutNode.h" - - -@interface ASLayoutNodeSizeTests : XCTestCase -@end - -@implementation ASLayoutNodeSizeTests - -- (void)testResolvingSizeWithAutoInAllFieldsReturnsUnconstrainedRange -{ - ASLayoutNodeSize s; - ASSizeRange r = ASLayoutNodeSizeResolve(s, {500, 300}); - XCTAssertEqual(r.min.width, 0.f, @"Expected no min width"); - XCTAssertEqual(r.max.width, INFINITY, @"Expected no max width"); - XCTAssertEqual(r.min.height, 0.f, @"Expected no min height"); - XCTAssertEqual(r.max.height, INFINITY, @"Expected no max height"); -} - -- (void)testPercentageWidthIsResolvedAgainstParentDimension -{ - ASLayoutNodeSize s = {.width = ASRelativeDimensionMakeWithPercent(1.0)}; - ASSizeRange r = ASLayoutNodeSizeResolve(s, {500, 300}); - XCTAssertEqual(r.min.width, 500.0f, @"Expected min of resolved range to match"); - XCTAssertEqual(r.max.width, 500.0f, @"Expected max of resolved range to match"); -} - -- (void)testMaxSizeClampsLayoutNodeSize -{ - ASLayoutNodeSize s = {.width = ASRelativeDimensionMakeWithPercent(1.0), .maxWidth = ASRelativeDimensionMakeWithPoints(300)}; - ASSizeRange r = ASLayoutNodeSizeResolve(s, {500, 300}); - XCTAssertEqual(r.min.width, 300.0f, @"Expected max-size to clamp the width to exactly 300 pts"); - XCTAssertEqual(r.max.width, 300.0f, @"Expected max-size to clamp the width to exactly 300 pts"); -} - -- (void)testMinSizeOverridesMaxSizeWhenTheyConflict -{ - // Min-size overriding max-size matches CSS. - ASLayoutNodeSize s = {.minWidth = ASRelativeDimensionMakeWithPercent(0.5), .maxWidth = ASRelativeDimensionMakeWithPoints(300)}; - ASSizeRange r = ASLayoutNodeSizeResolve(s, {800, 300}); - XCTAssertEqual(r.min.width, 400.0f, @"Expected min-size to override max-size"); - XCTAssertEqual(r.max.width, 400.0f, @"Expected min-size to override max-size"); -} - -- (void)testMinSizeAloneResultsInRangeUnconstrainedToInfinity -{ - ASLayoutNodeSize s = {.minWidth = ASRelativeDimensionMakeWithPoints(100)}; - ASSizeRange r = ASLayoutNodeSizeResolve(s, {800, 300}); - XCTAssertEqual(r.min.width, 100.0f, @"Expected min width to be passed through"); - XCTAssertEqual(r.max.width, INFINITY, @"Expected max width to be infinity since no maxWidth was specified"); -} - -- (void)testMaxSizeAloneResultsInRangeUnconstrainedFromZero -{ - ASLayoutNodeSize s = {.maxWidth = ASRelativeDimensionMakeWithPoints(100)}; - ASSizeRange r = ASLayoutNodeSizeResolve(s, {800, 300}); - XCTAssertEqual(r.min.width, 0.0f, @"Expected min width to be zero"); - XCTAssertEqual(r.max.width, 100.0f, @"Expected max width to be passed through"); -} - -- (void)testMinSizeAndMaxSizeResolveToARangeWhenTheyAreNotInConflict -{ - ASLayoutNodeSize s = {.minWidth = ASRelativeDimensionMakeWithPoints(100), .maxWidth = ASRelativeDimensionMakeWithPoints(300)}; - ASSizeRange r = ASLayoutNodeSizeResolve(s, {800, 300}); - XCTAssertEqual(r.min.width, 100.0f, @"Expected min-size to be passed to size range"); - XCTAssertEqual(r.max.width, 300.0f, @"Expected max-size to be passed to size range"); -} - -- (void)testWhenWidthFallsBetweenMinAndMaxWidthsItReturnsARangeWithExactlyThatWidth -{ - ASLayoutNodeSize s = {.minWidth = ASRelativeDimensionMakeWithPoints(100), .width = ASRelativeDimensionMakeWithPoints(200), .maxWidth = ASRelativeDimensionMakeWithPoints(300)}; - ASSizeRange r = ASLayoutNodeSizeResolve(s, {800, 300}); - XCTAssertEqual(r.min.width, 200.0f, @"Expected min-size to be width"); - XCTAssertEqual(r.max.width, 200.0f, @"Expected max-size to be width"); -} - -@end diff --git a/AsyncDisplayKitTests/ASLayoutNodeSnapshotTestsHelper.h b/AsyncDisplayKitTests/ASLayoutNodeSnapshotTestsHelper.h index 5be757a214..68bc32ea7e 100644 --- a/AsyncDisplayKitTests/ASLayoutNodeSnapshotTestsHelper.h +++ b/AsyncDisplayKitTests/ASLayoutNodeSnapshotTestsHelper.h @@ -27,10 +27,17 @@ identifier:(NSString *)identifier; @end -static inline ASDisplayNode *ASDisplayNodeWithBackgroundColor(UIColor *backgroundColor) +@interface ASStaticSizeDisplayNode : ASDisplayNode + +@property (nonatomic) CGSize staticSize; + +@end + +static inline ASStaticSizeDisplayNode *ASDisplayNodeWithBackgroundColor(UIColor *backgroundColor) { - ASDisplayNode *node = [[ASDisplayNode alloc] init]; + ASStaticSizeDisplayNode *node = [[ASStaticSizeDisplayNode alloc] init]; node.layerBacked = YES; node.backgroundColor = backgroundColor; + node.staticSize = CGSizeZero; return node; } diff --git a/AsyncDisplayKitTests/ASLayoutNodeSnapshotTestsHelper.m b/AsyncDisplayKitTests/ASLayoutNodeSnapshotTestsHelper.m index 6e5db0ade0..b0200175ba 100644 --- a/AsyncDisplayKitTests/ASLayoutNodeSnapshotTestsHelper.m +++ b/AsyncDisplayKitTests/ASLayoutNodeSnapshotTestsHelper.m @@ -50,7 +50,7 @@ - (void)setLayoutNodeUnderTest:(ASLayoutNode *)layoutNodeUnderTest sizeRange:(ASSizeRange)sizeRange { - _layoutUnderTest = [layoutNodeUnderTest calculateLayoutThatFits:sizeRange]; + _layoutUnderTest = [layoutNodeUnderTest computeLayoutThatFits:sizeRange]; self.frame = CGRectMake(0, 0, _layoutUnderTest.size.width, _layoutUnderTest.size.height); [self measure:_layoutUnderTest.size]; } @@ -61,3 +61,14 @@ } @end + +@implementation ASStaticSizeDisplayNode + +- (ASLayout *)calculateLayoutThatFits:(CGSize)constrainedSize +{ + return CGSizeEqualToSize(_staticSize, CGSizeZero) + ? [super calculateLayoutThatFits:constrainedSize] + : [ASLayout newWithNode:[ASLayoutNode new] size:_staticSize]; +} + +@end diff --git a/AsyncDisplayKitTests/ASOverlayLayoutNodeSnapshotTests.mm b/AsyncDisplayKitTests/ASOverlayLayoutNodeSnapshotTests.mm index deb03a25bb..c1168197d8 100644 --- a/AsyncDisplayKitTests/ASOverlayLayoutNodeSnapshotTests.mm +++ b/AsyncDisplayKitTests/ASOverlayLayoutNodeSnapshotTests.mm @@ -29,7 +29,8 @@ static const ASSizeRange kSize = {{320, 320}, {320, 320}}; - (void)testOverlay { ASDisplayNode *backgroundNode = ASDisplayNodeWithBackgroundColor([UIColor blueColor]); - ASDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor blackColor]); + ASStaticSizeDisplayNode *foregroundNode = ASDisplayNodeWithBackgroundColor([UIColor blackColor]); + foregroundNode.staticSize = {20, 20}; ASLayoutNode *layoutNode = [ASOverlayLayoutNode @@ -38,8 +39,7 @@ static const ASSizeRange kSize = {{320, 320}, {320, 320}}; [ASCenterLayoutNode newWithCenteringOptions:ASCenterLayoutNodeCenteringXY sizingOptions:{} - child:[ASCompositeNode newWithSize:ASLayoutNodeSizeMake(20, 20) displayNode:foregroundNode] - size:{}]]; + child:[ASCompositeNode newWithDisplayNode:foregroundNode]]]; [self testLayoutNode:layoutNode sizeRange:kSize subnodes:@[backgroundNode, foregroundNode] identifier: nil]; } diff --git a/AsyncDisplayKitTests/ASRatioLayoutNodeSnapshotTests.mm b/AsyncDisplayKitTests/ASRatioLayoutNodeSnapshotTests.mm index 53fae62c1c..3837af3197 100644 --- a/AsyncDisplayKitTests/ASRatioLayoutNodeSnapshotTests.mm +++ b/AsyncDisplayKitTests/ASRatioLayoutNodeSnapshotTests.mm @@ -27,12 +27,12 @@ static const ASSizeRange kFixedSize = {{0, 0}, {100, 100}}; - (void)testRatioLayoutNodeWithRatio:(CGFloat)ratio childNodeSize:(CGSize)childNodeSize identifier:(NSString *)identifier { - ASDisplayNode *subnode = ASDisplayNodeWithBackgroundColor([UIColor greenColor]); + ASStaticSizeDisplayNode *subnode = ASDisplayNodeWithBackgroundColor([UIColor greenColor]); + subnode.staticSize = childNodeSize; ASLayoutNode *layoutNode = [ASRatioLayoutNode newWithRatio:ratio - size:{} - node:[ASCompositeNode newWithSize:ASLayoutNodeSizeMakeWithCGSize(childNodeSize) displayNode:subnode]]; + node:[ASCompositeNode newWithDisplayNode:subnode]]; [self testLayoutNode:layoutNode sizeRange:kFixedSize subnodes:@[subnode] identifier:identifier]; } diff --git a/AsyncDisplayKitTests/ASStackLayoutNodeSnapshotTests.mm b/AsyncDisplayKitTests/ASStackLayoutNodeSnapshotTests.mm index aef0b415ba..7039e905e9 100644 --- a/AsyncDisplayKitTests/ASStackLayoutNodeSnapshotTests.mm +++ b/AsyncDisplayKitTests/ASStackLayoutNodeSnapshotTests.mm @@ -37,11 +37,20 @@ static ASStackLayoutNodeChild *flexChild(ASLayoutNode *n, BOOL flex) static NSArray *defaultSubnodes() { - return @[ - ASDisplayNodeWithBackgroundColor([UIColor redColor]), - ASDisplayNodeWithBackgroundColor([UIColor blueColor]), - ASDisplayNodeWithBackgroundColor([UIColor greenColor]) - ]; + return defaultSubnodesWithSameSize(CGSizeZero); +} + +static NSArray *defaultSubnodesWithSameSize(CGSize subnodeSize) +{ + NSArray *subnodes = @[ + ASDisplayNodeWithBackgroundColor([UIColor redColor]), + ASDisplayNodeWithBackgroundColor([UIColor blueColor]), + ASDisplayNodeWithBackgroundColor([UIColor greenColor]) + ]; + for (ASStaticSizeDisplayNode *subnode in subnodes) { + subnode.staticSize = subnodeSize; + } + return subnodes; } - (void)testStackLayoutNodeWithJustify:(ASStackLayoutJustifyContent)justify @@ -53,12 +62,11 @@ static NSArray *defaultSubnodes() .direction = ASStackLayoutDirectionHorizontal, .justifyContent = justify }; - ASLayoutNodeSize subnodeSize = ASLayoutNodeSizeMake(50, 50); - NSArray *subnodes = defaultSubnodes(); + NSArray *subnodes = defaultSubnodesWithSameSize({50, 50}); NSArray *children = @[ - flexChild([ASCompositeNode newWithSize:subnodeSize displayNode:subnodes[0]], flex), - flexChild([ASCompositeNode newWithSize:subnodeSize displayNode:subnodes[1]], flex), - flexChild([ASCompositeNode newWithSize:subnodeSize displayNode:subnodes[2]], flex) + flexChild([ASCompositeNode newWithDisplayNode:subnodes[0]], flex), + flexChild([ASCompositeNode newWithDisplayNode:subnodes[1]], flex), + flexChild([ASCompositeNode newWithDisplayNode:subnodes[2]], flex) ]; [self testStackLayoutNodeWithStyle:style children:children sizeRange:sizeRange subnodes:subnodes identifier:identifier]; @@ -74,7 +82,7 @@ static NSArray *defaultSubnodes() ASLayoutNode *layoutNode = [ASBackgroundLayoutNode - newWithNode:[ASStackLayoutNode newWithSize:{} style:style children:children] + newWithNode:[ASStackLayoutNode newWithStyle:style children:children] background:[ASCompositeNode newWithDisplayNode:backgroundNode]]; NSMutableArray *newSubnodes = [NSMutableArray arrayWithObject:backgroundNode]; @@ -106,20 +114,19 @@ static NSArray *defaultSubnodes() - (void)testOverflowBehaviorsWhenAllFlexShrinkNodesHaveBeenClampedToZeroButViolationStillExists { ASStackLayoutNodeStyle style = {.direction = ASStackLayoutDirectionHorizontal}; - ASLayoutNodeSize subnodeSize = ASLayoutNodeSizeMake(50, 50); - NSArray *subnodes = defaultSubnodes(); + NSArray *subnodes = defaultSubnodesWithSameSize({50, 50}); NSArray *children = @[ // After flexShrink-able children are all clamped to zero, the sum of their widths is 100px. [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:subnodeSize displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.flexShrink = NO; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:subnodeSize displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.flexShrink = YES; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:subnodeSize displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.flexShrink = NO; }] ]; @@ -131,11 +138,16 @@ static NSArray *defaultSubnodes() - (void)testFlexWithUnequalIntrinsicSizes { ASStackLayoutNodeStyle style = {.direction = ASStackLayoutDirectionHorizontal}; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {150, 150}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {50, 50}; + NSArray *children = @[ - flexChild([ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]], YES), - flexChild([ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 150) displayNode:subnodes[1]], YES), - flexChild([ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[2]], YES) + flexChild([ASCompositeNode newWithDisplayNode:subnodes[0]], YES), + flexChild([ASCompositeNode newWithDisplayNode:subnodes[1]], YES), + flexChild([ASCompositeNode newWithDisplayNode:subnodes[2]], YES) ]; // width 300px; height 0-150px. @@ -150,16 +162,21 @@ static NSArray *defaultSubnodes() - (void)testCrossAxisSizeBehaviors { ASStackLayoutNodeStyle style = {.direction = ASStackLayoutDirectionVertical}; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {100, 50}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {150, 50}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 50) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 50) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; }] ]; @@ -178,16 +195,21 @@ static NSArray *defaultSubnodes() .direction = ASStackLayoutDirectionVertical, .spacing = 10 }; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {100, 50}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {150, 50}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 50) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 50) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; }] ]; // width 0-300px; height 300px @@ -208,8 +230,7 @@ static NSArray *defaultSubnodes() [ASBackgroundLayoutNode newWithNode: [ASStackLayoutNode - newWithSize:{} - style:{ + newWithStyle:{ .direction = ASStackLayoutDirectionVertical, .spacing = 10, .alignItems = ASStackLayoutAlignItemsStretch @@ -229,19 +250,23 @@ static NSArray *defaultSubnodes() { // width 0-INF; height 0-INF static ASSizeRange kAnySize = {{0, 0}, {INFINITY, INFINITY}}; - NSArray *subnodes = defaultSubnodes(); ASStackLayoutNodeStyle style = {.direction = ASStackLayoutDirectionVertical}; + + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {100, 70}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {150, 90}; NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 70) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.spacingBefore = 10; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 90) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.spacingBefore = 20; }] ]; @@ -249,14 +274,14 @@ static NSArray *defaultSubnodes() children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 70) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.spacingAfter = 10; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 90) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.spacingAfter = 20; }] ]; @@ -265,15 +290,15 @@ static NSArray *defaultSubnodes() style.spacing = 10; children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 70) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.spacingBefore = -10; mutableChild.spacingAfter = -10; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 90) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; }] ]; [self testStackLayoutNodeWithStyle:style children:children sizeRange:kAnySize subnodes:subnodes identifier:@"spacingBalancedOut"]; @@ -285,18 +310,23 @@ static NSArray *defaultSubnodes() .direction = ASStackLayoutDirectionVertical, .justifyContent = ASStackLayoutJustifyContentCenter }; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {100, 70}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {150, 90}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.spacingBefore = 0; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 70) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.spacingBefore = 20; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 90) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.spacingBefore = 30; }] ]; @@ -309,22 +339,24 @@ static NSArray *defaultSubnodes() - (void)testNodeThatChangesCrossSizeWhenMainSizeIsFlexed { ASStackLayoutNodeStyle style = {.direction = ASStackLayoutDirectionHorizontal}; + NSArray *subnodes = @[ ASDisplayNodeWithBackgroundColor([UIColor blueColor]), ASDisplayNodeWithBackgroundColor([UIColor redColor]) ]; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {50, 50}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { mutableChild.node = [ASRatioLayoutNode newWithRatio:1.5 - size:{} - node:[ASCompositeNode newWithSize:ASLayoutNodeSizeMake(00, 150) displayNode:subnodes[0]]];; + node:[ASCompositeNode newWithDisplayNode:subnodes[0]]]; mutableChild.flexBasis = ASRelativeDimensionMakeWithPercent(1); mutableChild.flexGrow = YES; mutableChild.flexShrink = YES; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; }] ]; static ASSizeRange kFixedWidth = {{150, 0}, {150, INFINITY}}; @@ -337,17 +369,21 @@ static NSArray *defaultSubnodes() .direction = ASStackLayoutDirectionVertical, .alignItems = ASStackLayoutAlignItemsCenter }; + NSArray *subnodes = @[ ASDisplayNodeWithBackgroundColor([UIColor redColor]), ASDisplayNodeWithBackgroundColor([UIColor blueColor]) ]; + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {100, 100}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {50, 50}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 100) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.flexShrink = YES; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.flexShrink = YES; }], ]; @@ -358,16 +394,20 @@ static NSArray *defaultSubnodes() - (void)testAlignCenterWithIndefiniteCrossDimension { ASStackLayoutNodeStyle style = {.direction = ASStackLayoutDirectionHorizontal}; + NSArray *subnodes = @[ ASDisplayNodeWithBackgroundColor([UIColor redColor]), ASDisplayNodeWithBackgroundColor([UIColor blueColor]) ]; + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {100, 100}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {50, 50}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 100) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.alignSelf = ASStackLayoutAlignSelfCenter; }], ]; @@ -382,18 +422,23 @@ static NSArray *defaultSubnodes() .justifyContent = ASStackLayoutJustifyContentCenter, .alignItems = ASStackLayoutAlignItemsStart }; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {100, 70}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {150, 90}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.spacingBefore = 0; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 70) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.spacingBefore = 20; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 90) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.spacingBefore = 30; }] ]; @@ -408,18 +453,23 @@ static NSArray *defaultSubnodes() .justifyContent = ASStackLayoutJustifyContentCenter, .alignItems = ASStackLayoutAlignItemsEnd }; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {100, 70}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {150, 90}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.spacingBefore = 0; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 70) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.spacingBefore = 20; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 90) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.spacingBefore = 30; }] ]; @@ -434,18 +484,23 @@ static NSArray *defaultSubnodes() .justifyContent = ASStackLayoutJustifyContentCenter, .alignItems = ASStackLayoutAlignItemsCenter }; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {100, 70}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {150, 90}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.spacingBefore = 0; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 70) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.spacingBefore = 20; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 90) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.spacingBefore = 30; }] ]; @@ -460,18 +515,23 @@ static NSArray *defaultSubnodes() .justifyContent = ASStackLayoutJustifyContentCenter, .alignItems = ASStackLayoutAlignItemsStretch }; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {100, 70}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {150, 90}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.spacingBefore = 0; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 70) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.spacingBefore = 20; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 90) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.spacingBefore = 30; }] ]; @@ -487,18 +547,23 @@ static NSArray *defaultSubnodes() .justifyContent = ASStackLayoutJustifyContentCenter, .alignItems = ASStackLayoutAlignItemsStretch }; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {100, 70}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {150, 90}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.spacingBefore = 0; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 70) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.spacingBefore = 20; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 90) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.spacingBefore = 30; }] ]; @@ -516,20 +581,25 @@ static NSArray *defaultSubnodes() - (void)testFixedFlexBasisAppliedWhenFlexingItems { ASStackLayoutNodeStyle style = {.direction = ASStackLayoutDirectionHorizontal}; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {150, 150}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {50, 50}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.flexGrow = YES; mutableChild.flexBasis = ASRelativeDimensionMakeWithPoints(10); }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 150) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.flexGrow = YES; mutableChild.flexBasis = ASRelativeDimensionMakeWithPoints(10); }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.flexGrow = YES; mutableChild.flexBasis = ASRelativeDimensionMakeWithPoints(10); }] @@ -546,21 +616,21 @@ static NSArray *defaultSubnodes() - (void)testPercentageFlexBasisResolvesAgainstParentSize { ASStackLayoutNodeStyle style = {.direction = ASStackLayoutDirectionHorizontal}; - NSArray *subnodes = defaultSubnodes(); + NSArray *subnodes = defaultSubnodesWithSameSize({50, 50}); NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.flexGrow = YES; // This should override the intrinsic size of 50pts and instead compute to 50% = 100pts. // The result should be that the red box is twice as wide as the blue and gree boxes after flexing. mutableChild.flexBasis = ASRelativeDimensionMakeWithPercent(0.5); }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.flexGrow = YES; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.flexGrow = YES; }] ]; @@ -571,18 +641,23 @@ static NSArray *defaultSubnodes() - (void)testFixedFlexBasisOverridesIntrinsicSizeForNonFlexingChildren { ASStackLayoutNodeStyle style = {.direction = ASStackLayoutDirectionHorizontal}; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {50, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {150, 150}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {50, 50}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.flexBasis = ASRelativeDimensionMakeWithPoints(20); }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(150, 150) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.flexBasis = ASRelativeDimensionMakeWithPoints(20); }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(50, 50) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.flexBasis = ASRelativeDimensionMakeWithPoints(20); }] ]; @@ -597,6 +672,8 @@ static NSArray *defaultSubnodes() ASDisplayNodeWithBackgroundColor([UIColor blueColor]), ASDisplayNodeWithBackgroundColor([UIColor redColor]) ]; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {10, 0}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {3000, 3000}; // If cross axis stretching occurred *before* flexing, then the blue child would be stretched to 3000 points tall. // Instead it should be stretched to 300 points tall, matching the red child and not overlapping the green inset. @@ -607,20 +684,18 @@ static NSArray *defaultSubnodes() newWithInsets:UIEdgeInsetsMake(10, 10, 10, 10) node: [ASStackLayoutNode - newWithSize:{} - style:{ + newWithStyle:{ .direction = ASStackLayoutDirectionHorizontal, .alignItems = ASStackLayoutAlignItemsStretch, } children: @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(10, 00) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; }], flexChild([ASRatioLayoutNode newWithRatio:1.0 - size:{} - node:[ASCompositeNode newWithSize:ASLayoutNodeSizeMake(3000, 3000) displayNode:subnodes[2]]], + node:[ASCompositeNode newWithDisplayNode:subnodes[2]]], YES), ]]] background:[ASCompositeNode newWithDisplayNode:subnodes[0]]]; @@ -632,18 +707,23 @@ static NSArray *defaultSubnodes() - (void)testViolationIsDistributedEquallyAmongFlexibleChildNodes { ASStackLayoutNodeStyle style = {.direction = ASStackLayoutDirectionHorizontal}; + NSArray *subnodes = defaultSubnodes(); + ((ASStaticSizeDisplayNode *)subnodes[0]).staticSize = {300, 50}; + ((ASStaticSizeDisplayNode *)subnodes[1]).staticSize = {100, 50}; + ((ASStaticSizeDisplayNode *)subnodes[2]).staticSize = {200, 50}; + NSArray *children = @[ [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(300, 50) displayNode:subnodes[0]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[0]]; mutableChild.flexShrink = YES; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(100, 50) displayNode:subnodes[1]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[1]]; mutableChild.flexShrink = NO; }], [ASStackLayoutNodeChild newWithInitializer:^(ASMutableStackLayoutNodeChild *mutableChild) { - mutableChild.node = [ASCompositeNode newWithSize:ASLayoutNodeSizeMake(200, 50) displayNode:subnodes[2]]; + mutableChild.node = [ASCompositeNode newWithDisplayNode:subnodes[2]]; mutableChild.flexShrink = YES; }] ];