format()); self::assertSame("0h56", (new Hour(56))->format()); self::assertSame("2h00", (new Hour(120))->format()); self::assertSame("23h59", (new Hour(1439))->format()); self::assertSame("24h00", (new Hour(1440))->format()); self::assertSame("0h01", (new Hour(1441))->format()); } function testStep() { $h = new class extends Hour { const STEP = 5; }; $h = $h->newu(10); self::assertSame("0h10", strval($h)); $h = $h->newu(12); self::assertSame("0h10", strval($h)); $h = $h->newu(15); self::assertSame("0h15", strval($h)); $h = $h->newu(17); self::assertSame("0h15", strval($h)); } }