mirror of
https://github.com/material-components/material-components-ios.git
synced 2026-02-20 08:27:32 +08:00
* [TextFields] Beginning to update label fonts API. * [TextFields] Default text input controller has font defaults. * [TextFields] Correcting types. * [TextFields] More implementation of custom fonts. * [TextFields] Type correction. * [TextFields] Adding unit tests for custom fonts. * [TextFields] Implementing new API.
327 lines
19 KiB
Swift
327 lines
19 KiB
Swift
/*
|
|
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.
|
|
*/
|
|
|
|
// swiftlint:disable function_body_length
|
|
// swiftlint:disable type_body_length
|
|
|
|
import XCTest
|
|
import MaterialComponents.MaterialPalettes
|
|
import MaterialComponents.MaterialTextFields
|
|
import MaterialComponents.MaterialTypography
|
|
|
|
class TextFieldControllerClassPropertiesLegacyTests: XCTestCase {
|
|
override func tearDown() {
|
|
super.tearDown()
|
|
|
|
MDCTextInputControllerLegacyDefault.errorColorDefault = nil
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderColorDefault = nil
|
|
MDCTextInputControllerLegacyDefault.mdc_adjustsFontForContentSizeCategoryDefault = true
|
|
MDCTextInputControllerLegacyDefault.activeColorDefault = nil
|
|
MDCTextInputControllerLegacyDefault.normalColorDefault = nil
|
|
MDCTextInputControllerLegacyDefault.underlineViewModeDefault = .whileEditing
|
|
MDCTextInputControllerLegacyDefault.leadingUnderlineLabelTextColorDefault = nil
|
|
MDCTextInputControllerLegacyDefault.trailingUnderlineLabelTextColorDefault = nil
|
|
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderFontDefault = nil
|
|
MDCTextInputControllerLegacyDefault.leadingUnderlineLabelFontDefault = nil
|
|
MDCTextInputControllerLegacyDefault.trailingUnderlineLabelFontDefault = nil
|
|
|
|
MDCTextInputControllerLegacyDefault.floatingPlaceholderNormalColorDefault = nil
|
|
MDCTextInputControllerLegacyDefault.floatingPlaceholderScaleDefault = 0.75
|
|
MDCTextInputControllerLegacyDefault.isFloatingEnabledDefault = true
|
|
|
|
MDCTextInputControllerLegacyFullWidth.errorColorDefault = nil
|
|
MDCTextInputControllerLegacyFullWidth.inlinePlaceholderColorDefault = nil
|
|
MDCTextInputControllerLegacyFullWidth.mdc_adjustsFontForContentSizeCategoryDefault = true
|
|
MDCTextInputControllerLegacyFullWidth.activeColorDefault = nil
|
|
MDCTextInputControllerLegacyFullWidth.normalColorDefault = nil
|
|
MDCTextInputControllerLegacyFullWidth.underlineViewModeDefault = .never
|
|
|
|
MDCTextInputControllerLegacyFullWidth.leadingUnderlineLabelTextColorDefault = nil
|
|
MDCTextInputControllerLegacyFullWidth.trailingUnderlineLabelTextColorDefault = nil
|
|
|
|
MDCTextInputControllerLegacyFullWidth.inlinePlaceholderFontDefault = nil
|
|
MDCTextInputControllerLegacyFullWidth.leadingUnderlineLabelFontDefault = nil
|
|
MDCTextInputControllerLegacyFullWidth.trailingUnderlineLabelFontDefault = nil
|
|
}
|
|
|
|
func testLegacyDefault() {
|
|
|
|
// Test the values of the class properties.
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.errorColorDefault, MDCPalette.red.accent400)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.inlinePlaceholderColorDefault,
|
|
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.mdc_adjustsFontForContentSizeCategoryDefault, true)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.activeColorDefault,
|
|
MDCPalette.blue.accent700)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.normalColorDefault, .lightGray)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.underlineViewModeDefault, .whileEditing)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.leadingUnderlineLabelTextColorDefault,
|
|
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.trailingUnderlineLabelTextColorDefault,
|
|
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.leadingUnderlineLabelTextColorDefault,
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderColorDefault)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.trailingUnderlineLabelTextColorDefault,
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderColorDefault)
|
|
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.inlinePlaceholderFontDefault,
|
|
UIFont.mdc_preferredFont(forMaterialTextStyle: .body1))
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.leadingUnderlineLabelFontDefault,
|
|
MDCTextInputControllerLegacyDefault.trailingUnderlineLabelFontDefault)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.leadingUnderlineLabelFontDefault,
|
|
UIFont.mdc_preferredFont(forMaterialTextStyle: .caption))
|
|
|
|
// Default specific properties
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.floatingPlaceholderNormalColorDefault,
|
|
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
|
|
XCTAssertEqual(Float(MDCTextInputControllerLegacyDefault.floatingPlaceholderScaleDefault), 0.75)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.isFloatingEnabledDefault, true)
|
|
|
|
// Test the use of the class properties.
|
|
let textField = MDCTextField()
|
|
var controller = MDCTextInputControllerLegacyDefault(textInput: textField)
|
|
|
|
XCTAssertEqual(controller.errorColor, MDCTextInputControllerLegacyDefault.errorColorDefault)
|
|
XCTAssertEqual(controller.inlinePlaceholderColor,
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderColorDefault)
|
|
XCTAssertEqual(controller.mdc_adjustsFontForContentSizeCategory,
|
|
MDCTextInputControllerLegacyDefault.mdc_adjustsFontForContentSizeCategoryDefault)
|
|
XCTAssertEqual(controller.activeColor,
|
|
MDCTextInputControllerLegacyDefault.activeColorDefault)
|
|
XCTAssertEqual(controller.normalColor,
|
|
MDCTextInputControllerLegacyDefault.normalColorDefault)
|
|
XCTAssertEqual(controller.underlineViewMode,
|
|
MDCTextInputControllerLegacyDefault.underlineViewModeDefault)
|
|
XCTAssertEqual(controller.leadingUnderlineLabelTextColor,
|
|
MDCTextInputControllerLegacyDefault.leadingUnderlineLabelTextColorDefault)
|
|
XCTAssertEqual(controller.trailingUnderlineLabelTextColor,
|
|
MDCTextInputControllerLegacyDefault.trailingUnderlineLabelTextColorDefault)
|
|
|
|
XCTAssertEqual(controller.inlinePlaceholderFont,
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderFontDefault)
|
|
XCTAssertEqual(controller.leadingUnderlineLabelFont,
|
|
MDCTextInputControllerLegacyDefault.leadingUnderlineLabelFontDefault)
|
|
XCTAssertEqual(controller.trailingUnderlineLabelFont,
|
|
MDCTextInputControllerLegacyDefault.trailingUnderlineLabelFontDefault)
|
|
|
|
// Default specific properties
|
|
XCTAssertEqual(controller.floatingPlaceholderNormalColor,
|
|
MDCTextInputControllerLegacyDefault.floatingPlaceholderNormalColorDefault)
|
|
XCTAssertEqual(controller.isFloatingEnabled,
|
|
MDCTextInputControllerLegacyDefault.isFloatingEnabledDefault)
|
|
|
|
// Test the changes to the class properties.
|
|
MDCTextInputControllerLegacyDefault.errorColorDefault = .green
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.errorColorDefault, .green)
|
|
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderColorDefault = .orange
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.inlinePlaceholderColorDefault, .orange)
|
|
|
|
MDCTextInputControllerLegacyDefault.mdc_adjustsFontForContentSizeCategoryDefault = false
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.mdc_adjustsFontForContentSizeCategoryDefault,
|
|
false)
|
|
|
|
MDCTextInputControllerLegacyDefault.activeColorDefault = .purple
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.activeColorDefault, .purple)
|
|
|
|
MDCTextInputControllerLegacyDefault.normalColorDefault = .white
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.normalColorDefault, .white)
|
|
|
|
MDCTextInputControllerLegacyDefault.underlineViewModeDefault = .unlessEditing
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.underlineViewModeDefault, .unlessEditing)
|
|
|
|
MDCTextInputControllerLegacyDefault.leadingUnderlineLabelTextColorDefault = .blue
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.leadingUnderlineLabelTextColorDefault, .blue)
|
|
|
|
MDCTextInputControllerLegacyDefault.trailingUnderlineLabelTextColorDefault = .white
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.trailingUnderlineLabelTextColorDefault, .white)
|
|
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 4)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.inlinePlaceholderFontDefault,
|
|
UIFont.systemFont(ofSize: 4))
|
|
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 5)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.inlinePlaceholderFontDefault,
|
|
UIFont.systemFont(ofSize: 5))
|
|
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 6)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.inlinePlaceholderFontDefault,
|
|
UIFont.systemFont(ofSize: 6))
|
|
|
|
// Default specific properties
|
|
MDCTextInputControllerLegacyDefault.floatingPlaceholderNormalColorDefault = .red
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.floatingPlaceholderNormalColorDefault, .red)
|
|
|
|
MDCTextInputControllerLegacyDefault.floatingPlaceholderScaleDefault = 0.6
|
|
XCTAssertEqual(Float(MDCTextInputControllerLegacyDefault.floatingPlaceholderScaleDefault), 0.6)
|
|
|
|
MDCTextInputControllerLegacyDefault.isFloatingEnabledDefault = false
|
|
XCTAssertEqual(MDCTextInputControllerLegacyDefault.isFloatingEnabledDefault, false)
|
|
|
|
// Test the changes to the class properties can propogate to an instance.
|
|
controller = MDCTextInputControllerLegacyDefault(textInput: textField)
|
|
|
|
XCTAssertEqual(controller.errorColor, MDCTextInputControllerLegacyDefault.errorColorDefault)
|
|
XCTAssertEqual(controller.inlinePlaceholderColor,
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderColorDefault)
|
|
XCTAssertEqual(controller.mdc_adjustsFontForContentSizeCategory,
|
|
MDCTextInputControllerLegacyDefault.mdc_adjustsFontForContentSizeCategoryDefault)
|
|
XCTAssertEqual(controller.activeColor,
|
|
MDCTextInputControllerLegacyDefault.activeColorDefault)
|
|
XCTAssertEqual(controller.normalColor,
|
|
MDCTextInputControllerLegacyDefault.normalColorDefault)
|
|
XCTAssertEqual(controller.underlineViewMode,
|
|
MDCTextInputControllerLegacyDefault.underlineViewModeDefault)
|
|
XCTAssertEqual(controller.leadingUnderlineLabelTextColor,
|
|
MDCTextInputControllerLegacyDefault.leadingUnderlineLabelTextColorDefault)
|
|
XCTAssertEqual(controller.trailingUnderlineLabelTextColor,
|
|
MDCTextInputControllerLegacyDefault.trailingUnderlineLabelTextColorDefault)
|
|
|
|
XCTAssertEqual(controller.inlinePlaceholderFont,
|
|
MDCTextInputControllerLegacyDefault.inlinePlaceholderFontDefault)
|
|
XCTAssertEqual(controller.leadingUnderlineLabelFont,
|
|
MDCTextInputControllerLegacyDefault.leadingUnderlineLabelFontDefault)
|
|
XCTAssertEqual(controller.trailingUnderlineLabelFont,
|
|
MDCTextInputControllerLegacyDefault.trailingUnderlineLabelFontDefault)
|
|
|
|
// Default specific properties
|
|
XCTAssertEqual(controller.floatingPlaceholderNormalColor,
|
|
MDCTextInputControllerLegacyDefault.floatingPlaceholderNormalColorDefault)
|
|
XCTAssertEqual(controller.isFloatingEnabled,
|
|
MDCTextInputControllerLegacyDefault.isFloatingEnabledDefault)
|
|
}
|
|
|
|
func testLegacyFullWidth() {
|
|
// Test the values of the class properties.
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.disabledColorDefault, .clear)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.errorColorDefault, MDCPalette.red.accent400)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.inlinePlaceholderColorDefault,
|
|
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.mdc_adjustsFontForContentSizeCategoryDefault,
|
|
true)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.activeColorDefault, .clear)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.normalColorDefault, .clear)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.underlineViewModeDefault, .never)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.leadingUnderlineLabelTextColorDefault, .clear)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.trailingUnderlineLabelTextColorDefault,
|
|
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
|
|
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.inlinePlaceholderFontDefault,
|
|
UIFont.mdc_preferredFont(forMaterialTextStyle: .body1))
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.leadingUnderlineLabelFontDefault,
|
|
MDCTextInputControllerLegacyFullWidth.trailingUnderlineLabelFontDefault)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.leadingUnderlineLabelFontDefault,
|
|
UIFont.mdc_preferredFont(forMaterialTextStyle: .caption))
|
|
|
|
// Test the use of the class properties.
|
|
let textField = MDCTextField()
|
|
var controller = MDCTextInputControllerLegacyFullWidth(textInput: textField)
|
|
|
|
XCTAssertEqual(controller.disabledColor, .clear)
|
|
XCTAssertEqual(controller.errorColor, MDCTextInputControllerLegacyFullWidth.errorColorDefault)
|
|
XCTAssertEqual(controller.inlinePlaceholderColor,
|
|
MDCTextInputControllerLegacyFullWidth.inlinePlaceholderColorDefault)
|
|
XCTAssertEqual(controller.mdc_adjustsFontForContentSizeCategory,
|
|
MDCTextInputControllerLegacyFullWidth.mdc_adjustsFontForContentSizeCategoryDefault)
|
|
XCTAssertEqual(controller.activeColor,
|
|
MDCTextInputControllerLegacyFullWidth.activeColorDefault)
|
|
XCTAssertEqual(controller.normalColor,
|
|
MDCTextInputControllerLegacyFullWidth.normalColorDefault)
|
|
XCTAssertEqual(controller.underlineViewMode,
|
|
MDCTextInputControllerLegacyFullWidth.underlineViewModeDefault)
|
|
XCTAssertEqual(controller.leadingUnderlineLabelTextColor,
|
|
MDCTextInputControllerLegacyFullWidth.leadingUnderlineLabelTextColorDefault)
|
|
XCTAssertEqual(controller.trailingUnderlineLabelTextColor,
|
|
MDCTextInputControllerLegacyFullWidth.trailingUnderlineLabelTextColorDefault)
|
|
|
|
XCTAssertEqual(controller.inlinePlaceholderFont,
|
|
MDCTextInputControllerLegacyFullWidth.inlinePlaceholderFontDefault)
|
|
XCTAssertEqual(controller.leadingUnderlineLabelFont,
|
|
nil)
|
|
XCTAssertEqual(controller.trailingUnderlineLabelFont,
|
|
MDCTextInputControllerLegacyFullWidth.trailingUnderlineLabelFontDefault)
|
|
|
|
// Test the changes to the class properties.
|
|
MDCTextInputControllerLegacyFullWidth.disabledColorDefault = .red
|
|
XCTAssertNotEqual(MDCTextInputControllerLegacyFullWidth.disabledColorDefault, .red)
|
|
|
|
MDCTextInputControllerLegacyFullWidth.errorColorDefault = .green
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.errorColorDefault, .green)
|
|
|
|
MDCTextInputControllerLegacyFullWidth.inlinePlaceholderColorDefault = .orange
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.inlinePlaceholderColorDefault, .orange)
|
|
|
|
MDCTextInputControllerLegacyFullWidth.mdc_adjustsFontForContentSizeCategoryDefault = false
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.mdc_adjustsFontForContentSizeCategoryDefault,
|
|
false)
|
|
|
|
MDCTextInputControllerLegacyFullWidth.activeColorDefault = .purple
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.activeColorDefault, .clear)
|
|
|
|
MDCTextInputControllerLegacyFullWidth.normalColorDefault = .white
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.normalColorDefault, .clear)
|
|
|
|
MDCTextInputControllerLegacyFullWidth.underlineViewModeDefault = .unlessEditing
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.underlineViewModeDefault, .never)
|
|
|
|
MDCTextInputControllerLegacyFullWidth.leadingUnderlineLabelTextColorDefault = .brown
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.leadingUnderlineLabelTextColorDefault, .clear)
|
|
|
|
MDCTextInputControllerLegacyFullWidth.trailingUnderlineLabelTextColorDefault = .cyan
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.trailingUnderlineLabelTextColorDefault, .cyan)
|
|
|
|
MDCTextInputControllerLegacyFullWidth.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 4)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.inlinePlaceholderFontDefault,
|
|
UIFont.systemFont(ofSize: 4))
|
|
|
|
MDCTextInputControllerLegacyFullWidth.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 5)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.inlinePlaceholderFontDefault,
|
|
UIFont.systemFont(ofSize: 5))
|
|
|
|
MDCTextInputControllerLegacyFullWidth.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 6)
|
|
XCTAssertEqual(MDCTextInputControllerLegacyFullWidth.inlinePlaceholderFontDefault,
|
|
UIFont.systemFont(ofSize: 6))
|
|
|
|
// Test the changes to the class properties can propogate to an instance.
|
|
controller = MDCTextInputControllerLegacyFullWidth(textInput: textField)
|
|
|
|
XCTAssertEqual(controller.disabledColor, .clear)
|
|
XCTAssertEqual(controller.errorColor, MDCTextInputControllerLegacyFullWidth.errorColorDefault)
|
|
XCTAssertEqual(controller.inlinePlaceholderColor,
|
|
MDCTextInputControllerLegacyFullWidth.inlinePlaceholderColorDefault)
|
|
XCTAssertEqual(controller.mdc_adjustsFontForContentSizeCategory,
|
|
MDCTextInputControllerLegacyFullWidth.mdc_adjustsFontForContentSizeCategoryDefault)
|
|
XCTAssertEqual(controller.activeColor,
|
|
MDCTextInputControllerLegacyFullWidth.activeColorDefault)
|
|
XCTAssertEqual(controller.normalColor,
|
|
MDCTextInputControllerLegacyFullWidth.normalColorDefault)
|
|
XCTAssertEqual(controller.underlineViewMode,
|
|
MDCTextInputControllerLegacyFullWidth.underlineViewModeDefault)
|
|
XCTAssertEqual(controller.leadingUnderlineLabelTextColor,
|
|
MDCTextInputControllerLegacyFullWidth.leadingUnderlineLabelTextColorDefault)
|
|
XCTAssertEqual(controller.trailingUnderlineLabelTextColor,
|
|
MDCTextInputControllerLegacyFullWidth.trailingUnderlineLabelTextColorDefault)
|
|
|
|
XCTAssertEqual(controller.inlinePlaceholderFont,
|
|
MDCTextInputControllerLegacyFullWidth.inlinePlaceholderFontDefault)
|
|
XCTAssertEqual(controller.leadingUnderlineLabelFont,
|
|
nil)
|
|
XCTAssertEqual(controller.trailingUnderlineLabelFont,
|
|
MDCTextInputControllerLegacyFullWidth.trailingUnderlineLabelFontDefault)
|
|
}
|
|
}
|