diff options
Diffstat (limited to 'go/game/targets_test.go')
| -rw-r--r-- | go/game/targets_test.go | 41 |
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) + } +} |
