FR

Slave Rift

par tueb2024 · Tir
5,0 (1)
▶ Jouer 💬 Avis Sources 🕘 Versions Éditer GitHub
games/slave-rift / tests / MenuFlowTest.php · commit 1e9ac38
<?phpnamespace App\Tests;use App\Game\GameMode;use App\Game\MenuFlow;use PHPUnit\Framework\TestCase;final class MenuFlowTest extends TestCase{    public function testMainMenuAndAllFourDailyChoicesSharePointerAndKeyboardActions(): void    {        foreach (['normal','daily','horde','controls'] as $i=>$expected) {            $menu = new MenuFlow(); self::assertSame('main',$menu->screen);            [$x,$y,$w,$h] = $menu->rect($i);            self::assertSame($i,$menu->hit($x+$w/2,$y+$h/2));            self::assertSame($expected,$menu->activate($menu->hit($x+$w/2,$y+$h/2)));            self::assertSame(match ($expected) {'daily'=>'daily','controls'=>'controls',default=>'play'},$menu->screen);        }        $menu=new MenuFlow();$menu->activate(1);        self::assertSame(['daily_start','back'],array_keys($menu->items()));        self::assertSame('daily_start',$menu->activate());        self::assertSame(GameMode::DAILY,$menu->mode);self::assertSame('play',$menu->screen);    }    public function testPauseAndTerminalMenusReturnWithoutStartingAnotherRun(): void    {        foreach (['pause','dead','won'] as $screen) foreach ([GameMode::NORMAL,GameMode::DAILY,GameMode::HORDE] as $mode) {            $menu = new MenuFlow(); $menu->mode=$mode; $menu->open($screen);            $index = array_search('menu',array_keys($menu->items()),true);            self::assertIsInt($index);            self::assertSame('menu',$menu->activate($index));            self::assertSame('main',$menu->screen);        }    }    public function testEveryChoiceHasANonoverlappingTouchTarget(): void    {        foreach (['main','daily','controls','pause','dead','won'] as $screen) {            $menu = new MenuFlow(); $menu->open($screen);            foreach (array_values($menu->items()) as $i=>$_) {                [$x,$y,$w,$h] = $menu->rect($i);                self::assertGreaterThanOrEqual(20,$h);                self::assertLessThanOrEqual(166,$y+$h);                self::assertSame($i,$menu->hit($x+$w/2,$y+$h/2));            }        }    }}