false, ]))); self::assertSame("7h11", strval(new Hour("30:70:80"))); self::assertException(ValueException::class, function() { return strval(new Hour("bad format")); }); } function testFormat() { self::assertSame("0h", (new Hour(0))->format()); self::assertSame("0h56", (new Hour(56))->format()); self::assertSame("2h", (new Hour(120))->format()); self::assertSame("23h59", (new Hour(1439))->format()); self::assertSame("24h", (new Hour(1440))->format()); self::assertSame("0h01", (new Hour(1441))->format()); } function testStep() { $h = new Hour(null, [ "step" => 5, ]); $h->setu(10); self::assertSame("0h10", strval($h)); $h->setu(12); self::assertSame("0h10", strval($h)); $h->setu(15); self::assertSame("0h15", strval($h)); $h->setu(17); self::assertSame("0h15", strval($h)); $h->set("8h"); $h->addu(); self::assertSame("8h05", strval($h)); $h->addu(); self::assertSame("8h10", strval($h)); $h->addu(); self::assertSame("8h15", strval($h)); $h->subu(); self::assertSame("8h10", strval($h)); $h->subu(); self::assertSame("8h05", strval($h)); $h->subu(); self::assertSame("8h", strval($h)); } }