35 lines
1.1 KiB
PHP
35 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Tests\Unit;
|
|
|
|
use App\Config\ConfigLoader;
|
|
use App\Config\ConfigValidator;
|
|
use App\Module\PlanetGenerator\Service\PlanetGenerator;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
final class PlanetGeneratorTest extends TestCase
|
|
{
|
|
public function testIceConstraintsAndScore(): void
|
|
{
|
|
$loader = new ConfigLoader(new ConfigValidator(), dirname(__DIR__, 3) . '/config');
|
|
$generator = new PlanetGenerator($loader);
|
|
|
|
$result = $generator->generate('ice', 'normal', 1234);
|
|
$mods = $result['modifiers'];
|
|
|
|
self::assertGreaterThanOrEqual(0.5, $mods['water']);
|
|
self::assertLessThanOrEqual(-0.6, $mods['energy']);
|
|
self::assertGreaterThanOrEqual(-80, $result['temperature_c']);
|
|
self::assertLessThanOrEqual(-10, $result['temperature_c']);
|
|
|
|
$config = $loader->planetClasses();
|
|
$target = (float)$config['tiers']['normal']['target_score'];
|
|
$epsilon = (float)$config['tiers']['normal']['epsilon'];
|
|
$score = $generator->calculateScore($mods);
|
|
|
|
self::assertEquals($target, $score, '', $epsilon);
|
|
}
|
|
}
|