nur-ture/tests/php/time/HourTest.php

61 lines
2.1 KiB
PHP

<?php
namespace nulib\php\time;
use nulib\tests\TestCase;
use nulib\ValueException;
class HourTest extends TestCase {
function testParse() {
self::assertSame("8h", strval(new Hour("08:00:00")));
self::assertSame("8h", strval(new Hour("8:0")));
self::assertSame("8h", strval(new Hour("8.0")));
self::assertSame("8h", strval(new Hour("8h")));
self::assertSame("8h15", strval(new Hour("08:15:00")));
self::assertSame("8h15", strval(new Hour("8:15")));
self::assertSame("8h15", strval(new Hour("8.15")));
self::assertSame("8h15", strval(new Hour("8h15")));
self::assertSame("8h15", strval(new Hour("08:15:23")));
self::assertSame("8h15", strval(new Hour("8:15.23")));
self::assertSame("8h15", strval(new Hour("8.15.23")));
self::assertSame("8h15", strval(new Hour("8h15.23")));
self::assertSame("31h11", strval(new Hour("30:70:80", [
"wrap" => 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));
}
}