blob: ed1d2ce224fb4daf5c9c6fe2849a8cc671d40691 [file] [log] [blame]
// Copyright 2017-present the Material Components for iOS authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#import <XCTest/XCTest.h>
#import "MaterialCollectionCells.h"
@interface CollectionViewTextCellsReuseTests : XCTestCase
@end
@implementation CollectionViewTextCellsReuseTests
- (void)testPrepareForReuse {
// Given
MDCCollectionViewTextCell *textCell =
[[MDCCollectionViewTextCell alloc] initWithFrame:CGRectZero];
UIFont *textLabelFont = textCell.textLabel.font;
UIColor *textLabelTextColor = textCell.textLabel.textColor;
CGSize textLabelShadowOffset = textCell.textLabel.shadowOffset;
NSTextAlignment textLabelAlignment = textCell.textLabel.textAlignment;
NSLineBreakMode textLabelLineBreakMode = textCell.textLabel.lineBreakMode;
NSInteger textLabelNumberOfLines = textCell.textLabel.numberOfLines;
UIFont *detailTextLabelFont = textCell.detailTextLabel.font;
UIColor *detailTextLabelTextColor = textCell.detailTextLabel.textColor;
CGSize detailTextLabelShadowOffset = textCell.detailTextLabel.shadowOffset;
NSTextAlignment detailTextLabelAlignment = textCell.detailTextLabel.textAlignment;
NSLineBreakMode detailTextLabelLineBreakMode = textCell.detailTextLabel.lineBreakMode;
NSInteger detailTextLabelNumberOfLines = textCell.detailTextLabel.numberOfLines;
textCell.textLabel.text = @"Text label";
textCell.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
textCell.textLabel.textColor = [UIColor redColor];
textCell.textLabel.shadowColor = [UIColor blueColor];
textCell.textLabel.shadowOffset = CGSizeMake(3, 5);
textCell.textLabel.textAlignment = NSTextAlignmentJustified;
textCell.textLabel.lineBreakMode = NSLineBreakByClipping;
textCell.textLabel.numberOfLines = 7;
textCell.detailTextLabel.text = @"Detail text label";
textCell.detailTextLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
textCell.detailTextLabel.textColor = [UIColor redColor];
textCell.detailTextLabel.shadowColor = [UIColor blueColor];
textCell.detailTextLabel.shadowOffset = CGSizeMake(3, 5);
textCell.detailTextLabel.textAlignment = NSTextAlignmentJustified;
textCell.detailTextLabel.lineBreakMode = NSLineBreakByClipping;
textCell.detailTextLabel.numberOfLines = 7;
textCell.imageView.image = [UIImage imageNamed:@"system_icons/add"];
// When
[textCell prepareForReuse];
// Then
// Main text label
XCTAssertNil(textCell.textLabel.text,
@"Reusing the cell should remove any text in the textLabel");
XCTAssertEqualObjects(textLabelFont, textCell.textLabel.font,
@"Reusing the cell should reset the textLabel font.");
XCTAssertEqualObjects(textLabelTextColor, textCell.textLabel.textColor,
@"Reusing the cell should reset the textLabel textColor.");
XCTAssertNil(textCell.textLabel.shadowColor,
@"Reusing the cell should remove the textLabel shadowColor.");
XCTAssert(CGSizeEqualToSize(textLabelShadowOffset, textCell.textLabel.shadowOffset),
@"Reusing the cell should reset the textLabel shadowOffset.");
XCTAssertEqual(textLabelAlignment, textCell.textLabel.textAlignment,
@"Reusing the cell should reset the textLabel textAlignment.");
XCTAssertEqual(textLabelLineBreakMode, textCell.textLabel.lineBreakMode,
@"Reusing the cell should reset the textLabel lineBreakMode.");
XCTAssertEqual(textLabelNumberOfLines, textCell.textLabel.numberOfLines,
@"Reusing the cell should reset the textLabel numberOfLines.");
// Detail text label
XCTAssertNil(textCell.detailTextLabel.text,
@"Reusing the cell should remove any text in the detailTextLabel");
XCTAssertEqualObjects(detailTextLabelFont, textCell.detailTextLabel.font,
@"Reusing the cell should reset the detailTextLabel font.");
XCTAssertEqualObjects(detailTextLabelTextColor, textCell.detailTextLabel.textColor,
@"Reusing the cell should reset the detailTextLabel textColor.");
XCTAssertNil(textCell.detailTextLabel.shadowColor,
@"Reusing the cell should remove the detailTextLabel shadowColor.");
XCTAssert(CGSizeEqualToSize(detailTextLabelShadowOffset, textCell.detailTextLabel.shadowOffset),
@"Reusing the cell should reset the detailTextLabel shadowOffset.");
XCTAssertEqual(detailTextLabelAlignment, textCell.detailTextLabel.textAlignment,
@"Reusing the cell should reset the detailTextLabel textAlignment.");
XCTAssertEqual(detailTextLabelLineBreakMode, textCell.detailTextLabel.lineBreakMode,
@"Reusing the cell should reset the detailTextLabel lineBreakMode.");
XCTAssertEqual(detailTextLabelNumberOfLines, textCell.detailTextLabel.numberOfLines,
@"Reusing the cell should reset the detailTextLabel numberOfLines.");
// Image view
XCTAssertNil(textCell.imageView.image, @"Reusing the cell should remove the imageView image.");
}
@end