Ejemplo n.º 1
0
 def testCellIsFilledByOnlyOneDotOnItsEdge(self):
     b = Board(4, 4)
     b.addDot(3, 2)
     self.assertTrue(b.cellContainsDot(2, 2))
     self.assertTrue(b.cellContainsDot(3, 1))
     self.assertTrue(b.cellContainsDot(3, 3))
     self.assertTrue(b.cellContainsDot(4, 1))
Ejemplo n.º 2
0
    def testFindConcavShape(self):
        expected = set()
        expected.add((1, 1))
        expected.add((1, 3))
        expected.add((1, 5))
        expected.add((1, 7))

        expected.add((3, 7))
        expected.add((5, 7))
        expected.add((7, 7))

        expected.add((7, 5))
        expected.add((7, 3))
        expected.add((7, 1))

        expected.add((5, 1))
        expected.add((3, 1))
        expected.add((1, 1))

        b = Board(4,4)
        b.addWall(2, 3)
        b.addWall(2, 5)
        b.addWall(3, 6)
        b.addWall(5, 6)
        b.addWall(6, 5)
        b.addWall(6, 3)
        b.addWall(5, 2)
        b.addWall(3, 2)

        self.assertEquals(expected, b.findShapeAroundCell(1, 1, set()))
        self.assertEquals(expected, b.findShapeAroundCell(7, 7, set()))
Ejemplo n.º 3
0
 def testAdjacentCellsCentralWithWall(self):
     b = Board(2, 2)
     expected = set()
     expected.add((3, 1))
     b.addWall(1, 2)
     b.addWall(3, 2)
     self.assertEquals(expected, b.adjacentCells(1, 1))
Ejemplo n.º 4
0
 def testAdjacentCellsAsym(self):
     b = Board(4, 4)
     expected = set()
     expected.add((7, 3))
     expected.add((7, 7))
     expected.add((5, 5))
     self.assertEquals(expected, b.adjacentCells(7, 5))
Ejemplo n.º 5
0
 def testMonoCellShape(self):
     expected = set()
     expected.add((1, 1))
     b = Board(2,2)
     b.addWall(1, 2)
     b.addWall(2, 1)
     self.assertEquals(expected, b.findShapeAroundCell(1, 1, set()))
Ejemplo n.º 6
0
 def testCanPutDotOutOfBounds(self):
     b = Board(2, 2)
     self.assertFalse(b._canPutDot(-1, 0))
     self.assertFalse(b._canPutDot(2, -1))
     self.assertFalse(b._canPutDot(4, 0))
     self.assertFalse(b._canPutDot(1, 4))
     self.assertTrue(b._canPutDot(1, 2))
Ejemplo n.º 7
0
    def testOuterShapeSimple(self):
        b = Board(4, 4)
        cells = set()
        cells.add((3, 3))
        cells.add((3, 5))
        cells.add((5, 3))
        cells.add((5, 5))


        b.addWall(2, 3)
        b.addWall(2, 5)
        b.addWall(3, 2)
        b.addWall(3, 6)
        b.addWall(5, 2)
        b.addWall(5, 6)
        b.addWall(6, 3)
        b.addWall(6, 5)


        walls = set()
        walls.add((2, 3))
        walls.add((2, 5))
        walls.add((3, 2))
        walls.add((3, 6))
        walls.add((5, 2))
        walls.add((5, 6))
        walls.add((6, 3))
        walls.add((6, 5))

        resultWalls = b.findOuterWalls(cells)
        self.assertEquals(walls, resultWalls)
Ejemplo n.º 8
0
    def testOuterShapeConcav(self):
        b = Board(4, 4)
        cells = set()
        cells.add((1, 1))
        cells.add((1, 3))
        cells.add((1, 5))
        cells.add((1, 7))

        cells.add((3, 1))
        cells.add((3, 7))

        cells.add((5, 1))
        cells.add((5, 7))

        cells.add((7, 1))
        cells.add((7, 3))
        cells.add((7, 5))
        cells.add((7, 7))

        b.addWall(2, 3)
        b.addWall(2, 5)
        b.addWall(3, 2)
        b.addWall(3, 6)
        b.addWall(5, 2)
        b.addWall(5, 6)
        b.addWall(6, 3)
        b.addWall(6, 5)


        walls = set()
        walls.add((2, 3))
        walls.add((2, 5))
        walls.add((3, 2))
        walls.add((3, 6))
        walls.add((5, 2))
        walls.add((5, 6))
        walls.add((6, 3))
        walls.add((6, 5))

        walls.add((0, 1))
        walls.add((0, 3))
        walls.add((0, 5))
        walls.add((0, 7))

        walls.add((1, 0))
        walls.add((1, 8))
        walls.add((3, 0))
        walls.add((3, 8))
        walls.add((5, 0))
        walls.add((5, 8))
        walls.add((7, 0))
        walls.add((7, 8))

        walls.add((8, 1))
        walls.add((8, 3))
        walls.add((8, 5))
        walls.add((8, 7))

        resultWalls = b.findOuterWalls(cells)
        self.assertEquals(walls, resultWalls)
Ejemplo n.º 9
0
 def testAdjacentCellsCentralWithWall(self):
     b = Board(4, 4)
     expected = set()
     expected.add((5, 5))
     expected.add((3, 3))
     expected.add((7, 3))
     b.addWall(5, 2)
     self.assertEquals(expected, b.adjacentCells(5, 3))
Ejemplo n.º 10
0
 def testShapeInEmptyBoard(self):
     expected = set()
     expected.add((1, 1))
     expected.add((1, 3))
     expected.add((3, 1))
     expected.add((3, 3))
     b = Board(2,2)
     self.assertEquals(expected, b.findShapeAroundCell(1, 1, set()))
Ejemplo n.º 11
0
 def testEdgessAround00Cell(self):
     b = Board(4,4)
     expected = set()
     expected.add((0, 1))
     expected.add((1, 0))
     expected.add((2, 1))
     expected.add((1, 2))
     self.assertEquals(b.edgesAroundCell(1, 1), expected)
Ejemplo n.º 12
0
 def testmanathanDist(self):
     b = Board(4, 4)
     self.assertEquals(b.manathanDistanceBetweenPoints(1, 1, 1, 1), 0)
     self.assertEquals(b.manathanDistanceBetweenPoints(1, 1, 1, 2), 1)
     self.assertEquals(b.manathanDistanceBetweenPoints(1, 1, 7, 7), 12)
     self.assertEquals(b.manathanDistanceBetweenPoints(1, 1, 1, 7), 6)
     self.assertEquals(b.manathanDistanceBetweenPoints(1, 1, 7, 1), 6)
     self.assertEquals(b.manathanDistanceBetweenPoints(7, 1, 1, 1), 6)
Ejemplo n.º 13
0
 def testIsCellWithin(self):
     b = Board(4, 4)
     self.assertTrue(b.cellIsWithinBoard(0, 0))
     self.assertTrue(b.cellIsWithinBoard(1, 1))
     self.assertTrue(b.cellIsWithinBoard(2, 2))
     self.assertTrue(b.cellIsWithinBoard(3, 3))
     self.assertFalse(b.cellIsWithinBoard(-1, 1))
     self.assertFalse(b.cellIsWithinBoard(1, 10))
Ejemplo n.º 14
0
 def testMinimalBoardDots(self):
     expectedDots = []
     expectedDots.append({"i":0, "j":0})
     b = Board(2,2)
     b.addDot(0,0)
     i = 0
     for d in b.dots():
         self.assertEquals(d, expectedDots[i])
         i = i + 1
Ejemplo n.º 15
0
 def testEmptyBoardCells(self):
     expectedCells = []
     expectedCells.append({"i":1, "j":1})
     expectedCells.append({"i":1, "j":3})
     expectedCells.append({"i":3, "j":1})
     expectedCells.append({"i":3, "j":3})
     b = Board(2,2)
     i = 0
     for c in b.cells():
         self.assertEquals(c, expectedCells[i])
         i = i + 1
Ejemplo n.º 16
0
 def testEdgesAroundAsymCell(self):
     b = Board(4,4)
     expected = set()
     expected.add((1, 0))
     expected.add((0, 1))
     expected.add((0, 3))
     expected.add((1, 4))
     expected.add((2, 3))
     expected.add((2, 1))
     result = b.edgesAroundCell(1, 2)
     self.assertEquals(result, expected)
     self.assertEquals(len(result), len(expected))
Ejemplo n.º 17
0
 def testEdgesAroundCentralCell(self):
     b = Board(4,4)
     expected = set()
     expected.add((2, 3))
     expected.add((3, 4))
     expected.add((5, 4))
     expected.add((6, 3))
     expected.add((5, 2))
     expected.add((3, 2))
     result = b.edgesAroundCell(4, 3)
     self.assertEquals(result, expected)
     self.assertEquals(len(result), len(expected))
Ejemplo n.º 18
0
 def testIsWall(self):
     b = Board(2,2)
     self.assertFalse(b.isWall(2, 1))
     b.addWall(2, 1)
     self.assertTrue(b.isWall(2, 1))
     self.assertFalse(b.isWall(1, 2))
     b.addWall(1, 2)
     self.assertTrue(b.isWall(2, 1))
     self.assertTrue(b.isWall(1, 2))
Ejemplo n.º 19
0
 def testdotSeesCellSomeDotsCannotBeBypassed(self):
     b = Board(4, 4)
     b.addDot(1, 1)
     b.addDot(1, 3)
     b.addDot(3, 3)
     b.addDot(5, 3)
     b.addDot(7, 3)
     self.assertFalse(b.dotSeesCell(1, 1, 7, 7))
Ejemplo n.º 20
0
    def testToString(self):
        b = Board(4, 4)
        b.addDot(2, 2)
        self.assertEqual(
            """  0 1 2 3 j
 +-+-+-+-+
0|       |
 + # + + +
1|       |
 + + + + +
2|       |
 + + + + +
3|       |
 +-+-+-+-+
i
""", b.toString())
Ejemplo n.º 21
0
 def testEmptyBoardPossibleDots(self):
     expectedCells = []
     expectedCells.append({"i":1, "j":1})
     expectedCells.append({"i":1, "j":2})
     expectedCells.append({"i":1, "j":3})
     expectedCells.append({"i":2, "j":1})
     expectedCells.append({"i":2, "j":2})
     expectedCells.append({"i":2, "j":3})
     expectedCells.append({"i":3, "j":1})
     expectedCells.append({"i":3, "j":2})
     expectedCells.append({"i":3, "j":3})
     b = Board(2,2)
     i = 0
     for c in b.dotsPossiblePlaces():
         self.assertEquals(c, expectedCells[i])
         i = i + 1
Ejemplo n.º 22
0
    def testAddDotIsNotDash(self):
        b = Board(4, 4)
        b.addDot(2, 2)
        b.addDot(2, 1)
        self.assertEqual("""  0 1 2 3 j
 +-+-+-+-+
0|       |
 +o# + + +
1|       |
 + + + + +
2|       |
 + + + + +
3|       |
 +-+-+-+-+
i
""", b.toString())
Ejemplo n.º 23
0
    def testCellCanBelongToDotFullCells(self):
        b = Board(4, 4)
        b.addDot(1, 2)
        self.assertTrue(b.cellCanBelongToDot(1, 1, 1, 2))

        b.addDot(2, 2)
        self.assertFalse(b.cellCanBelongToDot(0, 2, 1, 2))
Ejemplo n.º 24
0
    def testOuterShapeEmptyBoard(self):
        b = Board(2, 2)
        cells = set()
        cells.add((1, 1))
        cells.add((1, 3))
        cells.add((3, 1))
        cells.add((3, 3))

        walls = set()
        walls.add((0, 1))
        walls.add((0, 3))
        walls.add((1, 0))
        walls.add((1, 4))
        walls.add((3, 0))
        walls.add((3, 4))
        walls.add((4, 1))
        walls.add((4, 3))

        resultWalls = b.findOuterWalls(cells)
        self.assertEquals(walls, resultWalls)
Ejemplo n.º 25
0
    def testFillBoardReal(self):
        b = Board(7, 7)
        b.fillBoard("7x7:hiinifpzkeqbsh") # 14 dots
        self.assertEqual(
            """  0 1 2 3 4 5 6 j
 +-+-+-+-+-+-+-+
0|       o     |
 + + # + + + +o+
1|             |
 +o+ + + + # + +
2|  o          |
 + + + # + + + +
3|             |
 + + + + + + + +
4|  o    o     |
 + + + + + + # +
5|o            |
 + + + +o+ + + +
6| o           |
 +-+-+-+-+-+-+-+
i
""", b.toString())
Ejemplo n.º 26
0
 def testCanPutDotAroundBorders(self):
     b = Board(4, 4)
     self.assertFalse(b._canPutDot(1, 0))
     self.assertTrue(b._canPutDot(1, 1))
     self.assertTrue(b._canPutDot(1, 2))
     self.assertTrue(b._canPutDot(1, 3))
     self.assertTrue(b._canPutDot(1, 4))
     self.assertTrue(b._canPutDot(1, 5))
     self.assertTrue(b._canPutDot(1, 6))
     self.assertTrue(b._canPutDot(1, 7))
     self.assertFalse(b._canPutDot(1, 8))
Ejemplo n.º 27
0
    def testFillBoardDumb(self):
        b = Board(7, 7)
        b.fillBoard("7x7:abbbccxhh") # 14 dots
        self.assertEqual(
            """  0 1 2 3 4 5 6 j
 +-+-+-+-+-+-+-+
0|o o o o  o  o|
 + + + + + + + +
1|          o  |
 + + + # + + + +
2|o            |
 + + + + + + + +
3|             |
 + + + + + + + +
4|             |
 + + + + + + + +
5|             |
 + + + + + + + +
6|             |
 +-+-+-+-+-+-+-+
i
""", b.toString())
Ejemplo n.º 28
0
    def testOuterShapeEmptyBoardDumbWall(self):
        b = Board(2, 2)
        cells = set()
        cells.add((1, 1))
        cells.add((1, 3))
        cells.add((3, 1))
        cells.add((3, 3))

        b.addWall(1, 2) # A wall that doesn't frontier the shape

        walls = set()
        walls.add((0, 1))
        walls.add((0, 3))
        walls.add((1, 0))
        walls.add((1, 4))
        walls.add((3, 0))
        walls.add((3, 4))
        walls.add((4, 1))
        walls.add((4, 3))

        resultWalls = b.findOuterWalls(cells)
        self.assertEquals(walls, resultWalls)
Ejemplo n.º 29
0
    def testOuterShapeEmptyBoardFrontieringShape(self):
        b = Board(2, 2)
        cells = set()
        cells.add((1, 1))
        cells.add((1, 3))
        cells.add((3, 1))
        cells.add((3, 3))

        b.addWall(1, 2) # 2 walls that make another shape near the first one
        b.addWall(2, 3)

        walls = set()
        walls.add((0, 1))
        walls.add((0, 3))
        walls.add((1, 0))
        walls.add((1, 4))
        walls.add((3, 0))
        walls.add((3, 4))
        walls.add((4, 1))
        walls.add((4, 3))

        resultWalls = b.findOuterWalls(cells)
        self.assertEquals(walls, resultWalls)
Ejemplo n.º 30
0
 def testWallsAroundSomeFullyWalledCellAsym(self):
     b = Board(4,4)
     expected = set()
     b.addWall(2, 5)
     b.addWall(4, 5)
     b.addWall(3, 4)
     b.addWall(3, 6)
     expected.add((2, 5))
     expected.add((4, 5))
     expected.add((3, 4))
     expected.add((3, 6))
     self.assertEquals(b.wallsAroundCell(3, 5), expected)