|
class ButtonViewModelTests: XCTestCase { |
|
// ... |
|
|
|
func testDefaultConfig() { |
|
let vm = ButtonViewModel(iconMode: nil, inverse: false, size: .medium, type: .secondary) |
|
let size = ButtonSize.medium |
|
let type = ButtonType.secondary |
|
|
|
XCTAssertNil(vm.iconStyle) |
|
XCTAssertEqual(vm.selectedStyle, type.selectedStyle) |
|
XCTAssertEqual(vm.style, type.style) |
|
|
|
XCTAssertEqual(vm.cornerRadius, size.cornerRadius) |
|
XCTAssertEqual(vm.height, size.height) |
|
XCTAssertNil(vm.width) |
|
XCTAssertEqual(vm.horizontalPadding, size.horizontalPadding) |
|
|
|
XCTAssertEqual(vm.padding.top, 0) |
|
XCTAssertEqual(vm.padding.bottom, 0) |
|
XCTAssertEqual(vm.padding.leading, size.horizontalPadding) |
|
XCTAssertEqual(vm.padding.trailing, size.horizontalPadding) |
|
|
|
XCTAssertEqual(vm.typeStyle, size.typeStyle) |
|
} |
|
|
|
func testIconOnly() { |
|
let vm = ButtonViewModel(iconMode: .iconOnly, inverse: false, size: .medium, type: .secondary) |
|
let size = ButtonSize.medium |
|
let type = ButtonType.secondary |
|
|
|
XCTAssertEqual(vm.iconStyle, type.iconOnlyStyle) |
|
XCTAssertEqual(vm.width, size.height) |
|
XCTAssertEqual(vm.padding.top, 0) |
|
XCTAssertEqual(vm.padding.bottom, 0) |
|
XCTAssertEqual(vm.padding.leading, 0) |
|
XCTAssertEqual(vm.padding.trailing, 0) |
|
|
|
let inverseVM = ButtonViewModel(iconMode: .iconOnly, inverse: true, size: .medium, type: .secondary) |
|
XCTAssertEqual(inverseVM.iconStyle, type.iconOnlyInverseStyle) |
|
} |
|
|
|
func testIsPressedScaleEffect() { |
|
let vm = ButtonViewModel(iconMode: nil, inverse: false, size: .medium, type: .secondary) |
|
|
|
var isEnabled = true |
|
XCTAssertEqual(vm.scaleEffect(for: isEnabled, isPressed: true), 0.99) |
|
XCTAssertEqual(vm.scaleEffect(for: isEnabled, isPressed: false), 1.0) |
|
|
|
isEnabled = false |
|
XCTAssertEqual(vm.scaleEffect(for: isEnabled, isPressed: true), 1.0) |
|
XCTAssertEqual(vm.scaleEffect(for: isEnabled, isPressed: false), 1.0) |
|
} |
|
|
|
// ... |
|
} |