From 938cd468b3ae4b8872a8a8d45d117a656a4a4345 Mon Sep 17 00:00:00 2001 From: Huy Nguyen Date: Mon, 19 Oct 2015 18:45:40 +0300 Subject: [PATCH] Add snapshot tests for ASStaticLayoutSpec. --- AsyncDisplayKit.xcodeproj/project.pbxproj | 4 + .../ASStaticLayoutSpecSnapshotTests.m | 85 ++++++++++++++++++ ...testChildrenMeasuredWithAutoMaxSize@2x.png | Bin 0 -> 2555 bytes ...estSizingBehaviour_overflowChildren@2x.png | Bin 0 -> 834 bytes ...stSizingBehaviour_underflowChildren@2x.png | Bin 0 -> 4194 bytes ...testSizingBehaviour_wrappedChildren@2x.png | Bin 0 -> 2275 bytes 6 files changed, 89 insertions(+) create mode 100644 AsyncDisplayKitTests/ASStaticLayoutSpecSnapshotTests.m create mode 100644 AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testChildrenMeasuredWithAutoMaxSize@2x.png create mode 100644 AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testSizingBehaviour_overflowChildren@2x.png create mode 100644 AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testSizingBehaviour_underflowChildren@2x.png create mode 100644 AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testSizingBehaviour_wrappedChildren@2x.png diff --git a/AsyncDisplayKit.xcodeproj/project.pbxproj b/AsyncDisplayKit.xcodeproj/project.pbxproj index f096375ce4..ff78556ce4 100644 --- a/AsyncDisplayKit.xcodeproj/project.pbxproj +++ b/AsyncDisplayKit.xcodeproj/project.pbxproj @@ -233,6 +233,7 @@ 9CDC18CC1B910E12004965E2 /* ASLayoutablePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CDC18CB1B910E12004965E2 /* ASLayoutablePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9CDC18CD1B910E12004965E2 /* ASLayoutablePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CDC18CB1B910E12004965E2 /* ASLayoutablePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9F06E5CD1B4CAF4200F015D8 /* ASCollectionViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F06E5CC1B4CAF4200F015D8 /* ASCollectionViewTests.m */; }; + AC026B581BD3F61800BBC17E /* ASStaticLayoutSpecSnapshotTests.m in Sources */ = {isa = PBXBuildFile; fileRef = AC026B571BD3F61800BBC17E /* ASStaticLayoutSpecSnapshotTests.m */; }; AC21EC101B3D0BF600C8B19A /* ASStackLayoutDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = AC21EC0F1B3D0BF600C8B19A /* ASStackLayoutDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; AC3C4A511A1139C100143C57 /* ASCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = AC3C4A4F1A1139C100143C57 /* ASCollectionView.h */; settings = {ATTRIBUTES = (Public, ); }; }; AC3C4A521A1139C100143C57 /* ASCollectionView.mm in Sources */ = {isa = PBXBuildFile; fileRef = AC3C4A501A1139C100143C57 /* ASCollectionView.mm */; }; @@ -590,6 +591,7 @@ 9C8221941BA237B80037F19A /* ASStackBaselinePositionedLayout.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASStackBaselinePositionedLayout.mm; sourceTree = ""; }; 9CDC18CB1B910E12004965E2 /* ASLayoutablePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASLayoutablePrivate.h; path = AsyncDisplayKit/Layout/ASLayoutablePrivate.h; sourceTree = ""; }; 9F06E5CC1B4CAF4200F015D8 /* ASCollectionViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASCollectionViewTests.m; sourceTree = ""; }; + AC026B571BD3F61800BBC17E /* ASStaticLayoutSpecSnapshotTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASStaticLayoutSpecSnapshotTests.m; sourceTree = ""; }; AC21EC0F1B3D0BF600C8B19A /* ASStackLayoutDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASStackLayoutDefines.h; path = AsyncDisplayKit/Layout/ASStackLayoutDefines.h; sourceTree = ""; }; AC3C4A4F1A1139C100143C57 /* ASCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASCollectionView.h; sourceTree = ""; }; AC3C4A501A1139C100143C57 /* ASCollectionView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASCollectionView.mm; sourceTree = ""; }; @@ -819,6 +821,7 @@ ACF6ED591B178DC700DA7C62 /* ASOverlayLayoutSpecSnapshotTests.mm */, ACF6ED5A1B178DC700DA7C62 /* ASRatioLayoutSpecSnapshotTests.mm */, ACF6ED5B1B178DC700DA7C62 /* ASStackLayoutSpecSnapshotTests.mm */, + AC026B571BD3F61800BBC17E /* ASStaticLayoutSpecSnapshotTests.m */, ACF6ED571B178DC700DA7C62 /* ASLayoutSpecSnapshotTestsHelper.h */, ACF6ED581B178DC700DA7C62 /* ASLayoutSpecSnapshotTestsHelper.m */, 242995D21B29743C00090100 /* ASBasicImageDownloaderTests.m */, @@ -1552,6 +1555,7 @@ 058D0A3A195D057000B7D73C /* ASDisplayNodeTests.m in Sources */, 058D0A3B195D057000B7D73C /* ASDisplayNodeTestsHelper.m in Sources */, 056D21551ABCEF50001107EF /* ASImageNodeSnapshotTests.m in Sources */, + AC026B581BD3F61800BBC17E /* ASStaticLayoutSpecSnapshotTests.m in Sources */, ACF6ED5E1B178DC700DA7C62 /* ASInsetLayoutSpecSnapshotTests.mm in Sources */, ACF6ED601B178DC700DA7C62 /* ASLayoutSpecSnapshotTestsHelper.m in Sources */, CC7FD9E11BB5F750005CCB2B /* ASPhotosFrameworkImageRequestTests.m in Sources */, diff --git a/AsyncDisplayKitTests/ASStaticLayoutSpecSnapshotTests.m b/AsyncDisplayKitTests/ASStaticLayoutSpecSnapshotTests.m new file mode 100644 index 0000000000..36efb324a3 --- /dev/null +++ b/AsyncDisplayKitTests/ASStaticLayoutSpecSnapshotTests.m @@ -0,0 +1,85 @@ +// +// ASStaticLayoutSpecSnapshotTests.m +// AsyncDisplayKit +// +// Created by Huy Nguyen on 18/10/15. +// Copyright (c) 2015 Facebook. All rights reserved. +// + +#import "ASLayoutSpecSnapshotTestsHelper.h" + +#import "ASStaticLayoutSpec.h" +#import "ASBackgroundLayoutSpec.h" + +@interface ASStaticLayoutSpecSnapshotTests : ASLayoutSpecSnapshotTestCase +@end + +@implementation ASStaticLayoutSpecSnapshotTests + +- (void)setUp +{ + [super setUp]; + self.recordMode = NO; +} + +- (void)testSizingBehaviour +{ + [self testWithSizeRange:ASSizeRangeMake(CGSizeMake(150, 200), CGSizeMake(FLT_MAX, FLT_MAX)) + identifier:@"underflowChildren"]; + [self testWithSizeRange:ASSizeRangeMake(CGSizeZero, CGSizeMake(50, 100)) + identifier:@"overflowChildren"]; + // Expect the spec to wrap its content because children sizes are between constrained size + [self testWithSizeRange:ASSizeRangeMake(CGSizeZero, CGSizeMake(FLT_MAX / 2, FLT_MAX / 2)) + identifier:@"wrappedChildren"]; +} + +- (void)testChildrenMeasuredWithAutoMaxSize +{ + ASStaticSizeDisplayNode *firstChild = ASDisplayNodeWithBackgroundColor([UIColor redColor]); + firstChild.layoutPosition = CGPointMake(0, 0); + firstChild.staticSize = CGSizeMake(50, 50); + + ASStaticSizeDisplayNode *secondChild = ASDisplayNodeWithBackgroundColor([UIColor blueColor]); + secondChild.layoutPosition = CGPointMake(10, 60); + secondChild.staticSize = CGSizeMake(100, 100); + + ASSizeRange sizeRange = ASSizeRangeMake(CGSizeMake(10, 10), CGSizeMake(110, 160)); + [self testWithChildren:@[firstChild, secondChild] sizeRange:sizeRange identifier:nil]; + + XCTAssertTrue(ASSizeRangeEqualToSizeRange(firstChild.constrainedSizeForCalculatedLayout, + ASSizeRangeMake(CGSizeZero, sizeRange.max))); + CGSize secondChildMaxSize = CGSizeMake(sizeRange.max.width - secondChild.layoutPosition.x, + sizeRange.max.height - secondChild.layoutPosition.y); + XCTAssertTrue(ASSizeRangeEqualToSizeRange(secondChild.constrainedSizeForCalculatedLayout, + ASSizeRangeMake(CGSizeZero, secondChildMaxSize))); +} + +- (void)testWithSizeRange:(ASSizeRange)sizeRange identifier:(NSString *)identifier +{ + ASDisplayNode *firstChild = ASDisplayNodeWithBackgroundColor([UIColor redColor]); + firstChild.layoutPosition = CGPointMake(0, 0); + firstChild.sizeRange = ASRelativeSizeRangeMakeWithExactCGSize(CGSizeMake(50, 50)); + + + ASDisplayNode *secondChild = ASDisplayNodeWithBackgroundColor([UIColor blueColor]); + secondChild.layoutPosition = CGPointMake(0, 50); + secondChild.sizeRange = ASRelativeSizeRangeMakeWithExactCGSize(CGSizeMake(100, 100)); + + [self testWithChildren:@[firstChild, secondChild] sizeRange:sizeRange identifier:identifier]; +} + +- (void)testWithChildren:(NSArray *)children sizeRange:(ASSizeRange)sizeRange identifier:(NSString *)identifier +{ + ASDisplayNode *backgroundNode = ASDisplayNodeWithBackgroundColor([UIColor whiteColor]); + + NSMutableArray *subnodes = [NSMutableArray arrayWithArray:children]; + [subnodes insertObject:backgroundNode atIndex:0]; + + ASStaticLayoutSpec *staticLayoutSpec = [ASStaticLayoutSpec staticLayoutSpecWithChildren:children]; + ASLayoutSpec *layoutSpec = [ASBackgroundLayoutSpec backgroundLayoutSpecWithChild:staticLayoutSpec + background:backgroundNode]; + + [self testLayoutSpec:layoutSpec sizeRange:sizeRange subnodes:subnodes identifier:identifier]; +} + +@end diff --git a/AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testChildrenMeasuredWithAutoMaxSize@2x.png b/AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testChildrenMeasuredWithAutoMaxSize@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2b60cf2bcf5af151123b4f90bb5c9d296b0bcc2f GIT binary patch literal 2555 zcmeAS@N?(olHy`uVBq!ia0vp^cNiEL9XQy4tm~aZyg-VvILO_JVcj{Imp~3@fk$L9 z1A~|<2s3&HseAwm%4E9uhX83NAO?X2K&%0!foztxXt51BKsw0N#WAFU@y#7azXuFF zEC>Jmzsy+ofH}*xO!2MmC7sDDe;oU4cmDPLcB_iNIe8Bn-#Xv;XIEDjX3lWuy565x zJAXcHVD4+$!1$nn`?(sI#RClvX$HO>1$m1`g-62#GeI<}pAlNx_?efXypD-WLz-b- zPV}{(Yz@}-jI2|58N#>ezOG?DFn4|f(fC&W9iN2*9Bwicq~6|i4wxW+a%wEdVc4-LH}bhO!@EB$A^~O$F*moZ z!C~DW>mBR=`pW&E|NZL0cB>!xcjMl*$Gv<1{L1ei5$p$Q-?Tbx`mM|;Q?M>!2jhc7 zn_}1By`KH4u95j%E4MjAOvJY*+%IO{4HvL@5VNCz`9N#x?zr9SuRr1FYb4;qRe9^z#X zpZ2!u?Y_9l-??Q9^kTqvs>eH=f3vUY0ORvRtxs@<#hUL0+dSxd-`xY=hZOUZvM>$cT~>x?C)P^?TLrmY5S9@D($-{3*1rbuD^S2TDc!? zXZ0u6FK6CqbHE*iFCg-m?SX~N|NmYS|8z1iuu6eSm$%n8@*Za3VRn4Ke~YnWkibFl zLy`rlD;EB!vVT8+{`1QC^*kjHyxISqk-i}#Bm3hj@Zivf>#H-~^+__aTeNXoGwd+P zS+*;ARq6BwW|_mSvJ5d2->O8<-ZfNyz;L_(Y~0z9a-Xg5gbEsxcWhv8;65C;e$h_r zG=y<8U-hlL7R$s}z$0D;jH(;2Lruz$_rQ%a3%+Z3b(i-6#=eJ#_!#tfs`qw1dpAQ6 zZd}?b>t#{poN(8!55IUv))--&PwDZH*LrZ*zWJ&(Yj?66+_>2*-_6Lns|t55*z;#N p;Kq%5el+Gsll_p*^RKNwFzzWo{QrZ6KB$?;;OXk;vd$@?2>?ccAQS)q literal 0 HcmV?d00001 diff --git a/AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testSizingBehaviour_overflowChildren@2x.png b/AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testSizingBehaviour_overflowChildren@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1687dc24f6128e3a5b53bfbec8223abb04f1dac3 GIT binary patch literal 834 zcmeAS@N?(olHy`uVBq!ia0vp^DL{OJgAGW^*|;18QjEnx?oJHr&dIz4aySb-B8wRq z#8g3;(KATp15i*V)5SjoNHYO32!M>xfYLxVz$T=`f zG(OoC$-tqoX^T$8?8S1M*##V)_-q<(Mr~-Q0fzVg|6e)g0V9Ml3>46BuP$UfV8C<4 z;r;%SO$U=3nO)ODm+asDy=G}WgU1_3CZ-OTbuLCNz@YUw!vqYdrKtyZNq(JS3k=cp zNurw>1RPQ_BRAx^*{1OWLv&`!Q5^;rfygMaHM0ZzZ!&Wz6sbiTas$JB+BDYJX;+fJ k0V8LQXV|bcD)?KC6w{h(H;cR<0)v{t)78&qol`;+02Tr$*Z=?k literal 0 HcmV?d00001 diff --git a/AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testSizingBehaviour_underflowChildren@2x.png b/AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testSizingBehaviour_underflowChildren@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..22338139793cdf73ca4428415a2d8a4445d6f5c3 GIT binary patch literal 4194 zcmeAS@N?(olHy`uVBq!ia0y~yVAKKP2^?%d5s}i^Y9Pf}9OUlAuKb;uuoF_~x2ppNgS? z)5Sgimu8!=XG{xIi1Xb0$~B4Se$D>(zkgakIe5OGS?0&-M*cN?2Vebv{O~v<-=CKZ z39->L>f@%?7c?+8utr23Xp~}S;NFmR$V&r6Z)spQ!gwg`C4kiZz`8^QS$NKX?h zSa6K-0MnXT8-z{)X&v1M4!t0YO%qk8j5=U61O`tC?8~lQ`uzLjgR=Ztvuu<^Hte&0 z%CM@s-0)E2tYjv!gvb&_W>a4|L9PhJHDc%Y9{v2w&&?vB*aw)VxwTUkEIX;}#Hii! z^=tOK>hEHAIoPxMI3pTT6I*$%m{huGB(!dbviUA{{)U^sn6sfbZejmFey@*B-lVXZE|NnbWUx;B~V0Q(zOx|8I zf|#{YaV@uH23SNwN9$~t{L^FBSMmejy5y=n^A~zzju)2;=2KB8))I?4z1T18j&Sk_v{+C9kX({uXcr)~pPk Lu6{1-oD!M<{9X%e literal 0 HcmV?d00001 diff --git a/AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testSizingBehaviour_wrappedChildren@2x.png b/AsyncDisplayKitTests/ReferenceImages_64/ASStaticLayoutSpecSnapshotTests/testSizingBehaviour_wrappedChildren@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3d76853c01eb6ddcceedec3977ad267556d744c0 GIT binary patch literal 2275 zcmeAS@N?(olHy`uVBq!ia0vp^Cm0wQbvW37thQf&_5mrz;vjb?hIQv;UIICs1s;*b z3=CqbAk63)r1AkMD3j^p9|EMAfEWa(0kH;@2C`W=_RRXWi-Cdpil>WXNCo4YtA05pc*+Fk3K3BmM2H%JYB4d13tHNB8Z&kv*50se|_j z+Z5raYhsPx@BF`r5yszf4&UOfW*&%ouztZp5uv*Gwey=9*{3lxeRM2PkYP}NuqOWK-?>KxI~*(o z_!@)@bdJtl8j-In(1;|PIx0IF8l!0goKr^g0-=&2!RiC^uB5w+SDL#%1KS=9p00i_ I>zopr0G7EZ1poj5 literal 0 HcmV?d00001