assertSame(Room::STATE_LOBBY, $room->state); } #[Test] public function addPlayerIncrementsCount(): void { $room = new Room('test'); $player = new Player('p1', 'Alice', new InputState(), $room->entities, $room); $room->addPlayer($player); $this->assertCount(1, $room->players); $this->assertArrayHasKey('p1', $room->players); } #[Test] public function alivePlayersReturnsNonDead(): void { $room = new Room('test'); $p1 = new Player('p1', 'A', new InputState(), $room->entities, $room); $p2 = new Player('p2', 'B', new InputState(), $room->entities, $room); $room->addPlayer($p1); $room->addPlayer($p2); $p1->dead = true; $this->assertCount(1, $room->alivePlayers()); $this->assertSame('p2', $room->alivePlayers()[0]->id); } #[Test] public function highestScore(): void { $room = new Room('test'); $p1 = new Player('p1', 'A', new InputState(), $room->entities, $room); $p2 = new Player('p2', 'B', new InputState(), $room->entities, $room); $room->addPlayer($p1); $room->addPlayer($p2); $p2->score = 42; $this->assertSame(42, $room->highestScore()); } #[Test] public function pushEventAndFlush(): void { $room = new Room('test'); $room->pushEvent('kill', ['x' => 1.0, 'y' => 2.0, 'color' => [1.0, 0.0, 0.0, 1.0]]); $this->assertCount(1, $room->events); $this->assertSame('kill', $room->events[0]['k']); $flushed = $room->flushEvents(); $this->assertCount(1, $flushed); $this->assertCount(0, $room->events); } }