Ejemplo n.º 1
0
        public void CannotCompactDifferentTypes()
        {
            var board     = builder.FromTypeGrid("0112");
            var compactor = new BoardCompactor(board);

            Assert.IsFalse(compactor.CanCompact(c00));
        }
Ejemplo n.º 2
0
        public void CannotCompactDifferentSizes()
        {
            var board = new Board(4);

//            {0, 0, 0, 2},
//            {0, 0, 0, 1},
//            {1 ,0, 0, 2},
//            {0, 0, 1, 0}
            board.Set(c00, new Piece(PieceType.Get(0), 1));
            board.Set(c10, new Piece(PieceType.Get(0), 1));
            board.Set(c20, new Piece(PieceType.Get(1), 1));
            board.Set(c30, new Piece(PieceType.Get(0), 1));

            board.Set(c01, new Piece(PieceType.Get(1), 1));
            board.Set(c11, new Piece(PieceType.Get(0), 1));
            board.Set(c21, new Piece(PieceType.Get(3), 1));
            board.Set(c31, new Piece(PieceType.Get(3), 1));

            board.Set(c02, new Piece(PieceType.Get(0), 2));

            board.Set(c22, new Piece(PieceType.Get(0), 1));
            board.Set(c32, new Piece(PieceType.Get(1), 1));

            board.Set(c23, new Piece(PieceType.Get(0), 1));
            board.Set(c33, new Piece(PieceType.Get(2), 1));

            var compactor = new BoardCompactor(board);

            Assert.IsFalse(compactor.CanCompact(c11));
            Assert.IsFalse(compactor.CanCompact(c12));
        }
Ejemplo n.º 3
0
 public void GeneratedIsAlwaysCompactedRnd()
 {
     DoTimes(1000, (i) => {
         var board     = generator.GenerateRandom(8, 3, true);
         var compactor = new BoardCompactor(board);
         Assert.IsFalse(compactor.CanCompact());
     });
 }
Ejemplo n.º 4
0
        public void FindsNextCompactable()
        {
            var board     = builder.FromTypeGrid("0001");
            var compactor = new BoardCompactor(board);

            board.Remove(c10);
            board.Set(c10, piece_t0_s1);
            Assert.AreEqual(c00, compactor.NextCompactable());
        }
Ejemplo n.º 5
0
        public void CanCompact()
        {
            var board     = builder.FromTypeGrid("0001");
            var compactor = new BoardCompactor(board);

            board.Remove(c10);
            board.Set(c10, piece_t0_s1);
            Assert.IsTrue(compactor.CanCompact(c00));
        }
Ejemplo n.º 6
0
        public void CannotCompactCoord()
        {
            var board     = builder.FromTypeGrid("0001");
            var compactor = new BoardCompactor(board);

            Assert.IsFalse(compactor.CanCompact(c00));
            Assert.IsFalse(compactor.CanCompact(c01));
            Assert.IsFalse(compactor.CanCompact(c10));
            Assert.IsFalse(compactor.CanCompact(c11));
        }
Ejemplo n.º 7
0
        public void SimpleCompaction2x2()
        {
            var board     = builder.FromTypeGrid("00 01");
            var compactor = new BoardCompactor(board);

            Assert.IsFalse(compactor.CanCompact());
            board.Remove(c10);
            board.Set(c10, new Piece(PieceType.Get(0), 1));
            Assert.IsTrue(compactor.CanCompact());
            compactor.Compact();
            Assert.IsTrue(piece_t0_s2.Matches(board.Get(c00)), "board:\n" + board);
        }
Ejemplo n.º 8
0
        public void CannotCompactNonAligned()
        {
            var board = builder.FromTypeGrid(new int[, ] {
                { 1, 0, 1, 0, 1, 0, 1, 0 },
                { 1, 0, 1, 0, 1, 0, 1, 0 },
                { 2, 2, 2, 2, 1, 0, 1, 0 },
                { 2, 2, 2, 2, 1, 0, 1, 0 },
                { 1, 2, 2, 2, 2, 0, 1, 0 },
                { 1, 2, 2, 2, 2, 0, 1, 0 },
                { 1, 0, 1, 0, 1, 0, 1, 0 },
                { 1, 0, 1, 0, 1, 0, 1, 0 }
            });
            var compactor = new BoardCompactor(board);

            // verify that the expected pieces are in place
            Assert.AreEqual(2, board.Get(c12).size);
            Assert.AreEqual(2, board.Get(c32).size);
            Assert.AreEqual(2, board.Get(c04).size);
            Assert.AreEqual(2, board.Get(c24).size);
            Assert.IsFalse(compactor.CanCompact());
        }
Ejemplo n.º 9
0
        public void CanCompactAligned2x2Recursive()
        {
            var board = builder.FromTypeGrid(new int[, ] {
                { 1, 0, 1, 0, 1, 0, 1, 0 },
                { 1, 0, 1, 0, 1, 0, 1, 0 },
                { 2, 2, 2, 2, 1, 0, 1, 0 },
                { 2, 2, 2, 2, 1, 0, 1, 0 },
                { 2, 2, 1, 2, 1, 0, 1, 0 },
                { 2, 2, 1, 2, 1, 0, 1, 0 },
                { 1, 0, 1, 0, 1, 0, 1, 0 },
                { 1, 0, 1, 0, 1, 0, 1, 0 }
            });

            board.Remove(c22);
            board.Remove(c23);
            board.Set(c22, new Piece(PieceType.Get(2), 1));
            board.Set(c23, new Piece(PieceType.Get(2), 1));
            var compactor = new BoardCompactor(board);

            Assert.IsTrue(compactor.CanCompact(), "board:\n" + board);
            compactor.Compact();
            Assert.AreEqual(4, board.Get(c02).size);
        }