예제 #1
0
        async public void ShouldPlay()
        {
            var runnerCards = new List <Card>();

            for (int i = 0; i < 5; i++)
            {
                runnerCards.Add(new SureGamble());
            }
            var sureGamble = runnerCards.First();
            var game       = new MockGames().WithRunnerCards(runnerCards);

            game.Start();
            await new PassiveCorp(game).SkipTurn();
            var balance = new LastBalanceObserver();
            var clicks  = new SpentClicksObserver();
            var grip    = new GripObserver();
            var heap    = new HeapObserver();

            game.runner.credits.Observe(balance);
            game.runner.clicks.Observe(clicks);
            game.runner.zones.grip.zone.ObserveRemovals(grip);
            game.runner.zones.heap.zone.ObserveAdditions(heap);

            await game.runner.actionCard.TakeAction();

            await game.runner.actionCard.Play(sureGamble).Trigger(game);

            Assert.AreEqual(9, balance.LastBalance);
            Assert.AreEqual(1, clicks.Spent);
            Assert.AreEqual(sureGamble, grip.LastRemoved);
            Assert.AreEqual(sureGamble, heap.LastAdded);
        }
        async public void ShouldDiscard()
        {
            var runnerCards = new List <Card>();

            for (int i = 0; i < 20; i++)
            {
                runnerCards.Add(new Diesel());
            }
            var game = new MockGames().WithRunnerCards(runnerCards);

            game.Start();
            var passiveCorp = new PassiveCorp(game);
            await passiveCorp.SkipTurn();

            var grip           = game.runner.zones.grip;
            var heap           = game.runner.zones.heap;
            var actionCard     = game.runner.actionCard;
            var gripObserver   = new GripObserver();
            var heapObserver   = new HeapObserver();
            var clicksObserver = new SpentClicksObserver();

            grip.zone.ObserveRemovals(gripObserver);
            heap.zone.ObserveAdditions(heapObserver);
            game.runner.clicks.Observe(clicksObserver);
            for (int i = 0; i < 3; i++)
            {
                var diesel = grip.Find <Diesel>();
                await actionCard.TakeAction();

                await actionCard.Play(diesel).Trigger(game);
            }
            await actionCard.draw.Trigger(game);

            for (int i = 0; i < 7; i++)
            {
                var card = grip.Find <Diesel>();
                game.runner.zones.grip.Discard(card, heap);
            }
            await passiveCorp.SkipTurn();

            Assert.AreEqual(0, clicksObserver.Spent);
            Assert.AreEqual(10, gripObserver.TotalRemoved);
            Assert.AreEqual(10, heapObserver.TotalAdded);
        }
        async public void ShouldClickForCredit()
        {
            var game        = new MockGames().WithRunnerCards(new List <Card>());
            var gameFlowLog = new GameFlowLog();

            gameFlowLog.Display(game);
            game.Start();
            var balance = new LastBalanceObserver();
            var clicks  = new SpentClicksObserver();

            game.corp.credits.Observe(balance);
            game.corp.clicks.Observe(clicks);
            var clickForCredit = game.corp.actionCard.credit;

            SkipPaidWindow(game);
            SkipPaidWindow(game);

            await game.corp.actionCard.TakeAction();

            await clickForCredit.Trigger(game);

            Assert.AreEqual(6, balance.LastBalance);
            Assert.AreEqual(1, clicks.Spent);
        }