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

75 lines
2.7 KiB
PHP

<?php
namespace nulib\php\time;
use nulib\tests\TestCase;
use nulib\ValueException;
class TimeTest extends TestCase {
function testParse() {
self::assertSame("08:00:00", strval(new Time("08:00:00")));
self::assertSame("08:00:00", strval(new Time("8:0")));
self::assertSame("08:00:00", strval(new Time("8.0")));
self::assertSame("08:00:00", strval(new Time("8h")));
self::assertSame("08:15:00", strval(new Time("08:15:00")));
self::assertSame("08:15:00", strval(new Time("8:15")));
self::assertSame("08:15:00", strval(new Time("8.15")));
self::assertSame("08:15:00", strval(new Time("8h15")));
self::assertSame("08:15:23", strval(new Time("08:15:23")));
self::assertSame("08:15:23", strval(new Time("8:15.23")));
self::assertSame("08:15:23", strval(new Time("8.15.23")));
self::assertSame("08:15:23", strval(new Time("8h15.23")));
self::assertSame("31:11:20", strval(new Time("30:70:80", [
"wrap" => false,
])));
self::assertSame("07:11:20", strval(new Time("30:70:80")));
self::assertException(ValueException::class, function() {
return strval(new Time("bad format"));
});
}
function testGetu() {
self::assertSame(0, (new Time(0))->getu());
self::assertSame(86399, (new Time(-1))->getu());
self::assertSame(1, (new Time(1))->getu());
self::assertSame(120, (new Time(120))->getu());
self::assertSame(86400, (new Time(86400))->getu());
self::assertSame(0, (new Time(-86400))->getu());
}
function testAddu() {
$t = new Time(0);
$t->addu(0); self::assertSame(0, $t->getu());
$t->addu(10); self::assertSame(10, $t->getu());
$t->addu(10); self::assertSame(20, $t->getu());
$t->addu(100); self::assertSame(120, $t->getu());
$t->addu(86280); self::assertSame(86400, $t->getu());
$t->addu(86400); self::assertSame(0, $t->getu());
$t->addu(-86400); self::assertSame(0, $t->getu());
}
function testSubu() {
$t = new Time(0);
$t->subu(-86400); self::assertSame(86400, $t->getu());
$t->subu(86400); self::assertSame(0, $t->getu());
$t = new Time(120);
$t->subu(100); self::assertSame(20, $t->getu());
$t->subu(10); self::assertSame(10, $t->getu());
$t->subu(10); self::assertSame(0, $t->getu());
$t->subu(0); self::assertSame(0, $t->getu());
}
function testFormat() {
self::assertSame("00:00:00", (new Time(0))->format());
self::assertSame("00:00:56", (new Time(56))->format());
self::assertSame("00:02:00", (new Time(120))->format());
self::assertSame("23:59:59", (new Time(86399))->format());
self::assertSame("24:00:00", (new Time(86400))->format());
self::assertSame("00:00:01", (new Time(86401))->format());
}
}