def test_update_info(): """Assert that player actually updates its internal state.""" c_player = CounterRPSAgent() assert c_player.last_move is None c_player.update_info(last_move=1) assert c_player.last_move == 1
def test_reset_state(): """Assert that last_move is reset with call to reset_state.""" c_player = CounterRPSAgent() assert c_player.last_move is None c_player.last_move = 0 assert c_player.last_move is not None c_player.reset_state() assert c_player.last_move is None
def add_agents_proportions(self): """Logic for adding agents based on proportions vector.""" num_rock = ceil(float(self.proportions[0]) * self.num_players) num_paper = ceil(float(self.proportions[1]) * self.num_players) num_scissors = ceil(float(self.proportions[2]) * self.num_players) num_mixed = ceil(float(self.proportions[3]) * self.num_players) num_counter = ceil(float(self.proportions[4]) * self.num_players) for rock_ind in range(num_rock): agent_id = 'rock_{}'.format(rock_ind) player = RPSAgent(id_in=agent_id, strategy_in='rock') self.ladder.add_player(player) for paper_ind in range(num_paper): agent_id = 'paper_{}'.format(paper_ind) player = RPSAgent(id_in=agent_id, strategy_in='paper') self.ladder.add_player(player) for sciss_ind in range(num_scissors): agent_id = 'scissors_{}'.format(sciss_ind) player = RPSAgent(id_in=agent_id, strategy_in='scissors') self.ladder.add_player(player) for mixed_ind in range(num_mixed): agent_id = 'mixed_{}'.format(mixed_ind) player = RPSAgent(id_in=agent_id) self.ladder.add_player(player) for counter_ind in range(num_counter): agent_id = 'counter_{}'.format(counter_ind) player = CounterRPSAgent(id_in=agent_id) self.ladder.add_player(player)
def add_agents_config(self): """Logic for adding agents from a specified config.""" for conf in self.config: num_agents = ceil(float(conf["proportion"]*self.num_players)) for agent_ind in range(num_agents): player = None agent_id = "{}_{}".format(conf["agent_type"], agent_ind) strategy = conf.get("agent_strategy", None) weight = conf.get("weight", 1) if conf.get("agent_class") == "counter": player = CounterRPSAgent(id_in=agent_id) elif conf.get("agent_class") == "adjusting": player = AdjustingRPSAgent(id_in=agent_id, strategy_in=strategy, weight=weight) else: player = RPSAgent(id_in=agent_id, strategy_in=strategy) player.type = conf["agent_type"] self.ladder.add_player(player)
def test_make_move(): """Test logic for making moves.""" c_player = CounterRPSAgent() # Makes random move assert c_player.make_move() in [0, 1, 2] # Counters opponent's move opp_move_rock = 0 c_player.last_move = opp_move_rock assert c_player.make_move() == 1 opp_move_paper = 1 c_player.last_move = opp_move_paper assert c_player.make_move() == 2 opp_move_scissors = 2 c_player.last_move = opp_move_scissors assert c_player.make_move() == 0
def test_init(): """Test that class initializes properly.""" CounterRPSAgent()