| // Copyright 2016-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 | |
| import MaterialComponents.MaterialTextFields | |
| class TextInputTests: XCTestCase { | |
| func testMDCTextInputProtocolConformanceSingleline() { | |
| let textField = MDCTextField() | |
| XCTAssertNotNil(textField.cursorColor) | |
| XCTAssertNotNil(textField.leadingUnderlineLabel) | |
| XCTAssertNotNil(textField.trailingUnderlineLabel) | |
| XCTAssertNotNil(textField.placeholderLabel) | |
| textField.borderView?.borderFillColor = .purple | |
| XCTAssertEqual(textField.borderView?.borderFillColor, .purple) | |
| let borderPath = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 100, height: 100)) | |
| textField.borderView?.borderPath = borderPath | |
| XCTAssertEqual(textField.borderView?.borderPath, borderPath) | |
| textField.borderView?.borderStrokeColor = .orange | |
| XCTAssertEqual(textField.borderView?.borderStrokeColor, .orange) | |
| textField.clearButton.tintColor = .red | |
| XCTAssertEqual(textField.clearButton.tintColor, .red) | |
| textField.cursorColor = .yellow | |
| XCTAssertEqual(textField.cursorColor, .yellow) | |
| textField.borderView?.borderFillColor = nil | |
| XCTAssertNotEqual(textField.borderView?.borderFillColor, .purple) | |
| textField.borderView?.borderPath = nil | |
| XCTAssertNotEqual(textField.borderView?.borderPath, borderPath) | |
| textField.borderView?.borderStrokeColor = nil | |
| XCTAssertNotEqual(textField.borderView?.borderStrokeColor, .orange) | |
| let font = UIFont.boldSystemFont(ofSize: 6) | |
| textField.font = font | |
| XCTAssertEqual(font, textField.font) | |
| let testLeading = "Helper Test" | |
| textField.leadingUnderlineLabel.text = testLeading | |
| XCTAssertEqual(testLeading, textField.leadingUnderlineLabel.text) | |
| let testPlaceholder = "Test placeholder" | |
| textField.placeholder = testPlaceholder | |
| XCTAssertEqual(testPlaceholder, textField.placeholder) | |
| let testText = "Test text" | |
| textField.text = testText | |
| XCTAssertEqual(testText, textField.text) | |
| textField.textColor = .red | |
| XCTAssertEqual(.red, textField.textColor) | |
| let trailingView = UIView() | |
| textField.trailingView = trailingView | |
| XCTAssertEqual(textField.trailingView, trailingView) | |
| let testTrailing = "NN / NN" | |
| textField.trailingUnderlineLabel.text = testTrailing | |
| XCTAssertEqual(testTrailing, textField.trailingUnderlineLabel.text) | |
| textField.underline?.color = .red | |
| XCTAssertEqual(.red, textField.underline?.color) | |
| let width: CGFloat = 5.0 | |
| textField.underline?.lineHeight = width | |
| XCTAssertEqual(width, textField.underline?.lineHeight) | |
| } | |
| func testMDCTextInputProtocolConformanceMultiline() { | |
| let textField = MDCMultilineTextField() | |
| XCTAssertNotNil(textField.leadingUnderlineLabel) | |
| XCTAssertNotNil(textField.trailingUnderlineLabel) | |
| XCTAssertNotNil(textField.placeholderLabel) | |
| textField.borderView?.borderFillColor = .purple | |
| XCTAssertEqual(textField.borderView?.borderFillColor, .purple) | |
| let borderPath = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 100, height: 100)) | |
| textField.borderView?.borderPath = borderPath | |
| XCTAssertEqual(textField.borderView?.borderPath, borderPath) | |
| textField.borderView?.borderStrokeColor = .orange | |
| XCTAssertEqual(textField.borderView?.borderStrokeColor, .orange) | |
| textField.borderView?.borderFillColor = nil | |
| XCTAssertNotEqual(textField.borderView?.borderFillColor, .purple) | |
| textField.borderView?.borderPath = nil | |
| XCTAssertNotEqual(textField.borderView?.borderPath, borderPath) | |
| textField.borderView?.borderStrokeColor = nil | |
| XCTAssertNotEqual(textField.borderView?.borderStrokeColor, .orange) | |
| textField.clearButton.tintColor = .red | |
| XCTAssertEqual(textField.clearButton.tintColor, .red) | |
| textField.cursorColor = .yellow | |
| XCTAssertEqual(textField.cursorColor, .yellow) | |
| let gray = UIColor.gray | |
| textField.textColor = gray.copy() as? UIColor | |
| XCTAssertEqual(textField.textColor, gray) | |
| let testText = "Test text" | |
| textField.text = testText | |
| XCTAssertEqual(textField.text, testText) | |
| let testPlaceholder = "Test placeholder" | |
| textField.placeholder = testPlaceholder | |
| XCTAssertEqual(textField.placeholder, testPlaceholder) | |
| textField.underline?.color = gray.copy() as? UIColor | |
| XCTAssertEqual(textField.underline?.color, gray) | |
| let width: CGFloat = 5.0 | |
| textField.underline?.lineHeight = width | |
| XCTAssertEqual(textField.underline?.lineHeight, width) | |
| let testLeading = "Helper Test" | |
| textField.leadingUnderlineLabel.text = testLeading | |
| XCTAssertEqual(textField.leadingUnderlineLabel.text, testLeading) | |
| let testTrailing = "NN / NN" | |
| textField.trailingUnderlineLabel.text = testTrailing | |
| XCTAssertEqual(textField.trailingUnderlineLabel.text, testTrailing) | |
| let controller = MDCTextInputControllerLegacyDefault(textInput: textField) | |
| XCTAssertNotNil(controller.textInput) | |
| RunLoop.main.run(until: Date.init(timeIntervalSinceNow: 1)) | |
| } | |
| func testMDCMultilineTextInputProtocolConformance() { | |
| let textField = MDCMultilineTextField() | |
| XCTAssertEqual(textField.minimumLines, 1) | |
| textField.minimumLines = 3 | |
| XCTAssertEqual(textField.minimumLines, 3) | |
| textField.minimumLines = 0 | |
| XCTAssertEqual(textField.minimumLines, 1) | |
| } | |
| } |