Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
stephtelolahy committed Nov 23, 2023
1 parent 137422c commit 6c7310d
Showing 1 changed file with 62 additions and 6 deletions.
68 changes: 62 additions & 6 deletions GameKit/Tests/InventoryTests/Figures/CalamityJanetTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,33 @@ import Inventory
import XCTest

final class CalamityJanetTests: XCTestCase {
func test_calamityJanetPlayingMissed_shouldPlayAsBang() throws {
func test_calamityJanetPlayingBang_duringHerTurn_shouldPlayAsBang() throws {
// Given
let state = GameState.makeBuilderWithCardRef()
.withPlayer("p1") {
$0.withAttributes([.bangsPerTurn: 1, .weapon: 1])
.withHand([.bang])
.withFigure(.calamityJanet)
}
.withPlayer("p2")
.withTurn("p1")
.build()

// When
let action = GameAction.play(.bang, player: "p1")
let (result, _) = self.awaitAction(action, state: state, choose: ["p2"])

// Then
XCTAssertEqual(result, [
.chooseOne(player: "p1", options: [
"p2": .playImmediate(.bang, target: "p2", player: "p1")
]),
.playImmediate(.bang, target: "p2", player: "p1"),
.damage(1, player: "p2")
])
}

func test_calamityJanetPlayingMissed_duringHerTurn_shouldPlayAsBang() throws {
// Given
let state = GameState.makeBuilderWithCardRef()
.withPlayer("p1") {
Expand All @@ -19,6 +45,7 @@ final class CalamityJanetTests: XCTestCase {
.withFigure(.calamityJanet)
}
.withPlayer("p2")
.withTurn("p1")
.build()

// When
Expand All @@ -43,25 +70,54 @@ final class CalamityJanetTests: XCTestCase {
.withAttributes([.bangsPerTurn: 1, .weapon: 1])
}
.withPlayer("p2") {
$0.withHand(["bang-1", "bang-2"])
$0.withHand([.bang])
.withAttributes([.activateCounterCardsOnShot: 0])
.withFigure(.calamityJanet)
}
.build()

// When
let action = GameAction.playImmediate(.bang, target: "p2", player: "p1")
let (result, _) = awaitAction(action, state: state, choose: [.bang])

// Then
XCTAssertEqual(result, [
.playImmediate(.bang, target: "p2", player: "p1"),
.chooseOne(player: "p2", options: [
.bang: .play(.bang, player: "p2"),
.pass: .group([])
]),
.playImmediate(.bang, player: "p2"),
.cancel(.damage(1, player: "p2"))
])
}

func test_calamityJanetBeingShot_holdingMissed_shouldAskToCounter() throws {
// Given
let state = GameState.makeBuilderWithCardRef()
.withPlayer("p1") {
$0.withHand([.bang])
.withAttributes([.bangsPerTurn: 1, .weapon: 1])
}
.withPlayer("p2") {
$0.withHand([.missed])
.withAttributes([.activateCounterCardsOnShot: 0])
.withFigure(.calamityJanet)
}
.build()

// When
let action = GameAction.playImmediate(.bang, target: "p2", player: "p1")
let (result, _) = awaitAction(action, state: state, choose: ["bang-1"])
let (result, _) = awaitAction(action, state: state, choose: [.missed])

// Then
XCTAssertEqual(result, [
.playImmediate(.bang, target: "p2", player: "p1"),
.chooseOne(player: "p2", options: [
"bang-1": .play("bang-1", player: "p2"),
"bang-2": .play("bang-2", player: "p2"),
.missed: .play(.missed, player: "p2"),
.pass: .group([])
]),
.playImmediate("bang-1", player: "p2"),
.playImmediate(.missed, player: "p2"),
.cancel(.damage(1, player: "p2"))
])
}
Expand Down

0 comments on commit 6c7310d

Please sign in to comment.