aboutsummaryrefslogtreecommitdiff
path: root/go/game/targets_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/game/targets_test.go')
-rw-r--r--go/game/targets_test.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/go/game/targets_test.go b/go/game/targets_test.go
index 07df4b60..134eef5f 100644
--- a/go/game/targets_test.go
+++ b/go/game/targets_test.go
@@ -257,3 +257,44 @@ func TestUnitConstraint(t *testing.T) {
t.Fatal("'units you control' does not contain own archer")
}
}
+
+func TestSpellConstraint(t *testing.T) {
+ s, _, p, _ := newMockState()
+
+ spellInDiscard := NewCard("magic/more!")
+ p.DiscardPile.AddCard(spellInDiscard)
+ p.Resource = 3
+ declaredSpell := NewPlayAction(p, NewCard("magic/ritual!"))
+ s.declareAction(declaredSpell)
+ unit := NewPlayAction(p, NewCard("base/archer"))
+
+ desc := newTargetDesc("spell")
+ target := newTarget(s, desc, NewPassPriority(p))
+
+ if err := target.AddSelection(declaredSpell); err == nil {
+ t.Fatal("could target declared spell")
+ }
+
+ if err := target.AddSelection(spellInDiscard); err != nil {
+ t.Fatal("failed to target spell:", err)
+ }
+
+ if err := target.AddSelection(unit); err == nil {
+ t.Fatal("could target unit play action:", err)
+ }
+
+ desc = newTargetDesc("declared spell")
+ target = newTarget(s, desc, NewPassPriority(p))
+
+ if err := target.AddSelection(declaredSpell); err != nil {
+ t.Fatal("failed to target spell:", err)
+ }
+
+ if err := target.AddSelection(spellInDiscard); err == nil {
+ t.Fatal("spell in discard pile is not declared:", err)
+ }
+
+ if err := target.AddSelection(unit); err == nil {
+ t.Fatal("could target unit play action:", err)
+ }
+}