diff options
Diffstat (limited to 'go/game/cardImplementations_test.go')
| -rw-r--r-- | go/game/cardImplementations_test.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/go/game/cardImplementations_test.go b/go/game/cardImplementations_test.go index b3ac5811..51aab02f 100644 --- a/go/game/cardImplementations_test.go +++ b/go/game/cardImplementations_test.go @@ -346,3 +346,51 @@ func TestPowerToThePeople(t *testing.T) { t.Fatal("Not gained 4 resource") } } + +func TestReformer(t *testing.T) { + s, _, player, _ := newMockState() + + r := s.addNewUnit(NewCard("exp1/reformer"), Position{0, 0}, player) + + c1 := NewCard("base/sword") + player.Hand.AddCard(c1) + + ra := r.FullActions[0] + s.ResolveAction(ra) + s.handleTriggers() + + if len(s.triggers) != 1 { + t.Fatal("No active reformer trigger") + } + + player.discardCard(c1) + if len(s.events) != 1 { + t.Fatal("No discard event fired") + } + + s.handleTriggers() + if s.stack.IsEmpty() { + t.Fatal("reformer draw not triggered") + } + + if len(s.triggers) != 1 { + t.Fatal("Reformer trigger removed") + } + + s.stack.pop() + if player.Hand.IsEmpty() { + t.Fatal("no card drawn") + } + + player.DiscardPile.MoveCard(c1, player.Hand) + da := NewFreeDiscardAction(player) + da.Target().AddSelection(player.Hand.Cards()[0]) + da.Target().AddSelection(player.Hand.Cards()[1]) + s.declareAction(da) + s.stack.pop() + s.handleTriggers() + s.stack.pop() + if player.Hand.Size() != 2 { + t.Fatal("not two cards drawn") + } +} |
