File: FixedMicrotimeFunctionTest.php

package info (click to toggle)
php-mock 2.5.0-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 332 kB
  • sloc: php: 1,703; makefile: 18; xml: 17; sh: 7
file content (130 lines) | stat: -rw-r--r-- 3,494 bytes parent folder | download
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],
        ];
    }
}