[ 'produce' => 2, 'consume' => 1, 'capacity_add' => 3, ], ]; $configLoader = new ConfigLoader($config); $calculator = new AutoCostCalculator($configLoader); $blueprint = [ 'effects' => [ ['type' => 'produce', 'value' => 10], ['type' => 'consume', 'value' => 5], ['type' => 'capacity_add', 'value' => 3], ], 'auto_cost' => true, ]; $planetBuildings = []; $raceKey = 'human'; $result = $calculator->calculate($blueprint, $planetBuildings, $raceKey); $this->assertEquals(10 * 2, $result['score']); // produce * weight $this->assertEquals(5 * 1, $result['cost']); // consume * weight $this->assertEquals(3 * 3, $result['build_time']); // capacity_add * weight } public function testFallbackToFixedCosts(): void { $configLoader = $this->createMock(ConfigLoader::class); $calculator = new AutoCostCalculator($configLoader); $blueprint = [ 'effects' => [], 'cost' => 100, 'build_time' => 60, ]; $planetBuildings = []; $raceKey = 'human'; $result = $calculator->calculate($blueprint, $planetBuildings, $raceKey); $this->assertEquals(100, $result['cost']); $this->assertEquals(60, $result['build_time']); } }