登录
ZH
games/webrtc-demo / tests / LinkTest.php · commit 87ad512
<?phpnamespace Tests;use App\Scene\LinkScene;use JumPHP\Testing\GameTestCase;/** Two peers on one screen: they connect, a PING comes back as a PONG, A's cursor reaches B through the unreliable channel. */final class LinkTest extends GameTestCase{    public function testTheTwoPeersConnect(): void    {        $this->game->start(LinkScene::class);        $this->game->run(20);        self::assertSame('connected', $this->game->peek('stateA'));        self::assertSame('connected', $this->game->peek('stateB'));    }    public function testAPingComesBackAsAPong(): void    {        $this->game->start(LinkScene::class);        $this->game->run(20);        $this->game->press('send');        $this->game->run(10);        self::assertSame(1, $this->game->peek('pings'));        self::assertSame(1, $this->game->peek('received'));        self::assertNotNull($this->game->peek('rtt'));        $this->game->shot('link-pong');    }    public function testTheCursorOfAAppearsOnB(): void    {        $this->game->start(LinkScene::class);        $this->game->run(20);        $this->game->hold('right', 30);        $this->game->run(5);        $cursor = $this->game->peek('cursor');        $ghost = $this->game->peek('ghost');        self::assertGreaterThan(0.7, $cursor[0]);        self::assertNotNull($ghost);        self::assertEqualsWithDelta($cursor[0], $ghost[0], 0.05);        self::assertGreaterThan(10, $this->game->peek('cursorPackets'));    }    public function testEscapeGoesBackToTheMenu(): void    {        $this->game->start(LinkScene::class);        $this->game->press('back');        $this->game->run(40);        self::assertInstanceOf(\App\Scene\TitleScene::class, $this->game->scene());    }}