material-components_materia.../components/TextFields/tests/unit/TextFieldControllerClassPropertiesTests.swift
Will Larche 62d5a4fa85 [TextFields] Feature branch merge: Clarity, Safety, Docs, Comments, Formatting (#2634)
* [TextFields] Full width changes. (#2590)

* [TextFields] Propagating changes to themers. (#2585)

* [TextFields] Propagating changes to themers.

* [TextFields] Updates to themer examples.

* [TextFields] Base controller class files (#2582)

* [TextFields] New Base class files.

* [TextFields] Naming corrections.

* [TextFields] Formatting.

* [TextFields] Replacing -Default with -Underline (#2583)

* [TextFields] Adding underline controller.

* [TextFields] Changes to umbrella import file and removing default controllers.

* [TextFields] Renaming one file.

* [TextFields] Updated controller headers. (#2584)

* [TextFields] Updating examples. (#2586)

* [TextFields] Running clang-format on the elements. (#2587)

* [TextFields] Running format on the element itself.

* [TextFields] Minor formatting.

* [TextFields] Updating tests and formatting. (#2588)

* [TextFields] Filled controller changes. (#2589)

* [TextFields] Legacy controller comments, naming, and formatting. (#2591)

* [TextFields] Legacy controller comments, naming, and formatting.

* [TextFields] Adding safety to legacy default init.

* [TextFields] Adding safety to Legacy Default init.

* [TextFields] Formatting Legacy Default.

* [TextFields] Formatting Legacy Full Width.

* [TextFields] Text area comments, updated super, naming, formatting. (#2593)

* [TextFields] Text area updates.

* [TextFields] Clarifying comment.

* [TextFields] Outline changes and formatting. (#2592)

* [TextFields] Updates to styling doc. (#2594)

* [TextFields] Updates to styling doc.

* [TextFields] Updating doc.

* [TextFields] Full width comments, safety, formatting, and underline support. (#2633)

* [TextFields] Adding safety to full width.

* [TextFields] Formatting Full Width.

* [TextFields] PR feedback.

* [TextFields] Safety in init of Base (#2632)

* [TextFields] Adding safety to base init.

* [TextFields] Formatting Base.

* [TextFields] Updates to controller header. (#2636)

* [TextFields] Updates to controller header.

* [TextFields] Updating misleading comments.

* [TextFields] Supplemental file name changes. (#2635)
2017-12-12 11:07:48 -05:00

368 lines
21 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 TextFieldControllerClassPropertiesTests: XCTestCase {
override func tearDown() {
super.tearDown()
MDCTextInputControllerUnderline.roundedCornersDefault = []
MDCTextInputControllerUnderline.errorColorDefault = nil
MDCTextInputControllerUnderline.inlinePlaceholderColorDefault = nil
MDCTextInputControllerUnderline.mdc_adjustsFontForContentSizeCategoryDefault = true
MDCTextInputControllerUnderline.activeColorDefault = nil
MDCTextInputControllerUnderline.normalColorDefault = nil
MDCTextInputControllerUnderline.disabledColorDefault = nil
MDCTextInputControllerUnderline.underlineViewModeDefault = .whileEditing
MDCTextInputControllerUnderline.leadingUnderlineLabelTextColorDefault = nil
MDCTextInputControllerUnderline.trailingUnderlineLabelTextColorDefault = nil
MDCTextInputControllerUnderline.inlinePlaceholderFontDefault = nil
MDCTextInputControllerUnderline.leadingUnderlineLabelFontDefault = nil
MDCTextInputControllerUnderline.trailingUnderlineLabelFontDefault = nil
MDCTextInputControllerUnderline.floatingPlaceholderNormalColorDefault = nil
MDCTextInputControllerUnderline.floatingPlaceholderScaleDefault = 0.75
MDCTextInputControllerUnderline.isFloatingEnabledDefault = true
MDCTextInputControllerFullWidth.errorColorDefault = nil
MDCTextInputControllerFullWidth.inlinePlaceholderColorDefault = nil
MDCTextInputControllerFullWidth.mdc_adjustsFontForContentSizeCategoryDefault = true
MDCTextInputControllerFullWidth.activeColorDefault = nil
MDCTextInputControllerFullWidth.normalColorDefault = nil
MDCTextInputControllerFullWidth.disabledColorDefault = nil
MDCTextInputControllerFullWidth.underlineViewModeDefault = .never
MDCTextInputControllerFullWidth.leadingUnderlineLabelTextColorDefault = nil
MDCTextInputControllerFullWidth.trailingUnderlineLabelTextColorDefault = nil
MDCTextInputControllerFullWidth.inlinePlaceholderFontDefault = nil
MDCTextInputControllerFullWidth.leadingUnderlineLabelFontDefault = nil
MDCTextInputControllerFullWidth.trailingUnderlineLabelFontDefault = nil
}
func testUnderline() {
// Test the values of the class properties.
XCTAssertEqual(MDCTextInputControllerUnderline.errorColorDefault, MDCPalette.red.accent400)
XCTAssertEqual(MDCTextInputControllerUnderline.inlinePlaceholderColorDefault,
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
XCTAssertEqual(MDCTextInputControllerUnderline.mdc_adjustsFontForContentSizeCategoryDefault, true)
XCTAssertEqual(MDCTextInputControllerUnderline.activeColorDefault,
MDCPalette.blue.accent700)
XCTAssertEqual(MDCTextInputControllerUnderline.normalColorDefault, .lightGray)
XCTAssertEqual(MDCTextInputControllerUnderline.underlineHeightActiveDefault, 2)
XCTAssertEqual(MDCTextInputControllerUnderline.underlineHeightNormalDefault, 1)
XCTAssertEqual(MDCTextInputControllerUnderline.underlineViewModeDefault, .whileEditing)
XCTAssertEqual(MDCTextInputControllerUnderline.leadingUnderlineLabelTextColorDefault,
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
XCTAssertEqual(MDCTextInputControllerUnderline.trailingUnderlineLabelTextColorDefault,
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
XCTAssertEqual(MDCTextInputControllerUnderline.leadingUnderlineLabelTextColorDefault,
MDCTextInputControllerUnderline.inlinePlaceholderColorDefault)
XCTAssertEqual(MDCTextInputControllerUnderline.trailingUnderlineLabelTextColorDefault,
MDCTextInputControllerUnderline.inlinePlaceholderColorDefault)
XCTAssertEqual(MDCTextInputControllerUnderline.inlinePlaceholderFontDefault,
UIFont.mdc_preferredFont(forMaterialTextStyle: .body1))
XCTAssertEqual(MDCTextInputControllerUnderline.leadingUnderlineLabelFontDefault,
MDCTextInputControllerUnderline.trailingUnderlineLabelFontDefault)
XCTAssertEqual(MDCTextInputControllerUnderline.leadingUnderlineLabelFontDefault,
UIFont.mdc_preferredFont(forMaterialTextStyle: .caption))
// Default specific properties
XCTAssertEqual(MDCTextInputControllerUnderline.floatingPlaceholderNormalColorDefault,
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
XCTAssertEqual(Float(MDCTextInputControllerUnderline.floatingPlaceholderScaleDefault), 0.75)
XCTAssertEqual(MDCTextInputControllerUnderline.isFloatingEnabledDefault, true)
XCTAssertEqual(MDCTextInputControllerUnderline.roundedCornersDefault, [])
// Test the use of the class properties.
let textField = MDCTextField()
var controller = MDCTextInputControllerUnderline(textInput: textField)
XCTAssertEqual(controller.errorColor, MDCTextInputControllerUnderline.errorColorDefault)
XCTAssertEqual(controller.inlinePlaceholderColor,
MDCTextInputControllerUnderline.inlinePlaceholderColorDefault)
XCTAssertEqual(controller.mdc_adjustsFontForContentSizeCategory,
MDCTextInputControllerUnderline.mdc_adjustsFontForContentSizeCategoryDefault)
XCTAssertEqual(controller.activeColor,
MDCTextInputControllerUnderline.activeColorDefault)
XCTAssertEqual(controller.normalColor,
MDCTextInputControllerUnderline.normalColorDefault)
XCTAssertEqual(controller.underlineHeightActive,
MDCTextInputControllerUnderline.underlineHeightActiveDefault)
XCTAssertEqual(controller.underlineHeightNormal,
MDCTextInputControllerUnderline.underlineHeightNormalDefault)
XCTAssertEqual(controller.underlineViewMode,
MDCTextInputControllerUnderline.underlineViewModeDefault)
XCTAssertEqual(controller.leadingUnderlineLabelTextColor,
MDCTextInputControllerUnderline.leadingUnderlineLabelTextColorDefault)
XCTAssertEqual(controller.trailingUnderlineLabelTextColor,
MDCTextInputControllerUnderline.trailingUnderlineLabelTextColorDefault)
XCTAssertEqual(controller.inlinePlaceholderFont,
MDCTextInputControllerUnderline.inlinePlaceholderFontDefault)
XCTAssertEqual(controller.leadingUnderlineLabelFont,
MDCTextInputControllerUnderline.leadingUnderlineLabelFontDefault)
XCTAssertEqual(controller.trailingUnderlineLabelFont,
MDCTextInputControllerUnderline.trailingUnderlineLabelFontDefault)
// Default specific properties
XCTAssertEqual(controller.floatingPlaceholderNormalColor,
MDCTextInputControllerUnderline.floatingPlaceholderNormalColorDefault)
XCTAssertEqual(controller.isFloatingEnabled,
MDCTextInputControllerUnderline.isFloatingEnabledDefault)
XCTAssertEqual(controller.roundedCorners, MDCTextInputControllerUnderline.roundedCornersDefault)
// Test the changes to the class properties.
MDCTextInputControllerUnderline.errorColorDefault = .green
XCTAssertEqual(MDCTextInputControllerUnderline.errorColorDefault, .green)
MDCTextInputControllerUnderline.inlinePlaceholderColorDefault = .orange
XCTAssertEqual(MDCTextInputControllerUnderline.inlinePlaceholderColorDefault, .orange)
MDCTextInputControllerUnderline.mdc_adjustsFontForContentSizeCategoryDefault = false
XCTAssertEqual(MDCTextInputControllerUnderline.mdc_adjustsFontForContentSizeCategoryDefault,
false)
MDCTextInputControllerUnderline.activeColorDefault = .purple
XCTAssertEqual(MDCTextInputControllerUnderline.activeColorDefault, .purple)
MDCTextInputControllerUnderline.normalColorDefault = .white
XCTAssertEqual(MDCTextInputControllerUnderline.normalColorDefault, .white)
MDCTextInputControllerUnderline.underlineHeightActiveDefault = 11
XCTAssertEqual(MDCTextInputControllerUnderline.underlineHeightActiveDefault, 11)
MDCTextInputControllerUnderline.underlineHeightNormalDefault = 5
XCTAssertEqual(MDCTextInputControllerUnderline.underlineHeightNormalDefault, 5)
MDCTextInputControllerUnderline.underlineViewModeDefault = .unlessEditing
XCTAssertEqual(MDCTextInputControllerUnderline.underlineViewModeDefault, .unlessEditing)
MDCTextInputControllerUnderline.leadingUnderlineLabelTextColorDefault = .blue
XCTAssertEqual(MDCTextInputControllerUnderline.leadingUnderlineLabelTextColorDefault, .blue)
MDCTextInputControllerUnderline.trailingUnderlineLabelTextColorDefault = .white
XCTAssertEqual(MDCTextInputControllerUnderline.trailingUnderlineLabelTextColorDefault, .white)
MDCTextInputControllerUnderline.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 4)
XCTAssertEqual(MDCTextInputControllerUnderline.inlinePlaceholderFontDefault,
UIFont.systemFont(ofSize: 4))
MDCTextInputControllerUnderline.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 5)
XCTAssertEqual(MDCTextInputControllerUnderline.inlinePlaceholderFontDefault,
UIFont.systemFont(ofSize: 5))
MDCTextInputControllerUnderline.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 6)
XCTAssertEqual(MDCTextInputControllerUnderline.inlinePlaceholderFontDefault,
UIFont.systemFont(ofSize: 6))
// Default specific properties
MDCTextInputControllerUnderline.floatingPlaceholderNormalColorDefault = .red
XCTAssertEqual(MDCTextInputControllerUnderline.floatingPlaceholderNormalColorDefault, .red)
MDCTextInputControllerUnderline.floatingPlaceholderScaleDefault = 0.6
XCTAssertEqual(Float(MDCTextInputControllerUnderline.floatingPlaceholderScaleDefault), 0.6)
MDCTextInputControllerUnderline.isFloatingEnabledDefault = false
XCTAssertEqual(MDCTextInputControllerUnderline.isFloatingEnabledDefault, false)
MDCTextInputControllerUnderline.roundedCornersDefault = [.bottomRight]
XCTAssertEqual(MDCTextInputControllerUnderline.roundedCornersDefault, [.bottomRight])
// Test that the changes to the class properties can propogate to an instance.
controller = MDCTextInputControllerUnderline(textInput: textField)
XCTAssertEqual(controller.errorColor, MDCTextInputControllerUnderline.errorColorDefault)
XCTAssertEqual(controller.inlinePlaceholderColor,
MDCTextInputControllerUnderline.inlinePlaceholderColorDefault)
XCTAssertEqual(controller.mdc_adjustsFontForContentSizeCategory,
MDCTextInputControllerUnderline.mdc_adjustsFontForContentSizeCategoryDefault)
XCTAssertEqual(controller.activeColor,
MDCTextInputControllerUnderline.activeColorDefault)
XCTAssertEqual(controller.normalColor,
MDCTextInputControllerUnderline.normalColorDefault)
XCTAssertEqual(controller.underlineHeightActive,
MDCTextInputControllerUnderline.underlineHeightActiveDefault)
XCTAssertEqual(controller.underlineHeightNormal,
MDCTextInputControllerUnderline.underlineHeightNormalDefault)
XCTAssertEqual(controller.underlineViewMode,
MDCTextInputControllerUnderline.underlineViewModeDefault)
XCTAssertEqual(controller.leadingUnderlineLabelTextColor,
MDCTextInputControllerUnderline.leadingUnderlineLabelTextColorDefault)
XCTAssertEqual(controller.trailingUnderlineLabelTextColor,
MDCTextInputControllerUnderline.trailingUnderlineLabelTextColorDefault)
XCTAssertEqual(controller.inlinePlaceholderFont,
MDCTextInputControllerUnderline.inlinePlaceholderFontDefault)
XCTAssertEqual(controller.leadingUnderlineLabelFont,
MDCTextInputControllerUnderline.leadingUnderlineLabelFontDefault)
XCTAssertEqual(controller.trailingUnderlineLabelFont,
MDCTextInputControllerUnderline.trailingUnderlineLabelFontDefault)
// Default specific properties
XCTAssertEqual(controller.floatingPlaceholderNormalColor,
MDCTextInputControllerUnderline.floatingPlaceholderNormalColorDefault)
XCTAssertEqual(controller.isFloatingEnabled,
MDCTextInputControllerUnderline.isFloatingEnabledDefault)
XCTAssertEqual(controller.roundedCorners, MDCTextInputControllerUnderline.roundedCornersDefault)
}
func testFullWidth() {
// Test the values of the class properties.
XCTAssertEqual(MDCTextInputControllerFullWidth.disabledColorDefault, .clear)
XCTAssertEqual(MDCTextInputControllerFullWidth.errorColorDefault, MDCPalette.red.accent400)
XCTAssertEqual(MDCTextInputControllerFullWidth.inlinePlaceholderColorDefault,
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
XCTAssertEqual(MDCTextInputControllerFullWidth.mdc_adjustsFontForContentSizeCategoryDefault,
true)
XCTAssertEqual(MDCTextInputControllerFullWidth.activeColorDefault, .clear)
XCTAssertEqual(MDCTextInputControllerFullWidth.normalColorDefault, .clear)
XCTAssertEqual(MDCTextInputControllerFullWidth.underlineHeightActiveDefault, 0)
XCTAssertEqual(MDCTextInputControllerFullWidth.underlineHeightNormalDefault, 0)
XCTAssertEqual(MDCTextInputControllerFullWidth.underlineViewModeDefault, .never)
XCTAssertEqual(MDCTextInputControllerFullWidth.leadingUnderlineLabelTextColorDefault, .clear)
XCTAssertEqual(MDCTextInputControllerFullWidth.trailingUnderlineLabelTextColorDefault,
UIColor(white: 0, alpha: CGFloat(Float(0.54))))
XCTAssertEqual(MDCTextInputControllerFullWidth.inlinePlaceholderFontDefault,
UIFont.mdc_preferredFont(forMaterialTextStyle: .body1))
XCTAssertEqual(MDCTextInputControllerFullWidth.leadingUnderlineLabelFontDefault,
MDCTextInputControllerFullWidth.trailingUnderlineLabelFontDefault)
XCTAssertEqual(MDCTextInputControllerFullWidth.leadingUnderlineLabelFontDefault,
UIFont.mdc_preferredFont(forMaterialTextStyle: .caption))
// Test the use of the class properties.
let textField = MDCTextField()
var controller = MDCTextInputControllerFullWidth(textInput: textField)
XCTAssertEqual(controller.disabledColor, .clear)
XCTAssertEqual(controller.errorColor, MDCTextInputControllerFullWidth.errorColorDefault)
XCTAssertEqual(controller.inlinePlaceholderColor,
MDCTextInputControllerFullWidth.inlinePlaceholderColorDefault)
XCTAssertEqual(controller.mdc_adjustsFontForContentSizeCategory,
MDCTextInputControllerFullWidth.mdc_adjustsFontForContentSizeCategoryDefault)
XCTAssertEqual(controller.activeColor,
MDCTextInputControllerFullWidth.activeColorDefault)
XCTAssertEqual(controller.normalColor,
MDCTextInputControllerFullWidth.normalColorDefault)
XCTAssertEqual(controller.underlineHeightActive,
MDCTextInputControllerFullWidth.underlineHeightActiveDefault)
XCTAssertEqual(controller.underlineHeightNormal,
MDCTextInputControllerFullWidth.underlineHeightNormalDefault)
XCTAssertEqual(controller.underlineViewMode,
MDCTextInputControllerFullWidth.underlineViewModeDefault)
XCTAssertEqual(controller.leadingUnderlineLabelTextColor,
MDCTextInputControllerFullWidth.leadingUnderlineLabelTextColorDefault)
XCTAssertEqual(controller.trailingUnderlineLabelTextColor,
MDCTextInputControllerFullWidth.trailingUnderlineLabelTextColorDefault)
XCTAssertEqual(controller.inlinePlaceholderFont,
MDCTextInputControllerFullWidth.inlinePlaceholderFontDefault)
XCTAssertEqual(controller.leadingUnderlineLabelFont,
nil)
XCTAssertEqual(controller.trailingUnderlineLabelFont,
MDCTextInputControllerFullWidth.trailingUnderlineLabelFontDefault)
// Test the changes to the class properties.
MDCTextInputControllerFullWidth.disabledColorDefault = .red
XCTAssertNotEqual(MDCTextInputControllerFullWidth.disabledColorDefault, .red)
MDCTextInputControllerFullWidth.errorColorDefault = .green
XCTAssertEqual(MDCTextInputControllerFullWidth.errorColorDefault, .green)
MDCTextInputControllerFullWidth.inlinePlaceholderColorDefault = .orange
XCTAssertEqual(MDCTextInputControllerFullWidth.inlinePlaceholderColorDefault, .orange)
MDCTextInputControllerFullWidth.mdc_adjustsFontForContentSizeCategoryDefault = false
XCTAssertEqual(MDCTextInputControllerFullWidth.mdc_adjustsFontForContentSizeCategoryDefault,
false)
MDCTextInputControllerFullWidth.activeColorDefault = .purple
XCTAssertEqual(MDCTextInputControllerFullWidth.activeColorDefault, .clear)
MDCTextInputControllerFullWidth.normalColorDefault = .white
XCTAssertEqual(MDCTextInputControllerFullWidth.normalColorDefault, .clear)
MDCTextInputControllerFullWidth.underlineHeightActiveDefault = 9
XCTAssertEqual(MDCTextInputControllerFullWidth.underlineHeightActiveDefault, 0)
MDCTextInputControllerFullWidth.underlineHeightNormalDefault = 17
XCTAssertEqual(MDCTextInputControllerFullWidth.underlineHeightNormalDefault, 0)
MDCTextInputControllerFullWidth.underlineViewModeDefault = .unlessEditing
XCTAssertEqual(MDCTextInputControllerFullWidth.underlineViewModeDefault, .never)
MDCTextInputControllerFullWidth.leadingUnderlineLabelTextColorDefault = .brown
XCTAssertEqual(MDCTextInputControllerFullWidth.leadingUnderlineLabelTextColorDefault, .clear)
MDCTextInputControllerFullWidth.trailingUnderlineLabelTextColorDefault = .cyan
XCTAssertEqual(MDCTextInputControllerFullWidth.trailingUnderlineLabelTextColorDefault, .cyan)
MDCTextInputControllerFullWidth.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 4)
XCTAssertEqual(MDCTextInputControllerFullWidth.inlinePlaceholderFontDefault,
UIFont.systemFont(ofSize: 4))
MDCTextInputControllerFullWidth.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 5)
XCTAssertEqual(MDCTextInputControllerFullWidth.inlinePlaceholderFontDefault,
UIFont.systemFont(ofSize: 5))
MDCTextInputControllerFullWidth.inlinePlaceholderFontDefault = UIFont.systemFont(ofSize: 6)
XCTAssertEqual(MDCTextInputControllerFullWidth.inlinePlaceholderFontDefault,
UIFont.systemFont(ofSize: 6))
// Test the changes to the class properties can propogate to an instance.
controller = MDCTextInputControllerFullWidth(textInput: textField)
XCTAssertEqual(controller.disabledColor, .clear)
XCTAssertEqual(controller.errorColor, MDCTextInputControllerFullWidth.errorColorDefault)
XCTAssertEqual(controller.inlinePlaceholderColor,
MDCTextInputControllerFullWidth.inlinePlaceholderColorDefault)
XCTAssertEqual(controller.mdc_adjustsFontForContentSizeCategory,
MDCTextInputControllerFullWidth.mdc_adjustsFontForContentSizeCategoryDefault)
XCTAssertEqual(controller.activeColor,
MDCTextInputControllerFullWidth.activeColorDefault)
XCTAssertEqual(controller.normalColor,
MDCTextInputControllerFullWidth.normalColorDefault)
XCTAssertEqual(controller.underlineHeightActive,
MDCTextInputControllerFullWidth.underlineHeightActiveDefault)
XCTAssertEqual(controller.underlineHeightNormal,
MDCTextInputControllerFullWidth.underlineHeightNormalDefault)
XCTAssertEqual(controller.underlineViewMode,
MDCTextInputControllerFullWidth.underlineViewModeDefault)
XCTAssertEqual(controller.leadingUnderlineLabelTextColor,
MDCTextInputControllerFullWidth.leadingUnderlineLabelTextColorDefault)
XCTAssertEqual(controller.trailingUnderlineLabelTextColor,
MDCTextInputControllerFullWidth.trailingUnderlineLabelTextColorDefault)
XCTAssertEqual(controller.inlinePlaceholderFont,
MDCTextInputControllerFullWidth.inlinePlaceholderFontDefault)
XCTAssertEqual(controller.leadingUnderlineLabelFont,
nil)
XCTAssertEqual(controller.trailingUnderlineLabelFont,
MDCTextInputControllerFullWidth.trailingUnderlineLabelFontDefault)
}
}