async def test_simple_scan(self):
        randomizer = Randomizer(seed=3284)
        await self.system_clock_fast_forward(speed_multiplier=20)

        commutator, error = await self.login('oreman', "127.0.0.1")
        self.assertIsNotNone(commutator)
        self.assertIsNone(error)
        clock = modules.get_system_clock(commutator)
        self.assertIsNotNone(clock)

        miner_1 = modules.get_ship(commutator, ShipType.MINER.value, "miner-1")
        self.assertIsNotNone(miner_1)
        scanner = modules.PassiveScanner.get_by_name(miner_1, "perceiver")
        self.assertIsNotNone(scanner)
        spec = await scanner.get_specification()
        self.assertIsNotNone(spec)

        ship_position = await miner_1.get_position()

        spawned_asteroids: List[types.PhysicalObject] = [
            await self.administrator.get_spawner().spawn_asteroid(
                position=randomizer.random_position(
                    center=ship_position,
                    radius=2 * spec.scanning_radius_km * 1000),
                composition=types.make_resources(ice=100, metals=32),
                radius=randomizer.random_value(5, 20)) for i in range(1000)
        ]

        # Take 10 seconds to scan
        scanned_objects = await TestCase.scanning(scanner, clock, 10000)

        for candidate in spawned_asteroids:
            distance = ship_position.distance_to(candidate.position)
            if distance <= spec.scanning_radius_km * 1000:
                self.assertIn(candidate.object_id, scanned_objects)
Ejemplo n.º 2
0
 async def test_spawn_asteroids(self):
     """Check that spawn.asteroid request returns asteroid id"""
     self.assertTrue(await self.system_clock_play())
     randomizer = Randomizer(2132)
     spawner = self.administrator.spawner
     for i in range(100):
         now = await self.system_clock_time()
         asteroid = await spawner.spawn_asteroid(
             position=randomizer.random_position(rect=types.Rect(
                 -1000, 1000, -1000, 1000),
                                                 min_speed=0,
                                                 max_speed=1000),
             composition=types.make_resources(ice=100, metals=32),
             radius=10)
         assert asteroid is not None
         assert asteroid.position.timestamp.usec() >= now