Skip to content

Instantly share code, notes, and snippets.

@karigrooms
Last active February 19, 2021 17:06
Show Gist options
  • Save karigrooms/8c117683dae897cbba1a54ff13cdba06 to your computer and use it in GitHub Desktop.
Save karigrooms/8c117683dae897cbba1a54ff13cdba06 to your computer and use it in GitHub Desktop.
SwiftUI unit tests examples for Lessons in SwiftUI blog post
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)
}
// ...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment