class RemoteGameTest(unittest.TestCase): def testGameServiceHittingBlankSpots(self): self.startGame().withPositionOcupied(self.inPosition(1, 1)).hitTarget(self.inPosition(0,0)).expectBoatsAlive(True) def testGameServiceTargetHitted(self): self.startGame().withPositionOcupied(self.inPosition(1, 1)).hitTarget(self.inPosition(1, 1)).expectBoatsAlive(False) def startGame(self): self.service = RemoteGame(Board(2, 2)) return self def withPositionOcupied(self, position): self.board = Board(2, 2) self.board.setBoatPosition(position) self.service = RemoteGame(self.board) return self def hitTarget(self, position): self.service.hitTarget(position) return self def inPosition(self, row, column): return Position(row, column) def expectBoatsAlive(self, expectedBoatsAlive): self.assertEquals(expectedBoatsAlive, self.service.hasBoatsAlive()) return self
class RemoteGameTest(trialunit.TestCase): def setUp(self): self.board = Board(2, 2) self.server = reactor.listenTCP(0, pb.PBServerFactory(RemoteGame(self.board))) clientFactory = pb.PBClientFactory() reactor.connectTCP("localhost", self.server.getHost().port,clientFactory) def gotRoot(ref): self.ref = ref return clientFactory.getRootObject().addCallback(gotRoot) def tearDown(self): self.ref.broker.transport.loseConnection() return self.server.stopListening() def test_BoardHasNoAliveBoats(self): d = self.ref.callRemote("hasBoatsAlive") def callback(res): self.failUnless(res is False) d.addCallback(callback) return d def test_RemoteHitShouldAffectBoard(self): self.board.setBoatPosition(Position(1,1)) d = self.ref.callRemote("hasBoatsAlive") d.addCallback(lambda hasBoats: self.failUnless(hasBoats is True)) d = self.ref.callRemote("hitTarget", 1, 1) d.addCallback(lambda hitted: self.failUnless(hitted is True, "Hit failed")) d = self.ref.callRemote("hasBoatsAlive") d.addCallback(lambda hasBoats: self.failUnless(hasBoats is False, "Couldn' hit target remotely")) return d
def setUp(self): self.board = Board(2, 2) self.server = reactor.listenTCP(0, pb.PBServerFactory(RemoteGame(self.board))) clientFactory = pb.PBClientFactory() reactor.connectTCP("localhost", self.server.getHost().port,clientFactory) def gotRoot(ref): self.ref = ref return clientFactory.getRootObject().addCallback(gotRoot)
def withPositionOcupied(self, position): self.board = Board(2, 2) self.board.setBoatPosition(position) self.service = RemoteGame(self.board) return self