61 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			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));
 | |
|   }
 | |
| }
 |