mirror of
https://github.com/pointfreeco/swift-composable-architecture.git
synced 2025-12-20 09:11:33 +01:00
* tic-tac-toe package * Update Package.swift * Tests * wip * wip * wip * Update Package.swift
88 lines
2.6 KiB
Swift
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."))
|
|
}
|
|
}
|
|
}
|