public void 左回転テストt()
        {
            var controlBlocks   = new ControlBlocks(5, 15, IBlocks);
            var IBlocksLeftSpin = IBlocks.LeftSpin();

            controlBlocks.LeftSpin();
            Assert.AreEqual(IBlocksLeftSpin, controlBlocks.Blocks);

            var controlBlocks2   = new ControlBlocks(5, 15, IBlocks);
            var IBlocksRightSpin = IBlocks.RightSpin();

            controlBlocks2.RightSpin();
            Assert.AreEqual(IBlocksRightSpin, controlBlocks2.Blocks);
        }
Exemple #2
0
        public void ライン揃い時の消去テスト()
        {
            var board = new Board(8, 20);
            // 1つ目のブロックを左下へ
            var controlBlocks = new ControlBlocks(2, 0, IBlocks);

            controlBlocks.LeftSpin();
            board.PutBlocks(controlBlocks);

            // 2つ目のブロックを左下二段目へ
            controlBlocks = new ControlBlocks(2, 1, IBlocks);
            controlBlocks.LeftSpin();
            board.PutBlocks(controlBlocks);

            var result1 = board.EraseIfAlign();

            Assert.AreEqual(0, result1.Count);

            // まだブロックは揃っていない
            Assert.IsTrue(board.ExistPosition(0, 1));
            Assert.IsTrue(board.ExistPosition(1, 1));
            Assert.IsTrue(board.ExistPosition(2, 1));
            Assert.IsTrue(board.ExistPosition(3, 1));
            Assert.IsTrue(board.ExistPosition(0, 0));
            Assert.IsTrue(board.ExistPosition(1, 0));
            Assert.IsTrue(board.ExistPosition(2, 0));
            Assert.IsTrue(board.ExistPosition(3, 0));
            Assert.IsFalse(board.ExistPosition(4, 0));
            Assert.IsFalse(board.ExistPosition(5, 0));
            Assert.IsFalse(board.ExistPosition(6, 0));
            Assert.IsFalse(board.ExistPosition(7, 0));

            // 4つ目のブロックを右下へ
            controlBlocks = new ControlBlocks(6, 0, IBlocks);
            controlBlocks.LeftSpin();
            board.PutBlocks(controlBlocks);
            var result2 = board.EraseIfAlign();


            // ブロックが揃ったことで一番下の段が消える
            Assert.IsTrue(board.ExistPosition(0, 1));
            Assert.IsTrue(board.ExistPosition(1, 1));
            Assert.IsTrue(board.ExistPosition(2, 1));
            Assert.IsTrue(board.ExistPosition(3, 1));
            Assert.IsFalse(board.ExistPosition(0, 0));
            Assert.IsFalse(board.ExistPosition(1, 0));
            Assert.IsFalse(board.ExistPosition(2, 0));
            Assert.IsFalse(board.ExistPosition(3, 0));
            Assert.IsFalse(board.ExistPosition(4, 0));
            Assert.IsFalse(board.ExistPosition(5, 0));
            Assert.IsFalse(board.ExistPosition(6, 0));
            Assert.IsFalse(board.ExistPosition(7, 0));

            // 戻り値には消えたブロックが入っている
            Assert.AreEqual(0, result2[0].GetX());
            Assert.AreEqual(0, result2[0].GetY());
            Assert.AreEqual(1, result2[1].GetX());
            Assert.AreEqual(0, result2[1].GetY());
            Assert.AreEqual(2, result2[2].GetX());
            Assert.AreEqual(0, result2[2].GetY());
            Assert.AreEqual(3, result2[3].GetX());
            Assert.AreEqual(0, result2[3].GetY());
            Assert.AreEqual(4, result2[4].GetX());
            Assert.AreEqual(0, result2[4].GetY());
            Assert.AreEqual(5, result2[5].GetX());
            Assert.AreEqual(0, result2[5].GetY());
            Assert.AreEqual(6, result2[6].GetX());
            Assert.AreEqual(0, result2[6].GetY());
            Assert.AreEqual(7, result2[7].GetX());
            Assert.AreEqual(0, result2[7].GetY());
        }
Exemple #3
0
        public void 何もブロックの存在しないラインにブロックを落下させるテスト()
        {
            var board = new Board(8, 20);
            // 1つ目のブロック設置
            var controlBlocks = new ControlBlocks(3, 0, IBlocks);

            controlBlocks.LeftSpin();
            board.PutBlocks(controlBlocks);

            // 2つ目のブロック設置
            var controlBlocks2 = new ControlBlocks(2, 4, IBlocks);

            controlBlocks2.LeftSpin();
            board.PutBlocks(controlBlocks2);

            // 3つ目のブロック設置
            var sevenSideBlocks = new Blocks(new List <IBlock>
            {
                new Block(0, 0),
                new Block(1, 0),
                new Block(2, 0),
                new Block(3, 0),
                new Block(4, 0),
                new Block(5, 0),
                new Block(6, 0)
            });
            var controlBlocks3 = new ControlBlocks(0, 5, sevenSideBlocks);

            board.PutBlocks(controlBlocks3);

            // 4つ目のブロックを接地
            var controlBlocks4 = new ControlBlocks(4, 6, IBlocks);

            controlBlocks4.LeftSpin();
            board.PutBlocks(controlBlocks4);

            var result = board.FallToEmptyLine();

            // 移動したブロックが戻り値に入っている
            Assert.AreEqual(15, result.Count);

            // 空間にブロックが落下している
            Assert.IsFalse(board.ExistPosition(0, 0));
            Assert.IsTrue(board.ExistPosition(1, 0));
            Assert.IsTrue(board.ExistPosition(2, 0));
            Assert.IsTrue(board.ExistPosition(3, 0));
            Assert.IsTrue(board.ExistPosition(4, 0));
            Assert.IsFalse(board.ExistPosition(5, 0));
            Assert.IsFalse(board.ExistPosition(6, 0));
            Assert.IsFalse(board.ExistPosition(7, 0));

            Assert.IsTrue(board.ExistPosition(0, 1));
            Assert.IsTrue(board.ExistPosition(1, 1));
            Assert.IsTrue(board.ExistPosition(2, 1));
            Assert.IsTrue(board.ExistPosition(3, 1));
            Assert.IsFalse(board.ExistPosition(4, 1));
            Assert.IsFalse(board.ExistPosition(5, 1));
            Assert.IsFalse(board.ExistPosition(6, 1));
            Assert.IsFalse(board.ExistPosition(7, 1));

            Assert.IsTrue(board.ExistPosition(0, 2));
            Assert.IsTrue(board.ExistPosition(1, 2));
            Assert.IsTrue(board.ExistPosition(2, 2));
            Assert.IsTrue(board.ExistPosition(3, 2));
            Assert.IsTrue(board.ExistPosition(4, 2));
            Assert.IsTrue(board.ExistPosition(5, 2));
            Assert.IsTrue(board.ExistPosition(6, 2));
            Assert.IsFalse(board.ExistPosition(7, 2));

            Assert.IsFalse(board.ExistPosition(0, 3));
            Assert.IsFalse(board.ExistPosition(1, 3));
            Assert.IsTrue(board.ExistPosition(2, 3));
            Assert.IsTrue(board.ExistPosition(3, 3));
            Assert.IsTrue(board.ExistPosition(4, 3));
            Assert.IsTrue(board.ExistPosition(5, 3));
            Assert.IsFalse(board.ExistPosition(6, 3));
            Assert.IsFalse(board.ExistPosition(7, 3));
        }