Failed Conditions
Pull Request — master (#75)
by
unknown
01:29
created

DateTimeTest::filterNullNotAllowed()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace TraderInteractive\Filter;
4
5
use PHPUnit\Framework\TestCase;
6
7
/**
8
 * Unit tests for the \TraderInteractive\Filter\DateTime class.
9
 *
10
 * @coversDefaultClass \TraderInteractive\Filter\DateTime
11
 */
12
final class DateTimeTest extends TestCase
13
{
14
    /**
15
     * Verify basic usage of filter().
16
     *
17
     * @test
18
     * @covers ::filter
19
     *
20
     * @return void
21
     */
22
    public function filter()
23
    {
24
        $string = '2014-02-04T11:55:00-0500';
25
        $dateTime = DateTime::filter($string);
26
27
        $this->assertSame(strtotime($string), $dateTime->getTimestamp());
28
    }
29
30
    /**
31
     * Verify behavior of filter() when $value is an integer.
32
     *
33
     * @test
34
     * @covers ::filter
35
     *
36
     * @return void
37
     */
38
    public function filterTimestamp()
39
    {
40
        $now = time();
41
        $dateTime = DateTime::filter("@{$now}");
42
43
        $this->assertSame($now, $dateTime->getTimestamp());
44
    }
45
46
    /**
47
     * Verify behavior of filter() when $value is a string with only whitespace.
48
     *
49
     * @test
50
     * @covers ::filter
51
     * @expectedException \TraderInteractive\Filter\Exception
52
     * @expectedExceptionMessage $value is not a non-empty string
53
     *
54
     * @return void
55
     */
56
    public function filterEmptyValue()
57
    {
58
        DateTime::filter("\t \n");
59
    }
60
61
    /**
62
     * Verify behavior of filter() when $value is not a string or integer.
63
     *
64
     * @test
65
     * @covers ::filter
66
     * @expectedException \TraderInteractive\Filter\Exception
67
     * @expectedExceptionMessage $value is not a non-empty string
68
     *
69
     * @return void
70
     */
71
    public function filterInvalidValue()
72
    {
73
        DateTime::filter(true);
74
    }
75
76
    /**
77
     * Verify behavior of filter() when null is given for $value and $allowNull is true.
78
     *
79
     * @test
80
     * @covers ::filter
81
     */
82
    public function filterNullAllowed()
83
    {
84
        $this->assertNull(DateTime::filter(null, true));
85
    }
86
87
    /**
88
     * Verify behavior of filter() when null is given for $value and $allowNull is true.
89
     *
90
     * @test
91
     * @covers ::filter
92
     * @expectedException \TraderInteractive\Filter\Exception
93
     * @expectedExceptionMessage $value is not a non-empty string
94
     */
95
    public function filterNullNotAllowed()
96
    {
97
        DateTime::filter(null, false);
98
    }
99
100
    /**
101
     * Verify behavior of filter() when $value is a \DateTime object.
102
     *
103
     * @test
104
     * @covers ::filter
105
     */
106
    public function filterDateTimePass()
107
    {
108
        $dateTime = new \DateTime('now');
109
        $this->assertSame($dateTime, DateTime::filter($dateTime));
110
    }
111
112
    /**
113
     * Verify behavior of filter() when $timezone is given.
114
     *
115
     * @test
116
     * @covers ::filter
117
     */
118 View Code Duplication
    public function filterWithTimeZone()
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
119
    {
120
        $timezone = new \DateTimeZone('Pacific/Honolulu');
121
        $dateTime = DateTime::filter('now', false, $timezone);
122
        $this->assertSame($timezone->getName(), $dateTime->getTimeZone()->getName());
123
        $this->assertSame(-36000, $dateTime->getOffset());
124
    }
125
126
    /**
127
     * Verify behavior of filter() when $value is an integer.
128
     *
129
     * @test
130
     * @covers ::filter
131
     */
132
    public function filterWithIntegerValue()
133
    {
134
        $now = time();
135
        $dateTime = DateTime::filter($now);
136
        $this->assertSame($now, $dateTime->getTimestamp());
137
    }
138
139
    /**
140
     * Verify basic behavior of format().
141
     *
142
     * @test
143
     * @covers ::format
144
     */
145
    public function format()
146
    {
147
        $now = new \DateTime();
148
        $this->assertSame($now->format('Y-m-d H:i:s'), DateTime::format($now, 'Y-m-d H:i:s'));
149
    }
150
}
151