def test_bot_train(self): player_id = 42 train_id = 9001 required = 6 p = Player(player_id, TestBot()) t = Train(train_id, required, p) bt = BotTrain(t, p) self.assertTrue(bt.can_add) self.assertTrue(bt.am_owner) self.assertFalse(bt.identity.mexican) self.assertEqual(p, bt.identity.owner) self.assertEqual(required, bt.requires) bt.cars.append(Domino(2, 3)) self.assertEqual(0, len(t.cars)) d1 = Domino(6, 6) t.add_domino(d1, p) bt = BotTrain(t, p) self.assertTrue(bt.demands_satisfaction) self.assertEqual(6, bt.requires) self.assertEqual(d1, bt.cars.pop()) d2 = Domino(12, 6) t.add_domino(d2, p) bt = BotTrain(t, p) self.assertFalse(bt.demands_satisfaction) self.assertEqual(12, bt.requires) self.assertEqual(d2, bt.cars.pop())
def test_provide_satisfaction(self): t = Train(5, 5, self.player_five) d = Domino(5, 5) t.add_domino(d, self.player_five) self.assertTrue(t.demands_satisfaction) self.assertFalse(t.private) t.add_domino(Domino(3, 5), self.player_five) self.assertFalse(t.demands_satisfaction) self.assertTrue(t.private)
def place_domino(self, train: Train, domino: Domino, player: Player): """ Place a domino on a Train. :param train: The Train to add the Domino to. :param domino: The Domino to add. :param player: The Player who is placing the domino. """ if train.add_domino(domino, player): player.dominoes.remove(domino) self.played_count[domino.left] += 1 if not domino.is_double: self.played_count[domino.right] += 1 self.played.append(domino)
def test_update_required(self): t = Train(2, 2, self.player_two) d = Domino(2, 3) t.add_domino(d, self.player_two) self.assertEqual(3, t.requires)
def test_private_to_public(self): t = Train(2, 2, self.player_two) t.make_private() t.make_public() d = Domino(2, 3) self.assertTrue(t.add_domino(d, self.player_two))
def test_private_train(self): t = Train(2, 2, self.player_two) t.make_private() d = Domino(2, 3) self.assertTrue(t.add_domino(d, self.player_two)) self.assertFalse(t.add_domino(d, Player(1, TestBot())))
def test_cannot_add_domino(self): t = Train(5, 5, self.player_five) d = Domino(2, 3) self.assertFalse(t.add_domino(d, self.player_two))
def test_can_add_domino(self): t = Train(2, 2, self.player_two) d = Domino(2, 3) self.assertTrue(t.add_domino(d, self.player_two))
def test_does_not_demand_satisfaction(self): t = Train(2, 2, self.player_two) d = Domino(2, 3) t.add_domino(d, self.player_two) self.assertFalse(t.demands_satisfaction) self.assertTrue(t.private)