@Test
    public void removeCompleteBottomRow() {
        testee = new Board(30, 10) {
            @Override
            public void addNewShape(Shape shape) {
                super.addNewShape(new LShape());
            }
        };
        testee.addNewShapeAtRandom();
        moveSidewaysThenToBottom(-4);
        moveSidewaysThenToBottom(-2);
        moveShapeToBottom();
        moveSidewaysThenToBottom(2);
        moveSidewaysThenToBottom(4);
        assertTrue("new moving shape in wrong position: " + testee.getBoardCells(),
                testee.getCell(1, 4).isPopulated());
        for (Cell cell : testee.getBoardCells()) {
            if (cell.row == 29 || cell.row == 28) assertTrue("bottom row not populated correctly: " + populatedCells(),
                    cell.column % 2 == 1 ? !cell.isPopulated() : cell.isPopulated());
            if (cell.row == 27) assertFalse(cell.isPopulated());
        }
        assertNewMovingShapeHasNotMoved();
    }