Files
swift-composable-architectu…/Examples/TicTacToe/tic-tac-toe/Tests/GameSwiftUITests/GameSwiftUITests.swift
Stephen Celis 026482d270 tic-tac-toe package (#684)
* tic-tac-toe package

* Update Package.swift

* Tests

* wip

* wip

* wip

* Update Package.swift
2021-07-29 09:18:49 -04:00

88 lines
2.6 KiB
Swift

import ComposableArchitecture
import GameCore
import XCTest
@testable import GameSwiftUI
class GameSwiftUITests: XCTestCase {
let store = TestStore(
initialState: GameState(
oPlayerName: "Blob Jr.",
xPlayerName: "Blob Sr."
),
reducer: gameReducer,
environment: GameEnvironment()
)
.scope(state: GameView.ViewState.init)
func testFlow_Winner_Quit() {
self.store.send(.cellTapped(row: 0, column: 0)) {
$0.board[0][0] = ""
$0.title = "Blob Jr., place your ⭕️"
}
self.store.send(.cellTapped(row: 2, column: 1)) {
$0.board[2][1] = "⭕️"
$0.title = "Blob Sr., place your ❌"
}
self.store.send(.cellTapped(row: 1, column: 0)) {
$0.board[1][0] = ""
$0.title = "Blob Jr., place your ⭕️"
}
self.store.send(.cellTapped(row: 1, column: 1)) {
$0.board[1][1] = "⭕️"
$0.title = "Blob Sr., place your ❌"
}
self.store.send(.cellTapped(row: 2, column: 0)) {
$0.board[2][0] = ""
$0.isGameDisabled = true
$0.isPlayAgainButtonVisible = true
$0.title = "Winner! Congrats Blob Sr.!"
}
self.store.send(.quitButtonTapped)
}
func testFlow_Tie() {
self.store.send(.cellTapped(row: 0, column: 0)) {
$0.board[0][0] = ""
$0.title = "Blob Jr., place your ⭕️"
}
self.store.send(.cellTapped(row: 2, column: 2)) {
$0.board[2][2] = "⭕️"
$0.title = "Blob Sr., place your ❌"
}
self.store.send(.cellTapped(row: 1, column: 0)) {
$0.board[1][0] = ""
$0.title = "Blob Jr., place your ⭕️"
}
self.store.send(.cellTapped(row: 2, column: 0)) {
$0.board[2][0] = "⭕️"
$0.title = "Blob Sr., place your ❌"
}
self.store.send(.cellTapped(row: 2, column: 1)) {
$0.board[2][1] = ""
$0.title = "Blob Jr., place your ⭕️"
}
self.store.send(.cellTapped(row: 1, column: 2)) {
$0.board[1][2] = "⭕️"
$0.title = "Blob Sr., place your ❌"
}
self.store.send(.cellTapped(row: 0, column: 2)) {
$0.board[0][2] = ""
$0.title = "Blob Jr., place your ⭕️"
}
self.store.send(.cellTapped(row: 0, column: 1)) {
$0.board[0][1] = "⭕️"
$0.title = "Blob Sr., place your ❌"
}
self.store.send(.cellTapped(row: 1, column: 1)) {
$0.board[1][1] = ""
$0.isGameDisabled = true
$0.isPlayAgainButtonVisible = true
$0.title = "Tied game!"
}
self.store.send(.playAgainButtonTapped) {
$0 = GameView.ViewState(state: GameState(oPlayerName: "Blob Jr.", xPlayerName: "Blob Sr."))
}
}
}