Exemplo n.º 1
0
 def test_move_dead(self):
     """
     You can't move when dead
     """
     pawn = Pawn()
     pawn.kill()
     self.assertRaises(YoureDead, pawn.move, 'u')
Exemplo n.º 2
0
 def test_dropBomb_havenone(self):
     """
     You can't drop bombs if you don't have any
     """
     pawn = Pawn()
     pawn.bombs = 0
     self.assertRaises(IllegalMove, pawn.dropBomb)
Exemplo n.º 3
0
 def test_kill(self):
     """
     You can kill pawns
     """
     pawn = Pawn()
     pawn.kill()
     self.assertEqual(pawn.alive, False)
Exemplo n.º 4
0
    def test_move(self):
        """
        You can move it up,down,left or right, and pawnMoved will
        be called after each move.
        """
        board, clock = bnc()
        board.generate(5,5)
        board.fg_tiles[(1,1)] = EMPTY

        pawn = Pawn()
        board.insertPawn((0,0), pawn)
        
        # fake out pawnMoved
        called = []
        real_pawnMoved = board.pawnMoved
        def fake_pawnMoved(*args):
            called.append(args)
            return real_pawnMoved(*args)
        board.pawnMoved = fake_pawnMoved
        
        pawn.move('r')
        self.assertEqual(called[0], (pawn, (1,0)), "Should have "
                         "called pawnMoved")

        called.pop()
        pawn.move('d')
        self.assertEqual(called[0], (pawn, (1,1)))
        
        called.pop()
        pawn.move('l')
        self.assertEqual(called[0], (pawn, (0,1)))
        
        called.pop()
        pawn.move('u')
        self.assertEqual(called[0], (pawn, (0,0)))
Exemplo n.º 5
0
 def test_dropBomb_dead(self):
     """
     You can't drop bombs if you're dead
     """
     board, clock = bnc()
     board.generate(5,5)
     
     pawn = Pawn()
     board.insertPawn((0,0), pawn)
     pawn.kill()
     self.assertRaises(YoureDead, pawn.dropBomb)
     self.assertTrue((0,0) not in board.bombs)
Exemplo n.º 6
0
 def test_dropBomb_bomb(self):
     """
     You can't drop a bomb on a tile that already has a bomb.
     """
     board, clock = bnc()
     board.generate(5,5)
     
     pawn = Pawn()
     pawn.bombs = 2
     board.insertPawn((0,0), pawn)
     pawn.dropBomb()
     self.assertRaises(IllegalMove, pawn.dropBomb)
     self.assertEqual(pawn.bombs, 1, "Should still have one")
Exemplo n.º 7
0
class TelnetProtocol(Telnet):

    num = 0

    move_mapping = {
        'w': 'u',
        'a': 'l',
        'd': 'r',
        's': 'd',
    }

    def connectionMade(self):
        self.factory.protocols.append(self)
        self.will(ECHO).addErrback(log.msg)
        self.will(SGA).addErrback(log.msg)
        self.wont(LINEMODE).addErrback(log.msg)

        name = string.uppercase[self.num % len(string.uppercase)]
        TelnetProtocol.num += 1
        self.pawn = Pawn(name)
        self.factory.board.insertPawn((0,0), self.pawn)


    def enableLocal(self, option):
        return option in (ECHO, SGA)


    def connectionLost(self, reason):
        self.factory.protocols.remove(self)
        self.factory.board.pawns.remove(self.pawn)


    def applicationDataReceived(self, data):
        for k in data:
            if k in self.move_mapping:
                try:
                    self.pawn.move(self.move_mapping[k])
                except YoureDead, e:
                    pass
                except IllegalMove, e:
                    pass
            elif k == 'e':
                try:
                    self.pawn.dropBomb()
                except YoureDead, e:
                    pass
Exemplo n.º 8
0
 def test_illegal_moves(self):
     """
     Pawns can only move into EMPTY tiles.  Can't move into
     bombs, HARD, SOFT or off the board.
     """
     board, clock = bnc()
     board.generate(3,3)
     pawn = Pawn()
     board.insertPawn((0,0), pawn)
     
     # off the board
     self.assertRaises(IllegalMove, pawn.move, 'l')
     self.assertRaises(IllegalMove, pawn.move, 'u')
     
     pawn.move('d')
     self.assertEqual(pawn.loc, (0,1))
     
     # HARD
     self.assertRaises(IllegalMove, pawn.move, 'r')
     # SOFT
     self.assertRaises(IllegalMove, pawn.move, 'd')
     
     pawn.dropBomb()
     pawn.move('u')
     
     # on bomb
     self.assertRaises(IllegalMove, pawn.move, 'd')
Exemplo n.º 9
0
 def test_dropBomb(self):
     """
     You can drop bombs on the board, which uses up one of the
     bombs until it explodes.
     """
     board, clock = bnc()
     board.generate(5,5)
     pawn = Pawn()
     pawn.fuse = 3
     
     board.insertPawn((0,0), pawn)
     pawn.dropBomb()
     self.assertEqual(pawn.bombs, 0, "Should use up a bomb")
     self.assertTrue((0,0) in board.bombs, "Bomb should be on"
                     " the board")
     clock.advance(3)
     self.assertEqual(pawn.bombs, 1, "Should get the bomb back")
     self.assertFalse((0,0) in board.bombs)
Exemplo n.º 10
0
    def connectionMade(self):
        self.factory.protocols.append(self)
        self.will(ECHO).addErrback(log.msg)
        self.will(SGA).addErrback(log.msg)
        self.wont(LINEMODE).addErrback(log.msg)

        name = string.uppercase[self.num % len(string.uppercase)]
        TelnetProtocol.num += 1
        self.pawn = Pawn(name)
        self.factory.board.insertPawn((0,0), self.pawn)