Files
swift-composable-architectu…/Examples/TicTacToe/Tests/GameCoreTests.swift
Stephen Celis a429d9d3ef Merge Test Support Module (#71)
* Merge Test Support Module

An attempt to fix #70.

* Remove import

* Update README

* Assertion failure

* Cleanup

* Add NB

* Revert format change

* Update Sources/ComposableArchitecture/TestSupport/TestStore.swift

* TicTacToe fixes

* Hide test store in debug flag

Co-authored-by: Brandon Williams <mbw234@gmail.com>
2020-05-11 17:44:52 -04:00

84 lines
2.1 KiB
Swift

import ComposableArchitecture
import GameCore
import XCTest
class GameSwiftUITests: XCTestCase {
let store = TestStore(
initialState: GameState(
oPlayerName: "Blob Jr.",
xPlayerName: "Blob Sr."
),
reducer: gameReducer,
environment: GameEnvironment()
)
func testFlow_Winner_Quit() {
self.store.assert(
.send(.cellTapped(row: 0, column: 0)) {
$0.board[0][0] = .x
$0.currentPlayer = .o
},
.send(.cellTapped(row: 2, column: 1)) {
$0.board[2][1] = .o
$0.currentPlayer = .x
},
.send(.cellTapped(row: 1, column: 0)) {
$0.board[1][0] = .x
$0.currentPlayer = .o
},
.send(.cellTapped(row: 1, column: 1)) {
$0.board[1][1] = .o
$0.currentPlayer = .x
},
.send(.cellTapped(row: 2, column: 0)) {
$0.board[2][0] = .x
},
.send(.quitButtonTapped)
)
}
func testFlow_Tie() {
self.store.assert(
.send(.cellTapped(row: 0, column: 0)) {
$0.board[0][0] = .x
$0.currentPlayer = .o
},
.send(.cellTapped(row: 2, column: 2)) {
$0.board[2][2] = .o
$0.currentPlayer = .x
},
.send(.cellTapped(row: 1, column: 0)) {
$0.board[1][0] = .x
$0.currentPlayer = .o
},
.send(.cellTapped(row: 2, column: 0)) {
$0.board[2][0] = .o
$0.currentPlayer = .x
},
.send(.cellTapped(row: 2, column: 1)) {
$0.board[2][1] = .x
$0.currentPlayer = .o
},
.send(.cellTapped(row: 1, column: 2)) {
$0.board[1][2] = .o
$0.currentPlayer = .x
},
.send(.cellTapped(row: 0, column: 2)) {
$0.board[0][2] = .x
$0.currentPlayer = .o
},
.send(.cellTapped(row: 0, column: 1)) {
$0.board[0][1] = .o
$0.currentPlayer = .x
},
.send(.cellTapped(row: 1, column: 1)) {
$0.board[1][1] = .x
$0.currentPlayer = .o
},
.send(.playAgainButtonTapped) {
$0 = GameState(oPlayerName: "Blob Jr.", xPlayerName: "Blob Sr.")
}
)
}
}