def test_generate_build_time_with_already_builded_buildings(self): build_simulator = BuildSimulator(['main', 'main']) build_simulator.build_time = 0 build_simulator.village.buildings['main'].level = 4 build_simulator.template = [] build_simulator.build_template = ['main', 'main', 'main', 'main'] build_simulator.generate_build_time() self.assertEqual(build_simulator.build_time, 0)
def __init__(self, template, file_name='brute_force_best.txt', build_simulator_kwargs=None, buildings=None): self.template = template[:] self.build_simulator_kwargs = build_simulator_kwargs or {} build_simulator = BuildSimulator(self.template, **self.build_simulator_kwargs) self.initial_build_time, self.build_time = build_simulator.build_time, build_simulator.build_time self.file_name = file_name self.buildings = buildings or ('storage', 'farm', 'main', 'iron', 'stone', 'wood')
def run(self): while True: for template in self.template_generator(): build_simulator = BuildSimulator(template, **self.build_simulator_kwargs) if int(build_simulator.build_time) < int(self.build_time): self.build_time = build_simulator.build_time self.template = build_simulator.template print( 'Found better template. The template would be built within {} seconds' .format(self.build_time)) self.save_template() break else: print('I cannot find better template anymore.' 'The initial template would be built within {} seconds. ' 'The template i found would be built within {} seconds.' 'I saved {} seconds for you.'.format( self.initial_build_time, self.build_time, self.initial_build_time - self.build_time)) break
def test_build_time(self): build_simulator = BuildSimulator(['main', 'main', 'main', 'main']) self.assertEqual(72830.76923076922, build_simulator.build_time) build_simulator = BuildSimulator(['storage', 'farm', 'main', 'main']) self.assertEqual(42646.153846153844, build_simulator.build_time)
def test_generate_build_time_with_too_small_farm_level(self): build_simulator = BuildSimulator(['main'] * 30) self.assertEqual(build_simulator.template.count('farm'), 6)
def test_generate_build_time_with_high_building_level(self): build_simulator = BuildSimulator(['farm'] * 35) self.assertEqual(build_simulator.template.count('farm'), 30)
def test_build_time_with_supply(self): build_simulator = BuildSimulator(['storage', 'farm', 'main', 'main'], supply_resources=True) self.assertEqual(438.6286544833749, build_simulator.build_time) self.assertEqual(304.83212638428677, build_simulator.need_wood) self.assertEqual(268.83212638428677, build_simulator.need_stone) self.assertEqual(224.83212638428674, build_simulator.need_iron)
def test_target_resources(self): build_simulator = BuildSimulator(['storage', 'farm', 'main', 'main'], target_resources=(3, 300, 9000)) self.assertEqual(1277723.0769230768, build_simulator.build_time) self.assertEqual(9000, build_simulator.target_iron) self.assertEqual(9000, build_simulator.village.iron)
def build_time(self): return BuildSimulator(self.chromosome).build_time