dovin-0.1.0.0: test/Resolve.hs
module Resolve where
import TestPrelude.V2
test_Resolve = testGroup "resolve"
[ testGroup "resolveTop"
[ prove "resolves top spell from stack" $ do
withLocation Hand $ addInstant "Shock"
cast "" "Shock" >> resolveTop
validate (matchLocation (Active, Graveyard)) "Shock"
validateBoardEquals stack mempty
, prove "resolves top permanent of stack" $ do
withLocation Hand $ addArtifact "Mox Opal"
cast "" "Mox Opal" >> resolveTop
validate (matchLocation (Active, Play)) "Mox Opal"
validateBoardEquals stack mempty
, prove "resolves top trigger of stack" $ do
withLocation Play $ addArtifact "Phrexian Altar"
trigger "Trigger" "Phrexian Altar" >> resolveTop
validateBoardEquals stack mempty
validateRemoved "Trigger"
, prove "resolves top activation of stack" $ do
withLocation Play $ addArtifact "Phrexian Altar"
activate "Mana Ability" "" "Phrexian Altar" >> resolveTop
validateBoardEquals stack mempty
validateRemoved "Mana Ability"
, refute
"requires non-empty stack"
"stack is empty" $ do
resolveTop
]
, testGroup "resolve"
[ prove "resolves top card of stack" $ do
withLocation Hand $ addInstant "Shock"
cast "" "Shock" >> resolve "Shock"
validate (matchLocation (Active, Graveyard)) "Shock"
validateBoardEquals stack mempty
, refute
"requires top card to match provided"
"unexpected top of stack: expected Shock 1, got Shock 2" $ do
withLocation Hand $ addInstant "Shock 1"
withLocation Hand $ addInstant "Shock 2"
cast "" "Shock 1"
cast "" "Shock 2"
resolve "Shock 1"
, refute
"requires non-empty stack"
"stack is empty" $ do
withLocation Hand $ addInstant "Shock"
resolve "Shock"
]
]