Files
AsyncDisplayKit/AsyncDisplayKitTests/ASImageNodeSnapshotTests.m
Garrett Moon dfe4585cec Add ability to force the size which an image node is rendered. (#2107)
* Add ability to force the size which an image node is rendered.

* Add unit tests for forced scaling.

* Whoops, need results!

* Round forced scaling.

* Check size of contents too.

* Remove unnecessary container node.
2016-08-23 16:01:43 -07:00

55 lines
1.7 KiB
Objective-C

//
// ASImageNodeSnapshotTests.m
// AsyncDisplayKit
//
// 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 "ASSnapshotTestCase.h"
#import <AsyncDisplayKit/AsyncDisplayKit.h>
@interface ASImageNodeSnapshotTests : ASSnapshotTestCase
@end
@implementation ASImageNodeSnapshotTests
- (UIImage *)testImage
{
NSString *path = [[NSBundle bundleForClass:[self class]] pathForResource:@"logo-square"
ofType:@"png" inDirectory:@"TestResources"];
return [UIImage imageWithContentsOfFile:path];
}
- (void)testRenderLogoSquare
{
// trivial test case to ensure ASSnapshotTestCase works
ASImageNode *imageNode = [[ASImageNode alloc] init];
imageNode.image = [self testImage];
[imageNode measure:CGSizeMake(100, 100)];
ASSnapshotVerifyNode(imageNode, nil);
}
- (void)testForcedScaling
{
ASImageNode *imageNode = [[ASImageNode alloc] init];
imageNode.image = [self testImage];
imageNode.frame = CGRectMake(0, 0, 100, 100);
imageNode.forcedSize = CGSizeMake(100, 100);
ASSnapshotVerifyNode(imageNode, @"first");
imageNode.frame = CGRectMake(0, 0, 200, 200);
ASSnapshotVerifyNode(imageNode, @"second");
XCTAssert(CGImageGetWidth((CGImageRef)imageNode.contents) == 100 * imageNode.contentsScale && CGImageGetHeight((CGImageRef)imageNode.contents) == 100 * imageNode.contentsScale, @"contents should be 100 x 100 by contents scale.");
}
@end