예제 #1
0
        public void Context_Nagere()
        {
            var ctx = new GameContext(RuleFactory.GetDefaultRule());

            // 最初は空
            Assert.IsFalse(ctx.Yama.Any());
            Assert.IsFalse(ctx.Ba.Any());

            // 場にカードを置く
            ctx._history.Add(new HE_PutCards(ctx.Teban, DeckGenerator.FromCardsetString("HK").ToArray()));
            Assert.IsTrue(ctx.Ba.Any());
            Assert.IsFalse(ctx.Yama.Any());

            // 流す
            //ctx.DoNagare();
            ctx._history.Add(new HE_Nagare());
            Assert.AreEqual(1, ctx.Yama.Count());
            Assert.AreEqual(0, ctx.Ba.Count());

            // 場にカードを置く(複数枚、複数回)
            ctx._history.Add(new HE_PutCards(ctx.Teban, DeckGenerator.FromCardsetString("D3 H3").ToArray()));
            ctx._history.Add(new HE_PutCards(ctx.Teban, DeckGenerator.FromCardsetString("S5 C5").ToArray()));
            Assert.AreEqual(1, ctx.Yama.Count());
            Assert.AreEqual(2, ctx.Ba.Count());

            // 流す
            //ctx.DoNagare();
            ctx._history.Add(new HE_Nagare());
            Assert.AreEqual(5, ctx.Yama.Count());
            Assert.AreEqual(0, ctx.Ba.Count());

            // リセット
            ctx.Reset();
            Assert.AreEqual(0, ctx.Yama.Count());
            Assert.AreEqual(0, ctx.Ba.Count());
        }