From 421a8967137772fe908d9bbfeae91338bb46a2f0 Mon Sep 17 00:00:00 2001 From: Huy Nguyen Date: Mon, 27 Feb 2017 17:14:40 +0000 Subject: [PATCH] Clean up snapshot test cases (#3091) * Clean up snapshot test cases: - Drop 32bit snapshots - Update iOS 9 snapshots and move some others to the correct directory - Remove `setUp` overrides in subclasses of `ASLayoutSpecSnapshotTestCase` that set `recordMode` flag. Doing so in multiple places make it difficult to enable/dis able the flag for all layout spec test cases. It can always be overridden locally if need to. - Fix BUCK build * Fix testThatOnDidLoadThrowsIfCalledOnLoadedOffMain of ASDisplayNodeTests --- AsyncDisplayKit.xcodeproj/project.pbxproj | 4 --- BUCK | 25 ++++++------------ Tests/ASDisplayNodeTests.mm | 5 +--- Tests/ASImageNodeSnapshotTests.m | 7 +++++ Tests/ASRelativeLayoutSpecSnapshotTests.mm | 8 ------ Tests/ASSnapshotTestCase.m | 7 +---- Tests/ASWrapperSpecSnapshotTests.mm | 7 ----- ...ngeIsGivenToChildWhenNotPositioning@2x.png | Bin 4955 -> 0 bytes .../testWithOptions@2x.png | Bin 6221 -> 0 bytes .../testWithOptions_CenterX@2x.png | Bin 6922 -> 0 bytes .../testWithOptions_CenterXCenterY@2x.png | Bin 6662 -> 0 bytes .../testWithOptions_CenterXEndY@2x.png | Bin 6474 -> 0 bytes .../testWithOptions_CenterY@2x.png | Bin 6055 -> 0 bytes .../testWithOptions_EndX@2x.png | Bin 5710 -> 0 bytes .../testWithOptions_EndXCenterY@2x.png | Bin 5811 -> 0 bytes .../testWithOptions_EndXEndY@2x.png | Bin 5534 -> 0 bytes .../testWithOptions_EndY@2x.png | Bin 5894 -> 0 bytes .../testWithSizingOptions@2x.png | Bin 6221 -> 0 bytes ...thSizingOptions_SizingMinimumHeight@2x.png | Bin 4847 -> 0 bytes ...ithSizingOptions_SizingMinimumWidth@2x.png | Bin 2099 -> 0 bytes ...zingMinimumWidthSizingMinimumHeight@2x.png | Bin 1448 -> 0 bytes .../testRenderLogoSquare@2x.png | Bin ...nContentOverflow_alignContentCenter@2x.png | Bin ...lignContentOverflow_alignContentEnd@2x.png | Bin ...entOverflow_alignContentSpaceAround@2x.png | Bin ...ntOverflow_alignContentSpaceBetween@2x.png | Bin ...gnContentOverflow_alignContentStart@2x.png | Bin ...ignContentStretchAndOtherAlignments@2x.png | Bin ...ContentUnderflow_alignContentCenter@2x.png | Bin ...ignContentUnderflow_alignContentEnd@2x.png | Bin ...ntUnderflow_alignContentSpaceAround@2x.png | Bin ...tUnderflow_alignContentSpaceBetween@2x.png | Bin ...nContentUnderflow_alignContentStart@2x.png | Bin ...ontentUnderflow_alignContentStretch@2x.png | Bin ...gnContentWithUnconstrainedCrossSize@2x.png | Bin 35 files changed, 17 insertions(+), 46 deletions(-) delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testMinimumSizeRangeIsGivenToChildWhenNotPositioning@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_CenterX@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_CenterXCenterY@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_CenterXEndY@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_CenterY@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_EndX@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_EndXCenterY@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_EndXEndY@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_EndY@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithSizingOptions@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithSizingOptions_SizingMinimumHeight@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithSizingOptions_SizingMinimumWidth@2x.png delete mode 100644 Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithSizingOptions_SizingMinimumWidthSizingMinimumHeight@2x.png rename Tests/{ReferenceImages_32 => ReferenceImages_64}/ASImageNodeSnapshotTests/testRenderLogoSquare@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentOverflow_alignContentCenter@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentOverflow_alignContentEnd@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentOverflow_alignContentSpaceAround@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentOverflow_alignContentSpaceBetween@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentOverflow_alignContentStart@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentStretchAndOtherAlignments@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentUnderflow_alignContentCenter@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentUnderflow_alignContentEnd@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentUnderflow_alignContentSpaceAround@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentUnderflow_alignContentSpaceBetween@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentUnderflow_alignContentStart@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentUnderflow_alignContentStretch@2x.png (100%) rename Tests/{ReferenceImages_iOS_10 => ReferenceImages_64}/ASStackLayoutSpecSnapshotTests/testAlignContentWithUnconstrainedCrossSize@2x.png (100%) diff --git a/AsyncDisplayKit.xcodeproj/project.pbxproj b/AsyncDisplayKit.xcodeproj/project.pbxproj index c420928da8..a682b83a8a 100644 --- a/AsyncDisplayKit.xcodeproj/project.pbxproj +++ b/AsyncDisplayKit.xcodeproj/project.pbxproj @@ -313,7 +313,6 @@ CC0F88601E4280B800576FED /* _ASCollectionViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0F885E1E4280B800576FED /* _ASCollectionViewCell.h */; settings = {ATTRIBUTES = (Private, ); }; }; CC0F88621E4281E200576FED /* ASSectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = CCE04B1E1E313EA7006AEBBB /* ASSectionController.h */; settings = {ATTRIBUTES = (Public, ); }; }; CC0F88631E4281E700576FED /* ASSupplementaryNodeSource.h in Headers */ = {isa = PBXBuildFile; fileRef = CCE04B2B1E314A32006AEBBB /* ASSupplementaryNodeSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CC0F886B1E4286FA00576FED /* ReferenceImages_32 in Resources */ = {isa = PBXBuildFile; fileRef = CC0F88681E4286FA00576FED /* ReferenceImages_32 */; }; CC0F886C1E4286FA00576FED /* ReferenceImages_64 in Resources */ = {isa = PBXBuildFile; fileRef = CC0F88691E4286FA00576FED /* ReferenceImages_64 */; }; CC0F886D1E4286FA00576FED /* ReferenceImages_iOS_10 in Resources */ = {isa = PBXBuildFile; fileRef = CC0F886A1E4286FA00576FED /* ReferenceImages_iOS_10 */; }; CC11F97A1DB181180024D77B /* ASNetworkImageNodeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CC11F9791DB181180024D77B /* ASNetworkImageNodeTests.m */; }; @@ -700,7 +699,6 @@ CC0F885A1E42807F00576FED /* ASCollectionViewFlowLayoutInspector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASCollectionViewFlowLayoutInspector.h; sourceTree = ""; }; CC0F885D1E4280B800576FED /* _ASCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _ASCollectionViewCell.m; sourceTree = ""; }; CC0F885E1E4280B800576FED /* _ASCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _ASCollectionViewCell.h; sourceTree = ""; }; - CC0F88681E4286FA00576FED /* ReferenceImages_32 */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ReferenceImages_32; sourceTree = ""; }; CC0F88691E4286FA00576FED /* ReferenceImages_64 */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ReferenceImages_64; sourceTree = ""; }; CC0F886A1E4286FA00576FED /* ReferenceImages_iOS_10 */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ReferenceImages_iOS_10; sourceTree = ""; }; CC11F9791DB181180024D77B /* ASNetworkImageNodeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASNetworkImageNodeTests.m; sourceTree = ""; }; @@ -1036,7 +1034,6 @@ 058D09C6195D04C000B7D73C /* Supporting Files */ = { isa = PBXGroup; children = ( - CC0F88681E4286FA00576FED /* ReferenceImages_32 */, CC0F88691E4286FA00576FED /* ReferenceImages_64 */, CC0F886A1E4286FA00576FED /* ReferenceImages_iOS_10 */, 058D09C7195D04C000B7D73C /* AsyncDisplayKitTests-Info.plist */, @@ -1671,7 +1668,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - CC0F886B1E4286FA00576FED /* ReferenceImages_32 in Resources */, CC0F886C1E4286FA00576FED /* ReferenceImages_64 in Resources */, CC0F886D1E4286FA00576FED /* ReferenceImages_iOS_10 in Resources */, 052EE06B1A15A0D8002C6279 /* TestResources in Resources */, diff --git a/BUCK b/BUCK index 1bd72f0244..99f99cad8e 100755 --- a/BUCK +++ b/BUCK @@ -43,7 +43,7 @@ def asyncdisplaykit_library( apple_library( name = name, prefix_header = 'Source/AsyncDisplayKit-Prefix.pch', - header_path_prefix = 'Source', + header_path_prefix = 'AsyncDisplayKit', exported_headers = ASYNCDISPLAYKIT_EXPORTED_HEADERS, headers = ASYNCDISPLAYKIT_PRIVATE_HEADERS, srcs = glob([ @@ -58,8 +58,6 @@ def asyncdisplaykit_library( 'Photos', '-weak_framework', 'MapKit', - '-weak_framework', - 'AssetsLibrary', ], deps = deps, frameworks = [ @@ -72,6 +70,9 @@ def asyncdisplaykit_library( '$SDKROOT/System/Library/Frameworks/CoreGraphics.framework', '$SDKROOT/System/Library/Frameworks/CoreLocation.framework', '$SDKROOT/System/Library/Frameworks/AVFoundation.framework', + + # TODO somehow AssetsLibrary can't be weak_framework + '$SDKROOT/System/Library/Frameworks/AssetsLibrary.framework', ] + additional_frameworks, visibility = ['PUBLIC'], ) @@ -100,12 +101,6 @@ for name in ['AsyncDisplayKit', 'AsyncDisplayKit-PINRemoteImage']: # Test Host # TODO: Split to smaller BUCK files and parse in parallel ##################################### -apple_resource( - name = 'TestHostResources', - files = ['Default-568h@2x.png'], - dirs = [], -) - apple_bundle( name = 'TestHost', binary = ':TestHostBinary', @@ -120,14 +115,10 @@ apple_bundle( apple_binary( name = 'TestHostBinary', headers = glob(['Tests/TestHost/*.h']), - srcs = glob([ - 'Tests/TestHost/*.m', - 'Tests/TestHost/*.mm', - ]), + srcs = glob(['Tests/TestHost/*.m']), lang_preprocessor_flags = COMMON_LANG_PREPROCESSOR_FLAGS, linker_flags = COMMON_LINKER_FLAGS, deps = [ - ':TestHostResources', ':AsyncDisplayKit-Core', ], frameworks = [ @@ -158,10 +149,9 @@ apple_test( 'PRODUCT_BUNDLE_IDENTIFIER': 'com.facebook.AsyncDisplayKitTests', }, prefix_header = 'Tests/AsyncDisplayKitTests-Prefix.pch', + header_path_prefix = 'AsyncDisplayKit', # Expose all ASDK headers to tests - headers = ASYNCDISPLAYKIT_EXPORTED_HEADERS + ASYNCDISPLAYKIT_PRIVATE_HEADERS + glob([ - 'Tests/*.h', - ]), + headers = ASYNCDISPLAYKIT_EXPORTED_HEADERS + ASYNCDISPLAYKIT_PRIVATE_HEADERS + glob(['Tests/*.h']), srcs = glob([ 'Tests/*.m', 'Tests/*.mm' @@ -172,6 +162,7 @@ apple_test( snapshot_reference_images_path='Tests/ReferenceImages', preprocessor_flags = COMMON_PREPROCESSOR_FLAGS + [ '-Wno-implicit-function-declaration', + '-Wno-deprecated-declarations', ], lang_preprocessor_flags = COMMON_LANG_PREPROCESSOR_FLAGS, linker_flags = COMMON_LINKER_FLAGS, diff --git a/Tests/ASDisplayNodeTests.mm b/Tests/ASDisplayNodeTests.mm index f4485d2603..3876aedc60 100644 --- a/Tests/ASDisplayNodeTests.mm +++ b/Tests/ASDisplayNodeTests.mm @@ -2149,12 +2149,9 @@ static bool stringContainsPointer(NSString *description, id p) { { ASTestDisplayNode *node = [[ASTestDisplayNode alloc] init]; [node view]; - dispatch_semaphore_t sem = dispatch_semaphore_create(0); - [NSThread detachNewThreadWithBlock:^{ + [self executeOffThread:^{ XCTAssertThrows([node onDidLoad:^(ASDisplayNode * _Nonnull node) { }]); - dispatch_semaphore_signal(sem); }]; - dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); } - (void)testThatOnDidLoadWorks diff --git a/Tests/ASImageNodeSnapshotTests.m b/Tests/ASImageNodeSnapshotTests.m index 9ebb36ce30..bb9c730d3d 100644 --- a/Tests/ASImageNodeSnapshotTests.m +++ b/Tests/ASImageNodeSnapshotTests.m @@ -17,6 +17,13 @@ @implementation ASImageNodeSnapshotTests +- (void)setUp +{ + [super setUp]; + + self.recordMode = NO; +} + - (UIImage *)testImage { NSString *path = [[NSBundle bundleForClass:[self class]] pathForResource:@"logo-square" diff --git a/Tests/ASRelativeLayoutSpecSnapshotTests.mm b/Tests/ASRelativeLayoutSpecSnapshotTests.mm index 71d5993158..33abb5d443 100644 --- a/Tests/ASRelativeLayoutSpecSnapshotTests.mm +++ b/Tests/ASRelativeLayoutSpecSnapshotTests.mm @@ -23,14 +23,6 @@ static const ASSizeRange kSize = {{100, 120}, {320, 160}}; #pragma mark - XCTestCase -- (void)setUp -{ - [super setUp]; - - self.recordMode = NO; -} - - - (void)testWithOptions { [self testAllVerticalPositionsForHorizontalPosition:ASRelativeLayoutSpecPositionStart]; diff --git a/Tests/ASSnapshotTestCase.m b/Tests/ASSnapshotTestCase.m index 0223b0bc8f..8e589c293e 100644 --- a/Tests/ASSnapshotTestCase.m +++ b/Tests/ASSnapshotTestCase.m @@ -21,16 +21,11 @@ NSOrderedSet *ASSnapshotTestCaseDefaultSuffixes(void) // or on iOS 10 (text rasterization). If the test folders find any image that exactly matches, // they pass; if an image is not present at all, or it fails, it moves on to check the others. // This means the order doesn't matter besides reducing logging / performance. - [suffixesSet addObject:@"_32"]; - [suffixesSet addObject:@"_64"]; if (AS_AT_LEAST_IOS10) { [suffixesSet addObject:@"_iOS_10"]; } -#if __LP64__ - return [suffixesSet reversedOrderedSet]; -#else + [suffixesSet addObject:@"_64"]; return [suffixesSet copy]; -#endif } @implementation ASSnapshotTestCase diff --git a/Tests/ASWrapperSpecSnapshotTests.mm b/Tests/ASWrapperSpecSnapshotTests.mm index b232d9bb25..21619348af 100644 --- a/Tests/ASWrapperSpecSnapshotTests.mm +++ b/Tests/ASWrapperSpecSnapshotTests.mm @@ -17,13 +17,6 @@ @implementation ASWrapperSpecSnapshotTests -- (void)setUp -{ - [super setUp]; - - self.recordMode = NO; -} - - (void)testWrapperSpecWithOneElementShouldSizeToElement { ASDisplayNode *child = ASDisplayNodeWithBackgroundColor([UIColor redColor], {50, 50}); diff --git a/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testMinimumSizeRangeIsGivenToChildWhenNotPositioning@2x.png b/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testMinimumSizeRangeIsGivenToChildWhenNotPositioning@2x.png deleted file mode 100644 index 02717f8fdb7afa87892b61d4e4638fa5ea022138..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4955 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV07SM1B&RJJqwaxEDmyaVpw-h<|UBBS>O>_ z%)lU~3c`$@K`I}Bf-;#d{vkk`35Y>p0T63IX&{>`X7S`@Kt7j-r;B4q1>>6=2YHVe z@Gv`mzhA=i|1g_b@d42VjHz6f=Pmo~nI(UmJMdB2p@D&s$(8Zw|JXk^DbP0l+XkKb|Z(7 diff --git a/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions@2x.png b/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions@2x.png deleted file mode 100644 index 50cb613c24dffd7fe74cd067e3a7829e97f311fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6221 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV07SM1B&RJJqwaxEDmyaVpw-h<|UBBS>O>_ z%)lU~3c`$@K`I}Bf-;#d{vkk`35Y>p0T63IX&{>?%c^*aIgmEGSU5_q!NUO2h)L-qXmEGiR(e%$;0C-ndWGmpWBvixFzTHCf6jXPk`g@Hd)4;m97BFcvPHIrh^e_VH(vb>aIQ_|g zz0Sx-(q2GYHNL90PXgHvKsn+lM3;J_kA)(txUt>4G^%_3;0{a&u0b?S{r zz2EyxlLYAodB6+k0S~E3NFI2!X2& zlDbDz+GzH~RgR99X((A`v?4$*M@MVV(IyAZX3l7n139aVHaSqrQH&->J+LG3|NpTo zmU|c&xH~{Sh_^R)PfRuxV0L&qf6KSzVgZH=TTA^(^wV!Yrrz22X2l@&TqZO)UxJi27l0ic zp6Q?t&eS-cH8;A~T846Xb|SH)gJc9e>L2?OgN4 zi=ZF&$F=_1H`(Fwvh8Zq5nUVwl?M|_AgSF1*sVJJ6qwpmmxdGe!&j{*-{-POneR2- zc?J|9py&z!Mpye1XXNObTdt?Qm#`n!hb!)XuR<`ofc>w?ms1J)p&rlB zp7vT#*bk#gZZyde$~L1(j%uackG&^b6_~-LERaYz2^xy2pMD^EHS;`BJgTe~ HDWM4fnCrt8 diff --git a/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_CenterX@2x.png b/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_CenterX@2x.png deleted file mode 100644 index 69e7392384b2717608d347dfbbf0aa940f24a3e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6922 zcmeHLeNYo;8haY z@^A1aup(`@0f5jA+(Oc`Ua-N<$kLRIYGsi5>8l`}Avp0h(o<|#MdB5WgJ}Vob7p0EJA3ROErLuQ(u zgo2nGK{f(>>Jk|Wn&Vs6i3Fj7b8(3mGYXk{9B9Bp zfxN*(n5;3kG0y(JSQN-J-Mhfa&7u5H&(NQcSI6%J8Os-OfV76u8m!S?*~Ft;MVL$P zSPjr=eRD*Q(TSJFw8vBw4V*ANkLo!gns}1Js zP`prwcOOH1qwG&%e+v6k*k6VHRoGvJ{ey&eO7ag9%TtnnkXRn{{j>1$l=MH%!ju^R zz_Ne;%JnfkA5?P(!AEy5louxAf}3u(W#LkEwx)UG4AHK=w^5<5ixVz7oyKa{XPBgG zgnrPM6yn$~m_IPFq`78aDq&0>{qXxd>>3-KERt88LbBR; z9}D+bR=d@&MxpF0JTXa9Gx)D+Ef;@Uv7~k^&Kq&DhGpBr7(RMDRj?&Q9vQd>dz@f< z6!?@)Gq)XH24`C0-PH+gG(cXU>%!XqTy)x<`g6|q8*$FmBl3y^2rmr;5+pTZt9(a* zJ0eisk@rqYWF+-n62j!RX*0t^?qqB7O6CQLorV`lKAilQ!H2ZD_>{H31z@$7p~sVy=Z3m^zb25{Ui5qr?%Vc{n2=%bT? zzTo`vP}HfiM?(@%l&Vd0#}m%(pxzX`*l7GJW0^8M;Yse`=Hj<$(xPCdWBTe4o-<`Lk|4nv zc+NzyEj`xVA#z5KS0xVqI-i6JSw5++$Fv+8F`c;?HZ?hV!WS&V$`lRe^=6L5Cc`~t zM&eG+aYX)rYKf1kphJB;=XbN;&Hilm7mfeBqERZA&;XN@)N?4m0sixLgS$a+Le>kA z!-DdmnX>nlO^KepZrI;=B{Mz$g>aXH>ItEOdjz1bavkQ<4|@UXF)A(~K`*a!`iG9K zCx#+Dd%BenW)-lM9rWdK_a7b-(9R)+1{6>e_IKm^^ZgSYc#o0UW))#z*ZYqk*m`W{o(Sk$7M{>3J6;z zYMXfHkVmWJA=Dq(`o(ImMUs-Be0gZsOXoYM2lm|e2(&3zKsc@-jl@(e2+8*bbKgqA_os(HJ^bkb>x*MmLF7-0 V4ZlgtghvvP{`y-f=aPwF7(TbRz0z`t4O*y(icUp0gcdRyqSBTzgiWnNb($Ku0|}T6=m><#w=Ol*T#Uwk6u3p(*lFdAQ47O1jo`jI#xyz+V0%j%9Qoj{+Zk+C#UE1 zIVbP?-1olcJx^)Kb=G$k{?QB3^;O0f<_H3yVhUgq(y$CmzB|O%^nKk<4-uTOeU5O( zc#nc5z9B&Ka3OV_DymGB4EK#k}PeEy?V1 zfU(rEVI%pUuS|%pfcEd=B1A?DW0l`IGC#`;%~9 zugBZ?cXPB_ab~@pxTbu%URqKUBbb?(d92Y9QUQ@V@i=Iy7C5j}G{7~$V1jlp!ls8>(s`Z0+nBzQ^2__1bP*hF$ zwY&KjJZZ36Iw#l~Go4l^(H=uM>3~m=hAv0xZXWJhie}dxY!FA0hG98k)0mVyB1HXa zMNXlUm(;3bYO9yvYNZArvHs8quqv}JCCR3oYHM9fd0*aNpbV{3eU+| zJ~ZM+=Sj<^(X9v6M3$jujn%mbA0+6TUL1*FiTA8~MG{*HUY7Lm(_9jI=;e|nCov_B zMk+4$hK~$(pM4b^g%wFp>EF`RM#So##;cODXyS<62QoJol|e#bRr-=SmS&b_Hk#R_ z!6pqhHz$hTq$4nb>yts7I((XplvY@w0#+?mfIP#%#9_^a&ip!NE)M0M0#9Br8tfdx zyp*)Ir1*qW1r%n}K~aTIxJB^$@Q{SM?4es5RL|l&7%|rv2w@GON;E59wc}qYHWzA0 zdu%N?hw7tsXY*)jjX_qxCMd(okI zV-iEz%|HlGF{m66_#fux*F{|+q^F(JIy%|1>8vG^aWFd&LN5d6qT_xQetDpW&xXev d7#@^7wrW{H&9};j@b4Lr@&5MID=Ea$e*m2=yp;d| diff --git a/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_CenterXEndY@2x.png b/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_CenterXEndY@2x.png deleted file mode 100644 index 385fc3e81798df41a041666071cadc2b97ceda14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6474 zcmeHJZ%k8H6u4a`6LoAFG0szFB%hR#}Kq&wajR1$1xXw=Y0aBEmkqYX&qW^$DLiEem z7Xc7Ho1I8z_IplfjLuJ6y%w%0ob0HBQyy61ci}6ds(BM!TQbv9)|McHy=OkdQV3qk zliI}D>7ZrF%8C!~+(Ji(iW%3q;flYLLU0Mmems+Sa*B2Linre-lr+EyrBkN?FZs74 z$iRlLq@h47y6a0!4j4iKUvsKF@c&P69^HHOy!vkgPlIF)XeW<1S0ae=g8tO%DFcFJ zf!m{#7n8Cr8t~2g8wPGo88jdaoLB$*+R<}U2JTue$Rx#4ihF?q^@A%HTycbb=5;y{ zitow$+%(5I6e5^*6~WwM0cE~n|JuN$*A&P3tLQE0cXMq==MhbXEXj-rA?e-V-?I&! z?{+J8CY@_-r-0<5Z!WLKo-9v`oYA|IuF^9r8?;H`us7xb3|~}XwSQ0PWzkB#ePVBO zn>(*B|N6|bkWc3*zZia4b(J2&VXy3tpeb`_|4`!`#|{&-qj70cHNk>0r8>Ohds9y= zFn98*L)@dsyvQ?nwDXfg;*9txjf2>+2{9D z3bYGCu{Cz4N2+_HThRF9v{|wFuFT@IvObr~>+>8p6HQ0Ww(=Ohzn(HWN7N35$&}z6 zpKih9ox5;*E%mUA@UsMgR?X##bJg z08Cj-#~t3b>#-P6X8G5F>V@IF6UXQusOIiok)dFW07zW~t-+5B@2o)SIx+4m^t=hM z{=&+rR)d$wmp91uo7=05GqFO}5siW}6LI}R^Z8-ED84O2oeRA%4_i^kPiJH@7RBI~ z*K!?24|G5Pnx~ut_;#hk)M^3}xvBM`j3{g04sr%A%liw+`~vjYgaT|2Ri>>gIilH>Xw43UKW)*}Mlx3m6 z%<^!W0t3+u)L!quO^l7~J#TQ{GNt}=f2z^cq2UOB)X<@Tze(Bq~#E%}m P0&rxeuS%;=B`tpe;{dF1 diff --git a/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_CenterY@2x.png b/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_CenterY@2x.png deleted file mode 100644 index 28036afad5bf216b5f09517165fb1054933336bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6055 zcmeHLeM}Q)7=Q1MLahZ!6fGzU2AN@Oln-SCgJ(shW3Y~aUpOd{3F<&HabQRF>JYO` z2GYb2kWnVY4}!S4i4zLlNKl4gMe$?E$L1U$I;xZ@AG3Sk>-CngCjD#4vRsqv-M#m_ z=iYnod7j_%{63LIuW=N(2><|&(unXF0B{NbjO5$H5#P2pbOGBLvql2Ww$B@cC(|+_ zHtYmo_9C=l(ikrT9Gtf`{H<8H$Ki&48n`WH_V9Rm;o^<1PvL%(G<-#DHumUF>!EOe zK0)@E8FO$Fi+DHwqhlqz)13E|Jqvr$Nn!RPIr_WfZ^(I6TJSi2;+9aX1B6g)2=)L9 zY!ttWPTmw;N5(HO-zz-m z>I^Q2U97%#>oQ{w*MQWa&F1H;{0Y48jzjI}U5hyq%mQgjW+vh-B$zkRcOi^5$ER>j zbpbQ?W+9*2yx`ug6pJ|wlYy^CnOW+NVpztbkGsa-x0v$)0*albD9{6Zrp$;hW6jx- zn4X;_^U_1-E#|nF=Dsu?F#o1|PySr6+(o9U!iy`sTTr~{Q(-_*aUQXnCmo^cq-Hec z0rGy@s}+nXPyQVS{t0UwX@5|$ju#}2Dnc=%xsJT}40(#YUzz3IbP$b^K-gqbxICSR zwh7zYU)n0I5u_Fsd!gtiPoQ{3NOd=kMtZ92GYp{6AMj4aaV>zZNo~lUVTaHqmgbaqLW9yJq%|VPr`Ha z(+0Y3p~rB!=*8`-!rm;~u+ZU6(TX@yebdVoeRMZRlz0TWf}jLNO2Ab*_1WpflQru+ z8;4_U!m@h4J#IWhd7qXBpbQ%1hJ46{?~+jx7Jm*S~!kWb&xm+r7PJ=Lv+{#1K^Dsr=a_Qe55xSj<#*R1x_H5~2<>#l~Xr5H6eN)(CFdP)!2MF>cv7Z=)-7 zE=alD#!&)lwX85{UzU3NzWHXk3wC6Ys9AhoXO~cIzYKM;fH0ZV4mh7agnzms%#TU{ zT0qkbJU2^Ae%sq=lMB@NFPbWLiWsMuSVd)P1Tm?QIoq3GWKO@$b>1ol8b)U$;g2WAvpX>A~A}m88%DVPBdxM0aja zu&46+9D1sYkZdq8MYn6ntb4nvi}{v2tRa5$Ha1Kf{Ir4g0beLm^2l0?fN7Qn4V7K_ z8@qp{`+rgPTq}r-;PPit5sAkAXwl>?)*OIyktq)FpKy^qKvC(Qav&^tE!59}bX9ct IS&4k#pTAf@2mk;8 diff --git a/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_EndX@2x.png b/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_EndX@2x.png deleted file mode 100644 index 692c2a4e84f552eff3e4bf5b1aff535e3e29217c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5710 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV07SM1B&RJJqwaxEDmyaVpw-h<|UBBS>O>_ z%)lU~3c`$@K`I}Bf-;#d{vkk`35Y>p0T63IX&{@MciEF~+zbp{H$7b(Ln;{G+&IX~ zY{uJA@Msv4**`119Vwf$kR*y9i1+0+=978V+T%?U71V4QMb zM#H7+-tYhL7=y%m4&VPhon^|gqbDI2-ECkEU`l54ir3%!+4u}d%z&@{eY{YBl(;&` zB@E1^%wi6lJ)9b~d%v7JZvYZIVDV>fy{AKF%pABw7%(03Pj%EGs8KT-BIt>AG(<*2 zWV9R^Em=qFn$g;Kv^_F3TWIz34)8ND{QqyGn)M6V$bANC z9l)R}pqB9BcKbbOlUkte&)s^@0~ahT!1hXHm@i=PQt&x&VLSic=jk&*4pjK_WB30_ z4GRkkAWioRc@B(I9A-2u%$Kh^4{3Hg{PP4ZM%IEit@^pO>_ z%)lU~3c`$@K`I}Bf-;#d{vkk`35Y>p0T63IX&{?BW42B59UyJu>Eakt!T9FJ?m`wr z9+!h>?K5kgDxL|%YE@=`XyX-n@cnbG{lC-$49q+RAmWbUhnsJ#XXmbeYYG+lBYlCP zit#Jc8K{!uJQ)oAxjRmte{viuBIUrlU}Zlen?ynbBU_*31qQj>1;O*-A|?$|4#DzJ z(`1YnFxqT;xXcbNlEGlwu*?pkS;8XCfw>~*ux~9~;g&t%Bxxxq_{Vji1O=?(FSYQOsDI4+}m^B(_G%SkOuX>$61C%=y;{H8ddSZLN z+JX$3Igs4A23Rn7DX1-YalQNAFUd5J@g39u&(4pk3-u&quK9m?j6tqAa{B*SbKU)`R0!BuU#a=&?QBjBDRy;88S@&LjfFZmHGX|v zw7sqk?C(cU|38~OEk0C;fQ|e2i2VF^mPMquc`~F(C}oy%;5@=2^0(?@wEbbQzdwGe z|Ll8uy%r%GB`Om*5GeRn!yKM8W+jF{bmNaiq{8|jXUUN<0$0EZ3+^@u z1~4TudEJkL*R3{x_BMJtWadCC)-BQoz>3w!;pJ^_SY_DKzW=*Er$%otv|cJ>W^>?d z;nb+DehI5fK79E8PnB`$#zIIPej)DwgGQqP?n4VP{}TND}Q2@F#l zW;9&dJ{{Hy;NY)+A1@RjB@L~R-?H&E2yqAp{Q7nYR*61*`2MdqlUMR%NPPwj6h6fm?>p6P)1YAX!aQ`Q-B>5niRAK2M$bXeBXMIeLA#S<1yHfa)2R&p>Fzt-)qe( zARV@U{}UNl1fb(C4UMYIaSVHb!$gqcyrI#MneD(v{(U98KStku2I+e40M<6V4SBGE z8-uh13>M!G-fej|dqT{UL!d4a#F~=Vu<@8tLq@~IU^JZoGdkV!&I4w>HraIVX!V=G Pv1A5MS3j3^P6O>_ z%)lU~3c`$@K`I}Bf-;#d{vkk`35Y>p0T63IX&{>`r`2m(3y`+(ba4!+V0?39_rxO( zJkE|!=YOenYB*UL8~*&{g-NzT3*JBfUH4};BQuY|0R|v(!SF+5S^CYg-0M(*5BUxZ zUs$h*C$LE*G%&JBbVv#?By(T?V`2{#5MW?+SlbVj0ZAvZu^hN@XsaDufW?6^;B_)c zV?smY3`RzSZ3S!nVFHYd0Ss4uLCj51NONH5(T#b187APsAi}WK4%OOUTVMjC){X}9 zXp$PuK%>P4yi6V~94V=RiqtnWE!ZtlZgM9Uw8S_>S>%7CUSEi zm1&H*0>i8W7L4uxel0Bj&tnX#aeMUtKlPrNeSc1a^W%djK~?a91EtJN3pjg(3tp_3 zulj!804(<7Q~l@J)8e=K99a1AK?=A+eXxs>@dC>+PKz(s`S<=#p8;}nLd{S8_^z1W z&sb!n`28T2=Q?Qt2Hymr1@(U~?5=MEyZPAk|FiFJ`LimOiLaMk9a8&W=jCWnGw?gG zaDUy4yY`2{Zhm~a{%6pWTjszps3 zr{TJUL*?{zrR)1F8QYIFPlg3DivwmL|9@t#yFY6t!BC0cC$jU~S;B#AzCZJ4=xM^C z@@eUbt@*$(AP~s=fBK$YAEibxRHo~@uB$C37|8$6=10|CH6j=)^htU;!arCU82X{N uSx4)d(b^Z>U>|Ld@bnC^7Fzwh1N?ezvgvPM=>wa(3=E#GelF{r5}E*4X}v7~ diff --git a/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_EndY@2x.png b/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithOptions_EndY@2x.png deleted file mode 100644 index 7011b35abfc1c05b07a53f54ed35d428b20e78d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5894 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV07SM1B&RJJqwaxEDmyaVpw-h<|UBBS>O>_ z%)lU~3c`$@K`I}Bf-;#d{vkk`35Y>p0T63IX&{@cV*UiDpFrBh)5S5Qg7M9b(}hPI zc$^)d&fj9s$isZ#b*w~s~3m4#MU|MkP zI7lN<+K`zkA?IP#e7FG90)`b|4Z-Ffa5&SzAQ8Re+H#mc1JFZRwW!v9&4dYzT00uZ zqe*Hs1C16J@G^O{a3sA3s{eR=KIe=B*-U(%?JA&J>cApK#sCJh#$={${k`c$Gr_eJ zN5k=_|9@#c`F@T?W)hz#sIqKyWd>%x45s5OV)0eypBN>Bs!sui{?q$E&pkbPpW1^7 zB_2kgnoUPafPvLP*g|c?k4x2R(tpwJ)lM=uuaLdg28)%N{I`A|<2Q?-o%VaVe%7fs9`%0jGYyi1fgbPz zdcZ?!5|Rhr?H+O^*7irLyU|w);eY{Rjq6 LS3j3^P6y-%W diff --git a/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithSizingOptions@2x.png b/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithSizingOptions@2x.png deleted file mode 100644 index 50cb613c24dffd7fe74cd067e3a7829e97f311fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6221 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV07SM1B&RJJqwaxEDmyaVpw-h<|UBBS>O>_ z%)lU~3c`$@K`I}Bf-;#d{vkk`35Y>p0T63IX&{>?%c^*aIgmEGSU5_q!NUO2h)L-qXmEGiR(e%$;0C-ndWGmpWBvixFzTHCf6jXPk`g@Hd)4;m97BFcvPHIrh^e_VH(vb>aIQ_|g zz0Sx-(q2GYHNL90PXgHvKsn+lM3;J_kA)(txUt>4G^%_3;0{a&u0b?S{r zz2EyxlLYAodB6+k0S~E3NFI2!X2& zlDbDz+GzH~RgR99X((A`v?4$*M@MVV(IyAZX3l7n139aVHaSqrQH&->J+LG3|NpTo zmU|c&xH~{Sh_^R)PfRuxV0L&qf6KSzVgZH=TTA^(^wV!Yrrz22X2l@&TqZO)UxJi27l0ic zp6Q?t&eS-cH8;A~T846Xb|SH)gJc9e>L2?OgN4 zi=ZF&$F=_1H`(Fwvh8Zq5nUVwl?M|_AgSF1*sVJJ6qwpmmxdGe!&j{*-{-POneR2- zc?J|9py&z!Mpye1XXNObTdt?Qm#`n!hb!)XuR<`ofc>w?ms1J)p&rlB zp7vT#*bk#gZZyde$~L1(j%uackG&^b6_~-LERaYz2^xy2pMD^EHS;`BJgTe~ HDWM4fnCrt8 diff --git a/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithSizingOptions_SizingMinimumHeight@2x.png b/Tests/ReferenceImages_32/ASRelativeLayoutSpecSnapshotTests/testWithSizingOptions_SizingMinimumHeight@2x.png deleted file mode 100644 index b14c267b42e8fb5a3472b8912e8576c6fc377a19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4847 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xeKX9-C$q5BlPXj5&;vjb?hIQv;UIICs1s;*b z3=CqbAk63)r1AkMD3j^p9|EMAfEWZSfLH@c1KFIZ*Rw7y1=5C|E{-7;jBjon>}59O zVRra_|4ZCDhD{7v0#7#E3nzDesGdKcMP-7}k9)uWq#j^k<}uii_F((HKPn21Qx4o} zEtm7|VPum?cyPagX$6D#0+oaSsVO`LK!x3GA_q48xx9M9`*NX(JzvhH%rpdP*J$8c zz~aT!wnXtH*su%-MxE3D&sk5Oyo^Omf3I<58dx{i0w#^dNezmb9!4NtI#K})r$70x zciMN~GvVVU>&dCdK)M$&Xf+6Fa7s*SQvvc099YE2x4JE6LRs_i9=xFUpjV8wjb_Rz3|4*94iU1o=`k=#?2C|taPH$P91Ega;T^vIy7~fnu$je~B z!?f|u{t_$4yv8V-pOH;7MVVOq8aErrFtL>Jv@kRZbeyUeP)JZ<;b?IPx!26V$gJp~ zz_RF*91Dj82P2cBz|`*w4hI}K1UMR3>|tkQVsmP6;Ba|r%OPMOz{KLDp!MFdp`lSg zL4YZ+lAnnMYGn1Ok)vTb3=`3V>PB`3hX4QdHNW3sU|?|vWwf`~HcmVoAaFR~>-{Zn z3Ud}U))p6^yw9WLVSoNLKO>7;W2FKg6UQEYM*#-~jw7D+3JnZUX7wl&93+D;91i@p zSzphS@}Qn=AM>aG4`jt9fBfAi#Ns%iaVjHslH=baeLMmx57vZztV=KCa1!7al2q_G zuu-IZT2gIxlfaQC7d8%|g0R&U`#0;bD0Z-Rf>cLzS$l8XXX?n2u|$WPkVGOXidJaKvTqo6AX?_=dwiKmrrYj zsh06BOxL`&U5&$0$0MadfiZn+*LUmFPB7JdOLuG*c^xg>q9CSX;t+DLnSqg6(LsS_ z(I+_;4harMCPjg%-xVAVIB*DXG_Kgg&d9{()ZoD3^3;|?z(9bB#YsWyy<QN&{!xEH;_KAZM>Hq&9*LMg2Q)V|PWxgFvm!r97fQt=ay5#yg?@mc+ SygM*`GI+ZBxvX