1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
<?php
namespace phpmock\functions;
use phpmock\MockBuilder;
use PHPUnit\Framework\TestCase;
/**
* Tests FixedMicrotimeFunction.
*
* @author Markus Malkusch <markus@malkusch.de>
* @link bitcoin:1335STSwu9hST4vcMRppEPgENMHD2r1REK Donations
* @license http://www.wtfpl.net/txt/copying/ WTFPL
* @see FixedMicrotimeFunction
*/
class FixedMicrotimeFunctionTest extends TestCase
{
/**
* Tests setMicrotime().
*/
public function testSetMicrotime()
{
$function = new FixedMicrotimeFunction();
$function->setMicrotime("0.00000001 1");
$this->assertEquals("0.00000001 1", $function->getMicrotime());
}
/**
* Tests setMicrotimeAsFloat().
*/
public function testSetMicrotimeAsFloat()
{
$function = new FixedMicrotimeFunction();
$function->setMicrotimeAsFloat(1.00000001);
$this->assertEquals(1.00000001, $function->getMicrotime(true));
}
/**
* Tests getMicrotime().
*/
public function testGetMicrotime()
{
$function = new FixedMicrotimeFunction();
$function->setMicrotimeAsFloat(1.00000001);
$this->assertEquals(1.00000001, $function->getMicrotime(true));
$this->assertEquals("0.00000001 1", $function->getMicrotime());
}
/**
* Tests getCallable()
*/
public function testGetCallable()
{
$function = new FixedMicrotimeFunction();
$function->setMicrotimeAsFloat(1.00000001);
$builder = new MockBuilder();
$builder->setNamespace(__NAMESPACE__)
->setName("microtime")
->setFunctionProvider($function);
$mock = $builder->build();
$mock->enable();
$this->assertEquals("0.00000001 1", microtime());
$this->assertEquals(1.00000001, microtime(true));
$mock->disable();
}
/**
* Tests initializing with the current timestamp
*/
public function testConstructCurrentTime()
{
$function = new FixedMicrotimeFunction();
$this->assertGreaterThan($function->getMicrotime(true), \microtime(true));
$this->assertGreaterThan(0, $function->getMicrotime(true));
}
/**
* Tests exception for invalid argument in constructor.
* @dataProvider provideTestConstructFailsForInvalidArgument
*/
public function testConstructFailsForInvalidArgument($timestamp)
{
$this->expectException(\InvalidArgumentException::class);
new FixedMicrotimeFunction($timestamp);
}
/**
* Returns test cases for testConstructFailsForInvalidArgument()
*
* @return array Test cases.
*/
public static function provideTestConstructFailsForInvalidArgument()
{
return [
[true],
[new \stdClass()]
];
}
/**
* Tests initializing with a timestamp.
*
* @param mixed $timestamp The tested timestamp.
* @param float $expected The expected timestamp.
* @dataProvider provideTestConstruct
*/
public function testConstruct($timestamp, $expected)
{
$function = new FixedMicrotimeFunction($timestamp);
$this->assertEquals($expected, $function->getMicrotime(true));
}
/**
* Provides test cases for testConstruct().
*
* @return array
*/
public static function provideTestConstruct()
{
return [
["0.00000001 1", 1.00000001],
[1.00000001, 1.00000001],
];
}
}
|