Esempio n. 1
0
    def test_navigate_pokestops_known(self):
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        navigator = FortNavigator(config, api_wrapper)

        pgoapi = api_wrapper.get_api()
        pgoapi.set_response('fort_details', self._create_pokestop("Test Stop", 51.5043872, -0.0741802))
        pgoapi.set_response('fort_details', self._create_pokestop("Test Stop 2", 51.5060435, -0.073983))

        map_cells = self._create_map_cells()

        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            if len(destinations) == 0:
                assert destination.target_lat == 51.5043872
                assert destination.target_lng == -0.0741802
                assert destination.name == "PokeStop \"Test Stop\""
            elif len(destinations) == 1:
                assert destination.target_lat == 51.5060435
                assert destination.target_lng == -0.073983
                assert destination.name == "PokeStop \"Test Stop 2\""

            destinations.append(destination)

        assert len(destinations) == 2
        assert pgoapi.call_stack_size() == 0
Esempio n. 2
0
    def test_snap_to_over_distance():
        config = create_core_test_config({
            "movement": {
                "walk_speed": 5,
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = DirectPathFinder(config)
        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)
        stepper.start(51.50451, -0.07607, 10)

        # pre-calculated distance is 17.8 meters
        stepper.snap_to(51.50436, -0.07616, 11)

        pgo = api_wrapper.get_api()
        lat, lng, alt = pgo.get_position()

        assert stepper.current_lat == 51.50451
        assert stepper.current_lng == -0.07607
        assert stepper.current_alt == 10
        assert lat == 51.50451
        assert lng == -0.07607
        assert alt == 10
Esempio n. 3
0
    def test_get_cells_no_response():
        account = test_account_name()
        config = create_core_test_config({
            "login": {
                "username": account
            },
            "mapping": {
                "cell_radius": 500
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        google_maps = Mock(spec=Client)
        logger = Mock()
        logger.log = Mock(return_value=None)
        mapper = Mapper(config, api_wrapper, google_maps, logger)

        api_wrapper.set_position(51.5044524, -0.0752479, 10)

        pgo = api_wrapper.get_api()
        pgo.set_response("get_map_objects", {})
        api_wrapper.call = Mock(return_value=None)

        # Clean up any old location logs
        if os.path.isfile('data/last-location-' + account + '.json'):
            os.unlink('data/last-location-' + account + '.json')

        cells = mapper.get_cells(51.5044524, -0.0752479)

        assert len(cells) == 0
Esempio n. 4
0
    def test_navigate_waypoint_remove_runtime(self):
        config = create_core_test_config({
            "movement": {
                "navigator_waypoints": [[51.5043872, -0.0741802],
                                        [51.5060435, -0.073983]]
            }
        })
        api_wrapper = create_mock_api_wrapper(config)

        navigator = WaypointNavigator(config, api_wrapper)
        map_cells = self._create_map_cells()

        waypoint_remove = True
        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            assert destination.target_lat == 51.5043872
            assert destination.target_lng == -0.0741802
            assert destination.name == "Waypoint at 51.5043872,-0.0741802"

            # Inject a new waypoint after first visit
            if waypoint_remove is True:
                navigator.waypoint_remove(1)
                waypoint_remove = False

            destinations.append(destination)

        assert len(destinations) == 1
    def test_navigate_waypoint_remove_runtime(self):
        config = create_core_test_config({
            "movement": {
                "navigator_waypoints": [
                    [51.5043872, -0.0741802],
                    [51.5060435, -0.073983]
                ]
            }
        })
        api_wrapper = create_mock_api_wrapper(config)

        navigator = WaypointNavigator(config, api_wrapper)
        map_cells = self._create_map_cells()

        waypoint_remove = True
        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            assert destination.target_lat == 51.5043872
            assert destination.target_lng == -0.0741802
            assert destination.name == "Waypoint at 51.5043872,-0.0741802"

            # Inject a new waypoint after first visit
            if waypoint_remove is True:
                navigator.waypoint_remove(1)
                waypoint_remove = False

            destinations.append(destination)

        assert len(destinations) == 1
Esempio n. 6
0
    def test_start():
        config = create_core_test_config({
            "movement": {
                "walk_speed": 4.16,
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = DirectPathFinder(config)
        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)

        stepper.start(51.5044524, -0.0752479, 10)

        assert stepper.origin_lat == 51.5044524
        assert stepper.origin_lng == -0.0752479
        assert stepper.origin_alt == 10

        assert stepper.current_lat == 51.5044524
        assert stepper.current_lng == -0.0752479
        assert stepper.current_alt == 10

        pgo = api_wrapper.get_api()
        lat, lng, alt = pgo.get_position()

        assert lat == 51.5044524
        assert lng == -0.0752479
        assert alt == 10
    def test_navigate_waypoint_remove(self):
        config = create_core_test_config({
            "movement": {
                "navigator_waypoints": [
                    [51.5043872, -0.0741802],
                    [51.5060435, -0.073983]
                ]
            }
        })
        api_wrapper = create_mock_api_wrapper(config)

        navigator = WaypointNavigator(config, api_wrapper)
        map_cells = self._create_map_cells()

        navigator.waypoint_remove(0)

        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            assert destination.target_lat == 51.5060435
            assert destination.target_lng == -0.073983
            assert destination.name == "Waypoint at 51.5060435,-0.073983"

            destinations.append(destination)

        assert len(destinations) == 1
Esempio n. 8
0
    def test_get_pokeballs(self):
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        event_manager = Mock()
        logger = Mock()
        logger.log = Mock()
        player_service = Player(api_wrapper, event_manager, logger)

        pgo = api_wrapper.get_api()
        pgo.set_response('get_player', self._create_generic_player_response())
        pgo.set_response('get_inventory', self._create_generic_inventory_response())

        pokeballs = player_service.get_pokeballs()

        assert Item.ITEM_POKE_BALL.value in pokeballs
        assert pokeballs[Item.ITEM_POKE_BALL.value] == 11

        assert Item.ITEM_GREAT_BALL.value in pokeballs
        assert pokeballs[Item.ITEM_GREAT_BALL.value] == 12

        assert Item.ITEM_ULTRA_BALL.value in pokeballs
        assert pokeballs[Item.ITEM_ULTRA_BALL.value] == 13

        assert Item.ITEM_MASTER_BALL.value in pokeballs

        assert pgo.call_stack_size() == 0
Esempio n. 9
0
    def test_navigate_campsite_add_before_start(self):
        config = create_core_test_config({
            "movement": {
                "navigator_campsite": [51.5043872, -0.0741802]
            },
        })
        api_wrapper = create_mock_api_wrapper(config)

        logger = Mock()
        logger.log = Mock(return_value=None)
        navigator = CamperNavigator(config, api_wrapper, logger)
        map_cells = self._create_map_cells()

        navigator.set_campsite(51.5060435, -0.073983)
        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            assert destination.target_lat == 51.5060435
            assert destination.target_lng == -0.073983
            assert destination.name == "Camping position at 51.5060435,-0.073983"

            destinations.append(destination)

        assert len(destinations) == 1
Esempio n. 10
0
    def test_navigate_pokestops_unknown(self):
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        api_wrapper.call = MagicMock(return_value=None)
        navigator = FortNavigator(config, api_wrapper)

        pgoapi = api_wrapper.get_api()

        map_cells = self._create_map_cells()

        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            if len(destinations) == 0:
                assert destination.target_lat == 51.5043872
                assert destination.target_lng == -0.0741802
                assert destination.name == "PokeStop \"fort_unknown1\""
            elif len(destinations) == 1:
                assert destination.target_lat == 51.5060435
                assert destination.target_lng == -0.073983
                assert destination.name == "PokeStop \"fort_unknown2\""

            destinations.append(destination)

        assert len(destinations) == 2
        assert pgoapi.call_stack_size() == 0
Esempio n. 11
0
    def test_init():
        logger = Mock()
        logger.log = Mock(return_value=None)

        config_namespace = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config_namespace)
        event_manager = EventManager()
        player_service = Player(api_wrapper, event_manager, logger)
        pokemon_service = PokemonService(api_wrapper)
        mapper = Mapper(config_namespace, api_wrapper, Mock(), logger)
        path_finder = DirectPathFinder(config_namespace)
        stepper = Stepper(config_namespace, api_wrapper, path_finder, logger)
        navigator = FortNavigator(config_namespace, api_wrapper)

        bot = PokemonGoBot(config_namespace, api_wrapper, player_service, pokemon_service, event_manager, mapper, stepper, navigator, logger)

        assert len(bot.pokemon_list) == 151
        assert len(bot.item_list) == 30
        assert bot.position == (0, 0, 0)

        assert bot.config is config_namespace
        assert bot.api_wrapper is api_wrapper
        assert bot.player_service is player_service
        assert bot.pokemon_service is pokemon_service
        assert bot.event_manager is event_manager
        assert bot.mapper is mapper
        assert bot.stepper is stepper
        assert bot.navigator is navigator
        assert bot.logger is logger
Esempio n. 12
0
    def test_start():
        config = create_core_test_config({"movement": {
            "walk_speed": 4.16,
        }})
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = DirectPathFinder(config)
        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)

        stepper.start(51.5044524, -0.0752479, 10)

        assert stepper.origin_lat == 51.5044524
        assert stepper.origin_lng == -0.0752479
        assert stepper.origin_alt == 10

        assert stepper.current_lat == 51.5044524
        assert stepper.current_lng == -0.0752479
        assert stepper.current_alt == 10

        pgo = api_wrapper.get_api()
        lat, lng, alt = pgo.get_position()

        assert lat == 51.5044524
        assert lng == -0.0752479
        assert alt == 10
    def test_navigate_pokestops_unknown(self):
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        api_wrapper.call = MagicMock(return_value=None)
        navigator = FortNavigator(config, api_wrapper)

        pgoapi = api_wrapper.get_api()

        map_cells = self._create_map_cells()

        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            if len(destinations) == 0:
                assert destination.target_lat == 51.5043872
                assert destination.target_lng == -0.0741802
                assert destination.name == "PokeStop \"fort_unknown1\""
            elif len(destinations) == 1:
                assert destination.target_lat == 51.5060435
                assert destination.target_lng == -0.073983
                assert destination.name == "PokeStop \"fort_unknown2\""

            destinations.append(destination)

        assert len(destinations) == 2
        assert pgoapi.call_stack_size() == 0
    def test_navigate_pokestops_known(self):
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        navigator = FortNavigator(config, api_wrapper)

        pgoapi = api_wrapper.get_api()
        pgoapi.set_response(
            'fort_details',
            self._create_pokestop("Test Stop", 51.5043872, -0.0741802))
        pgoapi.set_response(
            'fort_details',
            self._create_pokestop("Test Stop 2", 51.5060435, -0.073983))

        map_cells = self._create_map_cells()

        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            if len(destinations) == 0:
                assert destination.target_lat == 51.5043872
                assert destination.target_lng == -0.0741802
                assert destination.name == "PokeStop \"Test Stop\""
            elif len(destinations) == 1:
                assert destination.target_lat == 51.5060435
                assert destination.target_lng == -0.073983
                assert destination.name == "PokeStop \"Test Stop 2\""

            destinations.append(destination)

        assert len(destinations) == 2
        assert pgoapi.call_stack_size() == 0
    def test_navigate_campsite_add_before_start(self):
        config = create_core_test_config({
            "movement": {
                "navigator_campsite": [51.5043872, -0.0741802]
            },
        })
        api_wrapper = create_mock_api_wrapper(config)

        logger = Mock()
        logger.log = Mock(return_value=None)
        navigator = CamperNavigator(config, api_wrapper, logger)
        map_cells = self._create_map_cells()

        navigator.set_campsite(51.5060435, -0.073983)
        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            assert destination.target_lat == 51.5060435
            assert destination.target_lng == -0.073983
            assert destination.name == "Camping position at 51.5060435,-0.073983"

            destinations.append(destination)

        assert len(destinations) == 1
Esempio n. 16
0
    def test_navigate_campsite_last_position(self):
        config = create_core_test_config({
            "movement": {
                "navigator_campsite": None
            },
            "mapping": {
                "location": "0,0"
            }
        })
        api_wrapper = create_mock_api_wrapper(config)

        logger = Mock()
        logger.log = Mock(return_value=None)
        navigator = CamperNavigator(config, api_wrapper, logger)
        map_cells = self._create_map_cells()

        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            assert destination.target_lat == 0
            assert destination.target_lng == 0
            assert destination.name == "Camping position at 0,0"

            destinations.append(destination)

        assert len(destinations) == 1
Esempio n. 17
0
    def test_print_stats(self):
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        event_manager = Mock()
        logger = Mock()
        logger.log = Mock()
        player_service = Player(api_wrapper, event_manager, logger)

        pgo = api_wrapper.get_api()
        pgo.set_response('get_player', self._create_generic_player_response())
        pgo.set_response('get_inventory', self._create_generic_inventory_response())

        logger.log.return_value = None

        player_service.print_stats()

        assert logger.log.call_count == 15
        self._assert_log_call(logger.log, 'Username: test_account')
        self._assert_log_call(logger.log, 'Bag storage: 36/350')
        self._assert_log_call(logger.log, 'Pokemon storage: 2/250')
        self._assert_log_call(logger.log, 'Stardust: 20,000')
        self._assert_log_call(logger.log, 'Pokecoins: 10')
        self._assert_log_call(logger.log, 'Poke Balls: 11')
        self._assert_log_call(logger.log, 'Great Balls: 12')
        self._assert_log_call(logger.log, 'Ultra Balls: 13')
        self._assert_log_call(logger.log, '-- Level: 14')
        self._assert_log_call(logger.log, '-- Experience: 15')
        self._assert_log_call(logger.log, '-- Experience until next level: 985')
        self._assert_log_call(logger.log, '-- Pokemon captured: 17')
        self._assert_log_call(logger.log, '-- Pokestops visited: 18')

        assert pgo.call_stack_size() == 0
    def test_navigate_campsite_last_position(self):
        config = create_core_test_config({
            "movement": {
                "navigator_campsite": None
            },
            "mapping": {
                "location": "0,0"
            }
        })
        api_wrapper = create_mock_api_wrapper(config)

        logger = Mock()
        logger.log = Mock(return_value=None)
        navigator = CamperNavigator(config, api_wrapper, logger)
        map_cells = self._create_map_cells()

        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            assert destination.target_lat == 0
            assert destination.target_lng == 0
            assert destination.name == "Camping position at 0,0"

            destinations.append(destination)

        assert len(destinations) == 1
Esempio n. 19
0
    def test_navigate_waypoint(self):
        config = create_core_test_config({
            "movement": {
                "navigator_waypoints": [[51.5043872, -0.0741802],
                                        [51.5060435, -0.073983]]
            }
        })
        api_wrapper = create_mock_api_wrapper(config)

        navigator = WaypointNavigator(config, api_wrapper)
        map_cells = self._create_map_cells()

        destinations = list()
        for destination in navigator.navigate(map_cells):
            assert isinstance(destination, Destination)

            if len(destinations) == 0:
                assert destination.target_lat == 51.5043872
                assert destination.target_lng == -0.0741802
                assert destination.name == "Waypoint at 51.5043872,-0.0741802"
            elif len(destinations) == 1:
                assert destination.target_lat == 51.5060435
                assert destination.target_lng == -0.073983
                assert destination.name == "Waypoint at 51.5060435,-0.073983"

            destinations.append(destination)

        assert len(destinations) == 2
Esempio n. 20
0
    def test_init():
        logger = Mock()
        logger.log = Mock(return_value=None)

        config_namespace = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config_namespace)
        event_manager = EventManager()
        player_service = Player(api_wrapper, event_manager, logger)
        pokemon_service = PokemonService(api_wrapper)
        mapper = Mapper(config_namespace, api_wrapper, Mock(), logger)
        path_finder = DirectPathFinder(config_namespace)
        stepper = Stepper(config_namespace, api_wrapper, path_finder, logger)
        navigator = FortNavigator(config_namespace, api_wrapper)

        bot = PokemonGoBot(config_namespace, api_wrapper, player_service,
                           pokemon_service, event_manager, mapper, stepper,
                           navigator, logger)

        assert len(bot.pokemon_list) == 151
        assert len(bot.item_list) == 30
        assert bot.position == (0, 0, 0)

        assert bot.config is config_namespace
        assert bot.api_wrapper is api_wrapper
        assert bot.player_service is player_service
        assert bot.pokemon_service is pokemon_service
        assert bot.event_manager is event_manager
        assert bot.mapper is mapper
        assert bot.stepper is stepper
        assert bot.navigator is navigator
        assert bot.logger is logger
Esempio n. 21
0
    def test_login_failure():
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        event_manager = Mock()
        logger = Mock()
        logger.log = Mock()
        player_service = Player(api_wrapper, event_manager, logger)

        api_wrapper.get_api().login = Mock(return_value=False)

        assert (player_service.login()) is False
Esempio n. 22
0
    def test_init_path_finder_direct():
        config = create_core_test_config({"movement": {
            "walk_speed": 4.16,
        }})
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = DirectPathFinder(config)
        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)

        assert isinstance(stepper.path_finder, DirectPathFinder)
Esempio n. 23
0
    def test_init_negative_walk():
        config = create_core_test_config({"movement": {
            "walk_speed": -5,
        }})
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = Mock()
        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)

        assert stepper.speed == 4.16
Esempio n. 24
0
    def test_init():
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        google_maps = Mock(spec=Client)
        logger = Mock()
        logger.log = Mock(return_value=None)
        mapper = Mapper(config, api_wrapper, google_maps, logger)

        assert mapper.config == config
        assert mapper.api_wrapper == api_wrapper
        assert mapper.google_maps == google_maps
Esempio n. 25
0
    def test_navigate_waypoint_remove_not_exists():
        config = create_core_test_config({
            "movement": {
                "navigator_waypoints": [[51.5043872, -0.0741802],
                                        [51.5060435, -0.073983]]
            }
        })
        api_wrapper = create_mock_api_wrapper(config)

        navigator = WaypointNavigator(config, api_wrapper)

        navigator.waypoint_remove(100)
Esempio n. 26
0
    def test_init_path_finder_direct():
        config = create_core_test_config({
            "movement": {
                "walk_speed": 4.16,
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = DirectPathFinder(config)
        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)

        assert isinstance(stepper.path_finder, DirectPathFinder)
Esempio n. 27
0
    def test_init_negative_walk():
        config = create_core_test_config({
            "movement": {
                "walk_speed": -5,
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = Mock()
        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)

        assert stepper.speed == 4.16
Esempio n. 28
0
    def test_step():
        config = create_core_test_config({
            "movement": {
                "walk_speed": 5,
                "path_finder": "direct",
                "distance_unit": "m"
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = DirectPathFinder(config)
        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)
        stepper.start(51.50451, -0.07607, 10)

        destination = Destination(51.506000,
                                  -0.075049,
                                  11,
                                  name="Test Destination",
                                  exact_location=False)
        steps = [(51.504778, -0.075838, 10), (51.505092, -0.075650, 11),
                 (51.505436, -0.075446, 11)]
        destination.set_steps(steps)

        pgo = api_wrapper.get_api()

        # This route is being walked: http://www.darrinward.com/lat-long/?id=2163411
        # pre-calculated distance is 17.8 meters
        pointer = 0
        for _ in stepper.step(destination):
            target_lat, target_lng, target_alt = steps[pointer]
            assert stepper.current_lat == target_lat
            assert stepper.current_lng == target_lng
            assert stepper.current_alt == target_alt

            bot_lat, bot_lng, bot_alt = pgo.get_position()
            assert bot_lat == target_lat
            assert bot_lng == target_lng
            assert bot_alt == target_alt

            pointer += 1

        assert pointer == 3

        bot_lat, bot_lng, bot_alt = pgo.get_position()
        assert bot_lat == 51.505436
        assert bot_lng == -0.075446
        assert bot_alt == 11
        assert stepper.current_lat == 51.505436
        assert stepper.current_lng == -0.075446
        assert stepper.current_alt == 11
Esempio n. 29
0
    def test_step():
        config = create_core_test_config({
            "movement": {
                "walk_speed": 5,
                "path_finder": "direct",
                "distance_unit": "m"
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = DirectPathFinder(config)
        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)
        stepper.start(51.50451, -0.07607, 10)

        destination = Destination(51.506000, -0.075049, 11, name="Test Destination", exact_location=False)
        steps = [
            (51.504778, -0.075838, 10),
            (51.505092, -0.075650, 11),
            (51.505436, -0.075446, 11)
        ]
        destination.set_steps(steps)

        pgo = api_wrapper.get_api()

        # This route is being walked: http://www.darrinward.com/lat-long/?id=2163411
        # pre-calculated distance is 17.8 meters
        pointer = 0
        for _ in stepper.step(destination):
            target_lat, target_lng, target_alt = steps[pointer]
            assert stepper.current_lat == target_lat
            assert stepper.current_lng == target_lng
            assert stepper.current_alt == target_alt

            bot_lat, bot_lng, bot_alt = pgo.get_position()
            assert bot_lat == target_lat
            assert bot_lng == target_lng
            assert bot_alt == target_alt

            pointer += 1

        assert pointer == 3

        bot_lat, bot_lng, bot_alt = pgo.get_position()
        assert bot_lat == 51.505436
        assert bot_lng == -0.075446
        assert bot_alt == 11
        assert stepper.current_lat == 51.505436
        assert stepper.current_lng == -0.075446
        assert stepper.current_alt == 11
Esempio n. 30
0
    def test_navigate_waypoint_remove_not_exists():
        config = create_core_test_config({
            "movement": {
                "navigator_waypoints": [
                    [51.5043872, -0.0741802],
                    [51.5060435, -0.073983]
                ]
            }
        })
        api_wrapper = create_mock_api_wrapper(config)

        navigator = WaypointNavigator(config, api_wrapper)

        navigator.waypoint_remove(100)
Esempio n. 31
0
    def test_find_location_with_coordinates():
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        google_maps = Mock(spec=Client)
        google_maps.elevation = Mock(return_value=[{'elevation': 10.1}])
        logger = Mock()
        logger.log = Mock(return_value=None)
        mapper = Mapper(config, api_wrapper, google_maps, logger)

        lat, lng, alt = mapper.find_location('51.5044524, -0.0752479')

        assert lat == 51.5044524
        assert lng == -0.0752479
        assert alt == 10.1
Esempio n. 32
0
    def test_print_stats_no_update(self):
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        event_manager = Mock()
        logger = Mock()
        logger.log = Mock()
        player_service = Player(api_wrapper, event_manager, logger)

        api_wrapper.call = Mock(return_value=None)

        logger.log.return_value = None

        player_service.print_stats()

        self._assert_log_call(logger.log, 'Failed to retrieve player and inventory stats', color='red')
Esempio n. 33
0
    def test_heartbeat(self):
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        event_manager = Mock()
        logger = Mock()
        logger.log = Mock()
        player_service = Player(api_wrapper, event_manager, logger)

        pgo = api_wrapper.get_api()
        pgo.set_response('get_player', self._create_generic_player_response())
        pgo.set_response('get_inventory', self._create_generic_inventory_response())

        player_service.heartbeat()

        assert pgo.call_stack_size() == 0
Esempio n. 34
0
    def _create_generic_bot(config):
        logger = Mock()
        logger.log = Mock()
        config_namespace = create_core_test_config(config)
        api_wrapper = create_mock_api_wrapper(config_namespace)
        event_manager = Mock()
        player_service = Player(api_wrapper, event_manager, logger)
        pokemon_service = PokemonService(api_wrapper)
        mapper = Mapper(config_namespace, api_wrapper, Mock(), logger)
        path_finder = DirectPathFinder(config_namespace)
        stepper = Stepper(config_namespace, api_wrapper, path_finder, logger)
        navigator = FortNavigator(config_namespace, api_wrapper)

        return PokemonGoBot(config_namespace, api_wrapper, player_service,
                            pokemon_service, event_manager, mapper, stepper,
                            navigator, logger)
Esempio n. 35
0
    def test_get_cells(self):
        account = test_account_name()
        config = create_core_test_config({
            "debug": True,
            "login": {
                "username": account,
            },
            "mapping": {
                "cell_radius": 500
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        google_maps = Mock(spec=Client)
        logger = Mock()
        logger.log = Mock(return_value=None)
        mapper = Mapper(config, api_wrapper, google_maps, logger)

        api_wrapper.set_position(51.5044524, -0.0752479, 10)

        pgo = api_wrapper.get_api()
        pgo.set_response(
            "get_map_objects", {
                "map_cells": [
                    self._create_map_cell(1),
                    self._create_map_cell(2),
                    self._create_map_cell(3),
                    self._create_map_cell(4),
                    self._create_map_cell(5)
                ]
            })

        # Clean up any old location logs
        if os.path.isfile('data/last-location-' + account + '.json'):
            os.unlink('data/last-location-' + account + '.json')

        cells = mapper.get_cells(51.5044524, -0.0752479)

        assert len(cells) == 5

        assert bool(
            os.path.isfile('data/last-location-' + account + '.json')) is True
        with open('data/last-location-' + account + '.json') as data_file:
            data = json.load(data_file)
            assert data["lat"] == 51.5044524
            assert data["lng"] == -0.0752479

        os.unlink('data/last-location-' + account + '.json')
Esempio n. 36
0
    def test_get_candies(self):
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        event_manager = Mock()
        logger = Mock()
        logger.log = Mock()
        player_service = Player(api_wrapper, event_manager, logger)

        pgo = api_wrapper.get_api()
        pgo.set_response('get_player', self._create_generic_player_response())
        pgo.set_response('get_inventory', self._create_generic_inventory_response())

        candies = player_service.get_candies()

        assert len(candies) == 1
        assert candies[1] == 100
        assert pgo.call_stack_size() == 0
Esempio n. 37
0
    def test_get_player(self):
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        event_manager = Mock()
        logger = Mock()
        logger.log = Mock()
        player_service = Player(api_wrapper, event_manager, logger)

        pgo = api_wrapper.get_api()
        pgo.set_response('get_player', self._create_generic_player_response())
        pgo.set_response('get_inventory', self._create_generic_inventory_response())

        player = player_service.get_player()

        assert isinstance(player, PlayerData)
        assert player.username == 'test_account'
        assert pgo.call_stack_size() == 0
Esempio n. 38
0
    def test_find_location_with_coordinates_invalid_response():
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        google_maps = Mock(spec=Client)
        google_maps.elevation = Mock(return_value=None)
        location = Mock()
        location.latitude = 51.5044524
        location.longitude = -0.0752479
        location.altitude = 10.1
        google_maps.geocode = Mock(return_value=location)
        logger = Mock()
        logger.log = Mock(return_value=None)
        mapper = Mapper(config, api_wrapper, google_maps, logger)

        lat, lng, alt = mapper.find_location('51.5044524, -0.0752479')

        assert lat == 51.5044524
        assert lng == -0.0752479
        assert alt == 10.1
Esempio n. 39
0
    def test_navigate_campsite_invalid_index(self):
        config = create_core_test_config({
            "movement": {
                "navigator_campsite": [51.5043872, -0.0741802]
            },
        })
        api_wrapper = create_mock_api_wrapper(config)

        logger = Mock()
        logger.log = Mock(return_value=None)
        navigator = CamperNavigator(config, api_wrapper, logger)
        navigator.pointer = 100
        map_cells = self._create_map_cells()

        destinations = list()
        for _ in navigator.navigate(map_cells):
            pass

        assert len(destinations) == 0
    def test_navigate_campsite_invalid_index(self):
        config = create_core_test_config({
            "movement": {
                "navigator_campsite": [51.5043872, -0.0741802]
            },
        })
        api_wrapper = create_mock_api_wrapper(config)

        logger = Mock()
        logger.log = Mock(return_value=None)
        navigator = CamperNavigator(config, api_wrapper, logger)
        navigator.pointer = 100
        map_cells = self._create_map_cells()

        destinations = list()
        for _ in navigator.navigate(map_cells):
            pass

        assert len(destinations) == 0
Esempio n. 41
0
    def test_step_already_near_fort():
        calls = []
        config = create_core_test_config({
            "movement": {
                "walk_speed": 5,
                "path_finder": "direct",
                "distance_unit": "m"
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = DirectPathFinder(config)

        destination = Destination(51.50436,
                                  -0.07616,
                                  11,
                                  name="Test Destination",
                                  exact_location=False)
        steps = [(51.50442, -0.07612, 10), (51.50448, -0.07609, 11),
                 (51.50436, -0.07616, 11)]
        destination.set_steps(steps)

        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)
        stepper.start(51.50451, -0.07607, 10)

        pgo = api_wrapper.get_api()

        # This route is being walked: http://www.darrinward.com/lat-long/?id=2163408
        calls.append(call("walking_started", coords=(51.50436, -0.07616, 11)))
        pointer = 0
        for _ in stepper.step(destination):
            pointer += 1

        assert pointer == 0

        bot_lat, bot_lng, bot_alt = pgo.get_position()
        assert bot_lat == 51.50451
        assert bot_lng == -0.07607
        assert bot_alt == 10
        assert stepper.current_lat == 51.50451
        assert stepper.current_lng == -0.07607
        assert stepper.current_alt == 10
Esempio n. 42
0
    def test_step_already_near_fort():
        calls = []
        config = create_core_test_config({
            "movement": {
                "walk_speed": 5,
                "path_finder": "direct",
                "distance_unit": "m"
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = DirectPathFinder(config)

        destination = Destination(51.50436, -0.07616, 11, name="Test Destination", exact_location=False)
        steps = [
            (51.50442, -0.07612, 10),
            (51.50448, -0.07609, 11),
            (51.50436, -0.07616, 11)
        ]
        destination.set_steps(steps)

        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)
        stepper.start(51.50451, -0.07607, 10)

        pgo = api_wrapper.get_api()

        # This route is being walked: http://www.darrinward.com/lat-long/?id=2163408
        calls.append(call("walking_started", coords=(51.50436, -0.07616, 11)))
        pointer = 0
        for _ in stepper.step(destination):
            pointer += 1

        assert pointer == 0

        bot_lat, bot_lng, bot_alt = pgo.get_position()
        assert bot_lat == 51.50451
        assert bot_lng == -0.07607
        assert bot_alt == 10
        assert stepper.current_lat == 51.50451
        assert stepper.current_lng == -0.07607
        assert stepper.current_alt == 10
Esempio n. 43
0
    def test_init():
        config = create_core_test_config({"movement": {
            "walk_speed": 13.37,
        }})
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = Mock()

        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)

        assert stepper.origin_lat is None
        assert stepper.origin_lng is None
        assert stepper.origin_alt is None

        assert stepper.current_lat is None
        assert stepper.current_lng is None
        assert stepper.current_alt is None

        assert stepper.speed == 13.37
Esempio n. 44
0
    def test_get_route_between():
        config = create_core_test_config({"movement": {
            "walk_speed": 5,
        }})
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = DirectPathFinder(config)
        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)
        stepper.start(51.5044524, -0.0752479, 10)

        # pre-calculated distance is 205.5 meters
        # expected steps is 205.5 / (0.6 * 5) = 68.5 (which rounds to 69)
        steps = stepper.get_route_between(51.5044524, -0.0752479, 51.5062939,
                                          -0.0750065, 10)

        assert len(steps) == 69

        for step in steps:
            assert len(step) == 3
Esempio n. 45
0
    def test_add_candy_new(self):
        config = create_core_test_config()
        api_wrapper = create_mock_api_wrapper(config)
        event_manager = Mock()
        logger = Mock()
        logger.log = Mock()
        player_service = Player(api_wrapper, event_manager, logger)

        pgo = api_wrapper.get_api()
        pgo.set_response('get_player', self._create_generic_player_response())
        pgo.set_response('get_inventory', self._create_generic_inventory_response())

        before_candies = player_service.get_candy(1)
        assert before_candies == 100

        player_service.add_candy(10, 3)
        after_candies = player_service.get_candy(10)

        assert after_candies == 3
        assert pgo.call_stack_size() == 0
Esempio n. 46
0
    def test_get_route_between():
        config = create_core_test_config({
            "movement": {
                "walk_speed": 5,
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = DirectPathFinder(config)
        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)
        stepper.start(51.5044524, -0.0752479, 10)

        # pre-calculated distance is 205.5 meters
        # expected steps is 205.5 / (0.6 * 5) = 68.5 (which rounds to 69)
        steps = stepper.get_route_between(51.5044524, -0.0752479, 51.5062939, -0.0750065, 10)

        assert len(steps) == 69

        for step in steps:
            assert len(step) == 3
Esempio n. 47
0
    def test_init():
        config = create_core_test_config({
            "movement": {
                "walk_speed": 13.37,
            }
        })
        api_wrapper = create_mock_api_wrapper(config)
        path_finder = Mock()

        logger = Mock()
        logger.log = Mock(return_value=None)
        stepper = Stepper(config, api_wrapper, path_finder, logger)

        assert stepper.origin_lat is None
        assert stepper.origin_lng is None
        assert stepper.origin_alt is None

        assert stepper.current_lat is None
        assert stepper.current_lng is None
        assert stepper.current_alt is None

        assert stepper.speed == 13.37
Esempio n. 48
0
    def _create_generic_bot(config):
        logger = Mock()
        logger.log = Mock()
        config_namespace = create_core_test_config(config)
        api_wrapper = create_mock_api_wrapper(config_namespace)
        event_manager = Mock()
        player_service = Player(api_wrapper, event_manager, logger)
        pokemon_service = PokemonService(api_wrapper)
        mapper = Mapper(config_namespace, api_wrapper, Mock(), logger)
        path_finder = DirectPathFinder(config_namespace)
        stepper = Stepper(config_namespace, api_wrapper, path_finder, logger)
        navigator = FortNavigator(config_namespace, api_wrapper)

        return PokemonGoBot(
            config_namespace,
            api_wrapper,
            player_service,
            pokemon_service,
            event_manager,
            mapper,
            stepper,
            navigator,
            logger
        )