|
3 | 3 | // SSDynamicTextExample |
4 | 4 | // |
5 | 5 | // Created by Remigiusz Herba on 31/08/15. |
6 | | -// |
| 6 | +// Copyright (c) 2015 Splinesoft. All rights reserved. |
7 | 7 | // |
8 | 8 |
|
9 | | -#import <UIKit/UIKit.h> |
10 | 9 | #import <XCTest/XCTest.h> |
11 | | -#import <SSDynamicLabel.h> |
12 | | -#import "SSDynamicsView.h" |
13 | | -#import "SSAttributedStringValidator.h" |
14 | 10 | #import "SSTestsHelper.h" |
| 11 | +#import "SSAttributedStringValidator.h" |
15 | 12 |
|
16 | | -@interface SSDynamicLabelTests : XCTestCase |
17 | | - |
18 | | -@property (nonatomic, strong) SSDynamicLabel *dynamicLabel; |
19 | | -@property (nonatomic, strong) SSDynamicLabel *dynamicLabelFromXib; |
| 13 | +#import "SSDynamicLabel.h" |
| 14 | +#import "SSDynamicsView.h" |
20 | 15 |
|
| 16 | +@interface SSDynamicLabelTests : XCTestCase |
21 | 17 | @end |
22 | 18 |
|
23 | 19 | @implementation SSDynamicLabelTests |
24 | 20 |
|
25 | 21 | - (void)setUp { |
26 | 22 | [super setUp]; |
27 | | - self.dynamicLabel = [SSDynamicLabel labelWithFont:SSTestFontName baseSize:SSTestFontSize]; |
28 | 23 |
|
29 | | - SSDynamicsView *view = [[NSBundle mainBundle] loadNibNamed:@"SSDynamicsView" owner:nil options:nil].firstObject; |
30 | | - self.dynamicLabelFromXib = view.label; |
31 | | - [SSTestsHelper startMockingPreferredContentSizeCategory:UIContentSizeCategoryExtraExtraLarge]; |
| 24 | + //Default content size category |
| 25 | + [SSTestsHelper startMockingPreferredContentSizeCategory:UIContentSizeCategoryLarge]; |
32 | 26 | } |
33 | 27 |
|
34 | 28 | - (void)tearDown { |
35 | 29 | [SSTestsHelper stopMockingPreferredContentSizeCategory]; |
36 | 30 | [super tearDown]; |
37 | 31 | } |
38 | 32 |
|
| 33 | +- (NSArray *)dynamicLabelsWithFontName:(NSString *)fontName fontSize:(CGFloat)fontSize { |
| 34 | + SSDynamicLabel *dynamicLabelWithFont = [SSDynamicLabel labelWithFont:fontName baseSize:fontSize]; |
| 35 | + |
| 36 | + UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:fontName size:fontSize]; |
| 37 | + SSDynamicLabel *dynamicLabelWithFontDescriptor = [SSDynamicLabel labelWithFontDescriptor:fontDescriptor]; |
39 | 38 |
|
40 | | -- (void)testDefaultSettings { |
41 | | - //Assert |
42 | | - XCTAssertEqualObjects(self.dynamicLabel.font.fontName, SSTestFontName); |
43 | | - XCTAssertEqualObjects(self.dynamicLabelFromXib.font.fontName, SSTestFontName); |
44 | | - XCTAssertEqual(self.dynamicLabel.font.pointSize, SSTestFontSize); |
45 | | - XCTAssertEqual(self.dynamicLabelFromXib.font.pointSize, SSTestFontSize); |
| 39 | + SSDynamicsView *view = [[NSBundle mainBundle] loadNibNamed:@"SSDynamicsView" owner:nil options:nil].firstObject; |
| 40 | + SSDynamicLabel *dynamicLabelFromXib = view.label; |
| 41 | + |
| 42 | + return @[ dynamicLabelWithFont, dynamicLabelWithFontDescriptor, dynamicLabelFromXib ]; |
46 | 43 | } |
47 | 44 |
|
48 | | -- (void)testContentSizeChange { |
| 45 | +- (void)testLabelFontNameShouldBeEqualToFontNameFromConstructor { |
| 46 | + //Arrange |
| 47 | + NSString *expectedFontName = SSTestFontName; |
| 48 | + |
49 | 49 | //Act |
50 | | - [SSTestsHelper postContentSizeChangeNotification]; |
| 50 | + NSArray *dynamicLabels = [self dynamicLabelsWithFontName:SSTestFontName fontSize:SSTestFontSize]; |
51 | 51 |
|
52 | | - //Assert |
53 | | - XCTAssertEqual(self.dynamicLabel.font.pointSize, SSTestFontSize + SSTestFontSizeDifferenceForSizeExtraExtraLarge); |
54 | | - XCTAssertEqual(self.dynamicLabelFromXib.font.pointSize, SSTestFontSize + SSTestFontSizeDifferenceForSizeExtraExtraLarge); |
| 52 | + for (SSDynamicLabel *label in dynamicLabels) { |
| 53 | + //Assert |
| 54 | + XCTAssertEqualObjects(label.font.fontName, expectedFontName); |
| 55 | + } |
55 | 56 | } |
56 | 57 |
|
57 | | -- (void)testFontChangeAndThenContentSizeChange { |
| 58 | +- (void)testLabelFontSizeShouldBeEqualToFontSizeInConstructorForDefaultPreferredContentSizeCategory { |
| 59 | + //Arrange |
| 60 | + CGFloat expectedFontSize = SSTestFontSize; |
| 61 | + |
| 62 | + //Act |
| 63 | + NSArray<SSDynamicLabel *> *dynamicLabels = [self dynamicLabelsWithFontName:SSTestFontName fontSize:SSTestFontSize]; |
| 64 | + |
| 65 | + for (SSDynamicLabel *label in dynamicLabels) { |
| 66 | + //Assert |
| 67 | + XCTAssertEqualWithAccuracy(label.font.pointSize, expectedFontSize, FLT_EPSILON); |
| 68 | + } |
| 69 | +} |
| 70 | + |
| 71 | +- (void)testLabelFontSizeShouldBeEqualToLabelFontSizeIncreasedByPreferredContentSizeCategoryDelta { |
| 72 | + // Arrange |
| 73 | + [SSTestsHelper startMockingPreferredContentSizeCategory:UIContentSizeCategoryExtraExtraLarge]; |
| 74 | + |
| 75 | + CGFloat initialFontSize = SSTestFontSize; |
| 76 | + |
| 77 | + //Act |
| 78 | + NSArray<SSDynamicLabel *> *dynamicLabels = [self dynamicLabelsWithFontName:SSTestFontName fontSize:initialFontSize]; |
| 79 | + |
| 80 | + for (SSDynamicLabel *label in dynamicLabels) { |
| 81 | + |
| 82 | + //Assert |
| 83 | + XCTAssertEqualWithAccuracy(label.font.pointSize, initialFontSize + SSTestFontSizeDifferenceForSizeExtraExtraLarge, FLT_EPSILON); |
| 84 | + } |
| 85 | +} |
| 86 | + |
| 87 | +- (void)testLabelFontSizeShouldBeEqualToNewFontSizeIncreasedByContentSizeCategoryDelta { |
58 | 88 | //Arrange |
59 | 89 | CGFloat newFontSize = 7.0f; |
60 | 90 | UIFont *newFont = [UIFont systemFontOfSize:newFontSize]; |
61 | 91 |
|
62 | | - //Act |
63 | | - self.dynamicLabel.font = newFont; |
64 | | - self.dynamicLabelFromXib.font = newFont; |
65 | | - [SSTestsHelper postContentSizeChangeNotification]; |
66 | | - |
67 | | - //Assert |
68 | | - XCTAssertEqualObjects(self.dynamicLabel.font.fontName, newFont.fontName); |
69 | | - XCTAssertEqualObjects(self.dynamicLabelFromXib.font.fontName, newFont.fontName); |
70 | | - XCTAssertEqual(self.dynamicLabel.font.pointSize, newFontSize + SSTestFontSizeDifferenceForSizeExtraExtraLarge); |
71 | | - XCTAssertEqual(self.dynamicLabelFromXib.font.pointSize, newFontSize + SSTestFontSizeDifferenceForSizeExtraExtraLarge); |
| 92 | + NSArray<SSDynamicLabel *> *dynamicLabels = [self dynamicLabelsWithFontName:SSTestFontName fontSize:SSTestFontSize]; |
| 93 | + |
| 94 | + [SSTestsHelper startMockingPreferredContentSizeCategory:UIContentSizeCategoryExtraExtraLarge]; |
| 95 | + |
| 96 | + for (SSDynamicLabel *label in dynamicLabels) { |
| 97 | + //Act |
| 98 | + label.font = newFont; |
| 99 | + |
| 100 | + //Assert |
| 101 | + XCTAssertEqualWithAccuracy(label.font.pointSize, newFontSize + SSTestFontSizeDifferenceForSizeExtraExtraLarge, FLT_EPSILON); |
| 102 | + } |
72 | 103 | } |
73 | 104 |
|
74 | | -- (void)testAttributedStringContentSizeChange { |
| 105 | +- (void)testLabelAttributedStringFontSizesShouldBeIncreasedByContentSizeCategoryDelta { |
75 | 106 | //Arrange |
76 | 107 | NSAttributedString *attributedString = [SSAttributedStringValidator testAttributedString]; |
77 | | - self.dynamicLabel.dynamicAttributedText = attributedString; |
78 | | - self.dynamicLabelFromXib.dynamicAttributedText = attributedString; |
79 | 108 |
|
80 | | - //Act |
81 | | - [SSTestsHelper postContentSizeChangeNotification]; |
| 109 | + NSArray<SSDynamicLabel *> *dynamicLabels = [self dynamicLabelsWithFontName:SSTestFontName fontSize:SSTestFontSize]; |
| 110 | + |
| 111 | + [SSTestsHelper startMockingPreferredContentSizeCategory:UIContentSizeCategoryExtraExtraLarge]; |
| 112 | + |
| 113 | + for (SSDynamicLabel *label in dynamicLabels) { |
| 114 | + //Act |
| 115 | + label.dynamicAttributedText = attributedString; |
82 | 116 |
|
83 | | - //Assert |
84 | | - XCTAssertTrue([SSAttributedStringValidator isValidTestAttributedString:self.dynamicLabel.attributedText |
85 | | - changedByDelta:SSTestFontSizeDifferenceForSizeExtraExtraLarge]); |
86 | | - XCTAssertTrue([SSAttributedStringValidator isValidTestAttributedString:self.dynamicLabelFromXib.attributedText |
87 | | - changedByDelta:SSTestFontSizeDifferenceForSizeExtraExtraLarge]); |
| 117 | + //Assert |
| 118 | + XCTAssertTrue([SSAttributedStringValidator isValidTestAttributedString:label.attributedText |
| 119 | + changedByDelta:SSTestFontSizeDifferenceForSizeExtraExtraLarge]); |
88 | 120 |
|
89 | | - XCTAssertEqualObjects(attributedString, self.dynamicLabel.dynamicAttributedText); |
90 | | - XCTAssertEqualObjects(attributedString, self.dynamicLabelFromXib.dynamicAttributedText); |
| 121 | + XCTAssertEqualObjects(label.dynamicAttributedText, attributedString); |
| 122 | + } |
91 | 123 | } |
92 | 124 |
|
93 | 125 | @end |
0 commit comments