def test_feeding_to_json(self): self.assertEqual(Convert.feeding_to_json(self.feed_1), self.json_feed_1) self.assertEqual(Convert.feeding_to_json(self.feed_2), self.json_feed_2) self.assertEqual(Convert.feeding_to_json(self.feed_3), self.json_feed_3) self.assertEqual(Convert.feeding_to_json(self.feed_4), self.json_feed_4)
def decode(self, msg): """ Decides which type of message the server has sent and verifies that the timing of the message is valid and communicates to the player if the message is valid. :param msg: the message from the server to decode. :return: the message to send to the Dealer, if any. """ if msg == "ok": return if "feeding" in possible_next_states[self.state] and len(msg) == 5: player = Convert.json_to_player_state(msg[0:3]) opponents = Convert.json_to_listof_listof_species(msg[4]) feeding = self.player.next_feeding(player, msg[3], opponents) self.state = "feeding" return Convert.feeding_to_json(feeding) (player, wh) = self.decode_start(msg) if player and "start" in possible_next_states[self.state]: print("Got start message") self.player.start(player, wh) self.state = "start" return decode_choose = self.decode_choose(msg) if decode_choose and "choose" in possible_next_states[self.state]: print("Choosing action") choice = self.player.choose(decode_choose) self.state = "choose" return Convert.action_to_json(choice) raise Exception