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()))
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))
def testFindCutConcavShape(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, 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) b.addWall(7, 6) b.addWall(6, 7) self.assertEquals(expected, b.findShapeAroundCell(1, 1, set())) expected2 = set() expected2.add((7, 7)) self.assertEquals(expected2, b.findShapeAroundCell(7, 7, set()))
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))
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))
def testShapeInEmptyBoardWithFakeWall(self): expected = set() expected.add((1, 1)) expected.add((1, 3)) expected.add((3, 1)) expected.add((3, 3)) b = Board(2,2) b.addWall(1, 2) self.assertEquals(expected, b.findShapeAroundCell(1, 1, set()))
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)
def testFindComplexShape(self): expected = set() expected.add((1, 1)) expected.add((1, 3)) expected.add((1, 5)) expected.add((1, 7)) b = Board(4,4) b.addWall(2, 1) b.addWall(2, 3) b.addWall(2, 5) b.addWall(2, 7) self.assertEquals(expected, b.findShapeAroundCell(1, 1, set()))
def testDotOnWall(self): b = Board(2,2) b.addWall(1, 2) b.addDot(1, 2) self.assertEquals( """ 0 1 j +-+-+ 0| ø | + + + 1| | +-+-+ i """, b.toString())
def testAddWallShortForm(self): b = Board(4, 4) b.addWall(1, 2) self.assertTrue(b.isWall(1, 2)) self.assertFalse(b.isWall(1, 4)) self.assertFalse(b.isWall(2, 1)) self.assertFalse(b.isDot(1, 3)) b.addWall(0, 1) self.assertTrue(b.isWall(0, 1)) self.assertTrue(b.isWall(1, 2)) self.assertFalse(b.isWall(1, 4)) self.assertFalse(b.isWall(2, 1)) self.assertFalse(b.isDot(1, 3))
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)
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)
def testOuterShapeSingleCell(self): b = Board(4, 4) cells = set() cells.add((3, 3)) b.addWall(2, 3) b.addWall(3, 2) b.addWall(3, 4) b.addWall(4, 3) walls = set() walls.add((2, 3)) walls.add((3, 2)) walls.add((3, 4)) walls.add((4, 3)) resultWalls = b.findOuterWalls(cells) self.assertEquals(walls, resultWalls)
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)
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)
def testWallsAroundSomeWalledCell(self): b = Board(4,4) expected = set() b.addWall(4, 5) expected.add((4, 5)) self.assertEquals(b.wallsAroundCell(5, 5), expected)