From cf08f3a73e812e02a9d3755f210c5186a6d6e114 Mon Sep 17 00:00:00 2001 From: Michael Schneider Date: Sun, 28 Aug 2016 15:55:55 -0700 Subject: [PATCH] Add test for layout transition measurement completion block is called on main thread (#2162) --- .../ASDisplayNodeImplicitHierarchyTests.m | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/AsyncDisplayKitTests/ASDisplayNodeImplicitHierarchyTests.m b/AsyncDisplayKitTests/ASDisplayNodeImplicitHierarchyTests.m index 6ce6312a..5025f6fc 100644 --- a/AsyncDisplayKitTests/ASDisplayNodeImplicitHierarchyTests.m +++ b/AsyncDisplayKitTests/ASDisplayNodeImplicitHierarchyTests.m @@ -117,6 +117,23 @@ XCTAssertEqual(node.subnodes[2], node2); } +- (void)testLayoutTransitionMeasurementCompletionBlockIsCalledOnMainThread +{ + ASDisplayNode *displayNode = [ASDisplayNode new]; + + // Trigger explicit view creation to be able to use the Transition API + [displayNode view]; + + XCTestExpectation *expectation = [self expectationWithDescription:@"Call measurement completion block on main"]; + + [displayNode transitionLayoutWithSizeRange:ASSizeRangeMake(CGSizeZero, CGSizeZero) animated:YES measurementCompletion:^{ + XCTAssertTrue(ASDisplayNodeThreadIsMain(), @"Measurement completion block should be called on main thread"); + [expectation fulfill]; + }]; + + [self waitForExpectationsWithTimeout:2.0 handler:nil]; +} + - (void)testMeasurementInBackgroundThreadWithLoadedNode { ASDisplayNode *node1 = [[ASDisplayNode alloc] init];