Swiftgram/Tests/ASTextKitCoreTextAdditionsTests.mm
Adlai Holler d0ba092a77
Convert the codebase to Objective-C++ (#1206)
* Convert the codebase to Objective-C++ throughout. One language is better than two.

* Put it back

* Fix linker

* Point explicitly to updated Weaver to unblock build

* Revert "Point explicitly to updated Weaver to unblock build"

This reverts commit fdc25296e8794d4e6e56c35f5fe6da2be3f71dbc.

* Revert "Fix linker"

This reverts commit 7be25f91519b8497ef42de79f115bcfbdb965c39.

* Add in the frameworks

* no message

* Address spec lint warnings

* Fix tvos build

* Put that back

* Address Michael's review

* Add comment to kick CI
2018-11-02 12:04:14 -07:00

71 lines
3.3 KiB
Plaintext

//
// ASTextKitCoreTextAdditionsTests.mm
// Texture
//
// Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
// Changes after 4/13/2017 are: Copyright (c) Pinterest, Inc. All rights reserved.
// Licensed under Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0
//
#import <CoreText/CoreText.h>
#import <XCTest/XCTest.h>
#import <AsyncDisplayKit/ASTextKitCoreTextAdditions.h>
BOOL floatsCloseEnough(CGFloat float1, CGFloat float2) {
CGFloat epsilon = 0.00001;
return (fabs(float1 - float2) < epsilon);
}
@interface ASTextKitCoreTextAdditionsTests : XCTestCase
@end
@implementation ASTextKitCoreTextAdditionsTests
- (void)testAttributeCleansing
{
UIFont *font = [UIFont systemFontOfSize:12.0];
NSMutableAttributedString *testString = [[NSMutableAttributedString alloc] initWithString:@"Test" attributes:@{NSFontAttributeName:font}];
CFRange cfRange = CFRangeMake(0, testString.length);
CGColorRef blueColor = CGColorRetain([UIColor blueColor].CGColor);
CFAttributedStringSetAttribute((CFMutableAttributedStringRef)testString,
cfRange,
kCTForegroundColorAttributeName,
blueColor);
UIColor *color = [UIColor colorWithCGColor:blueColor];
NSAttributedString *actualCleansedString = ASCleanseAttributedStringOfCoreTextAttributes(testString);
XCTAssertTrue([[actualCleansedString attribute:NSForegroundColorAttributeName atIndex:0 effectiveRange:NULL] isEqual:color], @"Expected the %@ core text attribute to be cleansed from the string %@\n Should match %@", kCTForegroundColorFromContextAttributeName, actualCleansedString, color);
CGColorRelease(blueColor);
}
- (void)testNoAttributeCleansing
{
NSMutableAttributedString *testString = [[NSMutableAttributedString alloc] initWithString:@"Test" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12.0],
NSForegroundColorAttributeName : [UIColor blueColor]}];
NSAttributedString *actualCleansedString = ASCleanseAttributedStringOfCoreTextAttributes(testString);
XCTAssertTrue([testString isEqualToAttributedString:actualCleansedString], @"Expected the output string %@ to be the same as the input %@ if there are no core text attributes", actualCleansedString, testString);
}
- (void)testNSParagraphStyleNoCleansing
{
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 10.0;
//NSUnderlineStyleAttributeName flags the unsupported CT attribute check
NSDictionary *attributes = @{NSParagraphStyleAttributeName:paragraphStyle,
NSUnderlineStyleAttributeName:@(NSUnderlineStyleSingle)};
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"Test" attributes:attributes];
NSAttributedString *cleansedString = ASCleanseAttributedStringOfCoreTextAttributes(attributedString);
NSParagraphStyle *cleansedParagraphStyle = [cleansedString attribute:NSParagraphStyleAttributeName atIndex:0 effectiveRange:NULL];
XCTAssertTrue(floatsCloseEnough(cleansedParagraphStyle.lineSpacing, paragraphStyle.lineSpacing), @"Expected the output line spacing: %f to be equal to the input line spacing: %f", cleansedParagraphStyle.lineSpacing, paragraphStyle.lineSpacing);
}
@end