forked from GNUsocial/gnu-social
		
	
		
			
				
	
	
		
			135 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php declare(strict_types=1);
 | |
| /*
 | |
|  * This file is part of phpunit/php-timer.
 | |
|  *
 | |
|  * (c) Sebastian Bergmann <sebastian@phpunit.de>
 | |
|  *
 | |
|  * For the full copyright and license information, please view the LICENSE
 | |
|  * file that was distributed with this source code.
 | |
|  */
 | |
| namespace SebastianBergmann\Timer;
 | |
| 
 | |
| use PHPUnit\Framework\TestCase;
 | |
| 
 | |
| /**
 | |
|  * @covers \SebastianBergmann\Timer\Timer
 | |
|  */
 | |
| final class TimerTest extends TestCase
 | |
| {
 | |
|     public function testCanBeStartedAndStopped(): void
 | |
|     {
 | |
|         $this->assertIsFloat(Timer::stop());
 | |
|     }
 | |
| 
 | |
|     public function testCanFormatTimeSinceStartOfRequest(): void
 | |
|     {
 | |
|         $this->assertStringMatchesFormat('%f %s', Timer::timeSinceStartOfRequest());
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @backupGlobals enabled
 | |
|      */
 | |
|     public function testCanFormatSinceStartOfRequestWhenRequestTimeIsNotAvailableAsFloat(): void
 | |
|     {
 | |
|         if (isset($_SERVER['REQUEST_TIME_FLOAT'])) {
 | |
|             unset($_SERVER['REQUEST_TIME_FLOAT']);
 | |
|         }
 | |
| 
 | |
|         $this->assertStringMatchesFormat('%f %s', Timer::timeSinceStartOfRequest());
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @backupGlobals enabled
 | |
|      */
 | |
|     public function testCannotFormatTimeSinceStartOfRequestWhenRequestTimeIsNotAvailable(): void
 | |
|     {
 | |
|         if (isset($_SERVER['REQUEST_TIME_FLOAT'])) {
 | |
|             unset($_SERVER['REQUEST_TIME_FLOAT']);
 | |
|         }
 | |
| 
 | |
|         if (isset($_SERVER['REQUEST_TIME'])) {
 | |
|             unset($_SERVER['REQUEST_TIME']);
 | |
|         }
 | |
| 
 | |
|         $this->expectException(RuntimeException::class);
 | |
| 
 | |
|         Timer::timeSinceStartOfRequest();
 | |
|     }
 | |
| 
 | |
|     public function testCanFormatResourceUsage(): void
 | |
|     {
 | |
|         $this->assertStringMatchesFormat('Time: %s, Memory: %f %s', Timer::resourceUsage());
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dataProvider secondsProvider
 | |
|      */
 | |
|     public function testCanFormatSecondsAsString(string $string, float $seconds): void
 | |
|     {
 | |
|         $this->assertEquals($string, Timer::secondsToTimeString($seconds));
 | |
|     }
 | |
| 
 | |
|     public function secondsProvider(): array
 | |
|     {
 | |
|         return [
 | |
|             ['0 ms', 0],
 | |
|             ['1 ms', .001],
 | |
|             ['10 ms', .01],
 | |
|             ['100 ms', .1],
 | |
|             ['999 ms', .999],
 | |
|             ['1 second', .9999],
 | |
|             ['1 second', 1],
 | |
|             ['2 seconds', 2],
 | |
|             ['59.9 seconds', 59.9],
 | |
|             ['59.99 seconds', 59.99],
 | |
|             ['59.99 seconds', 59.999],
 | |
|             ['1 minute', 59.9999],
 | |
|             ['59 seconds', 59.001],
 | |
|             ['59.01 seconds', 59.01],
 | |
|             ['1 minute', 60],
 | |
|             ['1.01 minutes', 61],
 | |
|             ['2 minutes', 120],
 | |
|             ['2.01 minutes', 121],
 | |
|             ['59.99 minutes', 3599.9],
 | |
|             ['59.99 minutes', 3599.99],
 | |
|             ['59.99 minutes', 3599.999],
 | |
|             ['1 hour', 3599.9999],
 | |
|             ['59.98 minutes', 3599.001],
 | |
|             ['59.98 minutes', 3599.01],
 | |
|             ['1 hour', 3600],
 | |
|             ['1 hour', 3601],
 | |
|             ['1 hour', 3601.9],
 | |
|             ['1 hour', 3601.99],
 | |
|             ['1 hour', 3601.999],
 | |
|             ['1 hour', 3601.9999],
 | |
|             ['1.01 hours', 3659.9999],
 | |
|             ['1.01 hours', 3659.001],
 | |
|             ['1.01 hours', 3659.01],
 | |
|             ['2 hours', 7199.9999],
 | |
|         ];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dataProvider bytesProvider
 | |
|      */
 | |
|     public function testCanFormatBytesAsString(string $string, float $bytes): void
 | |
|     {
 | |
|         $this->assertEquals($string, Timer::bytesToString($bytes));
 | |
|     }
 | |
| 
 | |
|     public function bytesProvider(): array
 | |
|     {
 | |
|         return [
 | |
|             ['0 bytes', 0],
 | |
|             ['1 byte', 1],
 | |
|             ['1023 bytes', 1023],
 | |
|             ['1.00 KB', 1024],
 | |
|             ['1.50 KB', 1.5 * 1024],
 | |
|             ['2.00 MB', 2 * 1048576],
 | |
|             ['2.50 MB', 2.5 * 1048576],
 | |
|             ['3.00 GB', 3 * 1073741824],
 | |
|             ['3.50 GB', 3.5 * 1073741824],
 | |
|         ];
 | |
|     }
 | |
| }
 |