mirror of
https://github.com/pointfreeco/swift-composable-architecture.git
synced 2025-12-20 09:11:33 +01:00
92 lines
2.6 KiB
Swift
92 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: { $0.view })
|
|
|
|
func testFlow_Winner_Quit() {
|
|
self.store.assert(
|
|
.send(.cellTapped(row: 0, column: 0)) {
|
|
$0.board[0][0] = "❌"
|
|
$0.title = "Blob Jr., place your ⭕️"
|
|
},
|
|
.send(.cellTapped(row: 2, column: 1)) {
|
|
$0.board[2][1] = "⭕️"
|
|
$0.title = "Blob Sr., place your ❌"
|
|
},
|
|
.send(.cellTapped(row: 1, column: 0)) {
|
|
$0.board[1][0] = "❌"
|
|
$0.title = "Blob Jr., place your ⭕️"
|
|
},
|
|
.send(.cellTapped(row: 1, column: 1)) {
|
|
$0.board[1][1] = "⭕️"
|
|
$0.title = "Blob Sr., place your ❌"
|
|
},
|
|
.send(.cellTapped(row: 2, column: 0)) {
|
|
$0.board[2][0] = "❌"
|
|
$0.isGameDisabled = true
|
|
$0.isPlayAgainButtonVisible = true
|
|
$0.title = "Winner! Congrats Blob Sr.!"
|
|
},
|
|
.send(.quitButtonTapped)
|
|
)
|
|
}
|
|
|
|
func testFlow_Tie() {
|
|
self.store.assert(
|
|
.send(.cellTapped(row: 0, column: 0)) {
|
|
$0.board[0][0] = "❌"
|
|
$0.title = "Blob Jr., place your ⭕️"
|
|
},
|
|
.send(.cellTapped(row: 2, column: 2)) {
|
|
$0.board[2][2] = "⭕️"
|
|
$0.title = "Blob Sr., place your ❌"
|
|
},
|
|
.send(.cellTapped(row: 1, column: 0)) {
|
|
$0.board[1][0] = "❌"
|
|
$0.title = "Blob Jr., place your ⭕️"
|
|
},
|
|
.send(.cellTapped(row: 2, column: 0)) {
|
|
$0.board[2][0] = "⭕️"
|
|
$0.title = "Blob Sr., place your ❌"
|
|
},
|
|
.send(.cellTapped(row: 2, column: 1)) {
|
|
$0.board[2][1] = "❌"
|
|
$0.title = "Blob Jr., place your ⭕️"
|
|
},
|
|
.send(.cellTapped(row: 1, column: 2)) {
|
|
$0.board[1][2] = "⭕️"
|
|
$0.title = "Blob Sr., place your ❌"
|
|
},
|
|
.send(.cellTapped(row: 0, column: 2)) {
|
|
$0.board[0][2] = "❌"
|
|
$0.title = "Blob Jr., place your ⭕️"
|
|
},
|
|
.send(.cellTapped(row: 0, column: 1)) {
|
|
$0.board[0][1] = "⭕️"
|
|
$0.title = "Blob Sr., place your ❌"
|
|
},
|
|
.send(.cellTapped(row: 1, column: 1)) {
|
|
$0.board[1][1] = "❌"
|
|
$0.isGameDisabled = true
|
|
$0.isPlayAgainButtonVisible = true
|
|
$0.title = "Tied game!"
|
|
},
|
|
.send(.playAgainButtonTapped) {
|
|
$0 = GameState(oPlayerName: "Blob Jr.", xPlayerName: "Blob Sr.").view
|
|
}
|
|
)
|
|
}
|
|
}
|