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)
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