Example #1
0
    def test_copy(self):
        agent = Agent(0, 0)

        copy = agent.copy()
        copy.x = 10
        copy.y = 20

        self.assertEqual(0, agent.x)
        self.assertEqual(0, agent.y)

        self.assertEqual(10, copy.x)
        self.assertEqual(20, copy.y)
Example #2
0
    def test_next_step(self):
        world = GridWorld(10, 10)
        world.add_agent(Agent(0, 0))
        world.add_object(Treasure(8, 8))

        world.next_step()
        self.assertEqual(1, world.step)
Example #3
0
    def test_apply_on_boundary(self):
        state = GridWorld(10, 10)
        state.add_agent(Agent(9, 0))

        next_state = MoveRight().apply(state)

        self.assertEqual(1, next_state.step)
        self.assertEqual(9, next_state.agent.x)
Example #4
0
    def test_apply(self):
        state = GridWorld(10, 10)
        state.add_agent(Agent(0, 5))

        next_state = MoveDown().apply(state)

        self.assertEqual(1, next_state.step)
        self.assertEqual(4, next_state.agent.y)
Example #5
0
    def test_apply_boundary(self):
        state = GridWorld(10, 10)
        state.add_agent(Agent(0, 9))

        next_state = MoveUp().apply(state)

        self.assertEqual(1, next_state.step)
        self.assertEqual(9, next_state.agent.y)
Example #6
0
    def test_encode_with_agent_position_layer(self):
        state = GridWorld(4, 4)
        state.add_agent(Agent(0, 0))

        encoder = OneHotEncoder(4, 4, agent_position=True, treasure_position=False)

        expected = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

        assert_array_equal(expected, encoder.encode(state))
Example #7
0
    def test_add_agent(self):
        world = GridWorld(10, 10)
        world.add_agent(Agent(0, 0))

        self.assertEqual(0, world.agent.x)
        self.assertEqual(0, world.agent.y)

        self.assertEqual(1, len(world.get_objects()))
        self.assertListEqual([Agent], world.get_object_types())
        self.assertEqual(1, len(world.get_objects_by_type(Agent)))
Example #8
0
    def test_encode_with_multiple_layers(self):
        state = GridWorld(4, 4)
        state.add_agent(Agent(0, 0))
        state.add_object(Treasure(2, 3))

        encoder = OneHotEncoder(4, 4, agent_position=True, treasure_position=True)

        expected = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]

        assert_array_equal(expected, encoder.encode(state))
Example #9
0
    def test_agent_is_at_treasure(self):
        world = GridWorld(10, 10)
        world.add_agent(Agent(0, 0))
        world.add_object(Treasure(8, 8))

        self.assertFalse(world.agent.is_at_any_object(world.get_objects_by_type(Treasure)))

        world.agent.x = 8
        world.agent.y = 8

        self.assertTrue(world.agent.is_at_any_object(world.get_objects_by_type(Treasure)))
Example #10
0
    def generate_grid_world(self):
        grid_world = GridWorld(self.width, self.height)

        if self.treasure_position:
            grid_world.add_object(Treasure(*self.treasure_position))
        else:
            grid_world.add_object(
                Treasure(*grid_world.get_random_free_position()))

        grid_world.add_agent(Agent(*grid_world.get_random_free_position()))

        return grid_world
Example #11
0
    def test_copy(self):
        world = GridWorld(10, 10)
        world.add_agent(Agent(0, 0))
        world.add_object(Treasure(8, 8))

        copy = world.copy()
        copy.step = 1
        copy.width = 5
        copy.height = 5
        copy.agent.x = 1
        copy.agent.y = 2

        copy_treasure = copy.get_object_by_type(Treasure)

        copy_treasure.x = 2
        copy_treasure.y = 3

        self.assertEqual(0, world.step)
        self.assertEqual(10, world.width)
        self.assertEqual(10, world.height)

        self.assertEqual(0, world.agent.x)
        self.assertEqual(0, world.agent.y)

        treasure = world.get_object_by_type(Treasure)

        self.assertIsNotNone(treasure)
        self.assertEqual(8, treasure.x)
        self.assertEqual(8, treasure.y)

        self.assertEqual(1, copy.step)
        self.assertEqual(5, copy.width)
        self.assertEqual(5, copy.height)

        self.assertEqual(1, copy.agent.x)
        self.assertEqual(2, copy.agent.y)

        self.assertEqual(2, copy_treasure.x)
        self.assertEqual(3, copy_treasure.y)
Example #12
0
    def test_is_valid_on_boundary(self):
        state = GridWorld(10, 10)
        state.add_agent(Agent(9, 0))

        self.assertFalse(MoveRight().__is_valid__(state))
Example #13
0
    def test_is_valid(self):
        state = GridWorld(10, 10)
        state.add_agent(Agent(0, 0))

        self.assertTrue(MoveRight().__is_valid__(state))
Example #14
0
    def test_init(self):
        agent = Agent(0, 0)

        self.assertEqual(0, agent.x)
        self.assertEqual(0, agent.y)