Files
Investidor-V2/tests/Unit/EducationGapCalculatorTest.php
T
nala 250ac35fd1
tests / ci (push) Canceled after 0s
first commit
2026-09-28 10:01:09 +02:00

34 lines
1.5 KiB
PHP

<?php
namespace Tests\Unit;
use App\Services\EducationGapCalculator;
use InvalidArgumentException;
use PHPUnit\Framework\TestCase;
class EducationGapCalculatorTest extends TestCase
{
public function test_unknown_supply_is_not_zero_and_invalid_comparisons_are_not_gaps(): void
{
$calculator = new EducationGapCalculator;
$this->assertSame(['state' => 'insufficient_data', 'people' => null], $calculator->observed(100, null, true, true));
$this->assertSame(['state' => 'insufficient_data', 'people' => null], $calculator->observed(null, 10, true, true));
$this->assertSame(['state' => 'incomparable', 'people' => null], $calculator->observed(100, 10, false, true));
$this->assertSame(['state' => 'expired', 'people' => null], $calculator->observed(100, 10, true, false));
}
public function test_comparable_people_produce_only_an_unvalidated_nonnegative_gap(): void
{
$calculator = new EducationGapCalculator;
$this->assertSame(['state' => 'observed_unvalidated', 'people' => 60], $calculator->observed(100, 40, true, true));
$this->assertSame(0, $calculator->observed(10, 40, true, true)['people']);
$this->assertSame(10, $calculator->observed(10, 0, true, true)['people']);
}
public function test_negative_quantities_are_rejected(): void
{
$this->expectException(InvalidArgumentException::class);
(new EducationGapCalculator)->observed(10, -1, true, true);
}
}