1 | <?php |
||
6 | final class ExpectationsTest extends TestCase |
||
7 | { |
||
8 | public function testIsInt() |
||
9 | { |
||
10 | $this->assertEquals(42, expect(42)->isInt()->else(23)); |
||
11 | $this->assertEquals(1337, expect('foo')->isInt()->else(1337)); |
||
12 | } |
||
13 | |||
14 | public function testIsFloat() |
||
15 | { |
||
16 | $this->assertEquals(4.2, expect(4.2)->isFloat()->else(2.3)); |
||
17 | $this->assertEquals(13.37, expect('foo')->isFloat()->else(13.37)); |
||
18 | } |
||
19 | |||
20 | public function testIsScalar() |
||
21 | { |
||
22 | $this->assertEquals('bar', expect('bar')->isScalar()->else('foo')); |
||
23 | $this->assertEquals(42, expect(42)->isScalar()->else('bar')); |
||
24 | } |
||
25 | |||
26 | public function testIsNumeric() |
||
27 | { |
||
28 | $this->assertEquals(42, expect(42)->isNumeric()->else('foo')); |
||
29 | $this->assertEquals('1337', expect('1337')->isNumeric()->else('bar')); |
||
30 | } |
||
31 | |||
32 | public function testIsString() |
||
33 | { |
||
34 | $this->assertEquals('foo', expect('foo')->isString()->else('bar')); |
||
35 | $this->assertEquals('bar', expect(42)->isString()->else('bar')); |
||
36 | } |
||
37 | |||
38 | public function testIsBool() |
||
39 | { |
||
40 | $this->assertTrue(expect(true)->isBool()->else(false)); |
||
41 | $this->assertFalse(expect(1)->isBool()->else(false)); |
||
42 | } |
||
43 | |||
44 | public function testIsArray() |
||
45 | { |
||
46 | $this->assertEquals([1, 2, 3], expect([1, 2, 3])->isArray()->else([])); |
||
47 | $this->assertEquals([2], expect('abc')->isArray()->else([2])); |
||
48 | $this->assertEquals([], expect(null)->isArray()->else([])); |
||
49 | } |
||
50 | |||
51 | public function testIsObject() |
||
52 | { |
||
53 | $this->assertEquals($this, expect($this)->isObject()->else(null)); |
||
54 | $this->assertEquals(null, expect(null)->isObject()->else(null)); |
||
55 | $this->assertEquals(23, expect(42)->isObject()->else(23)); |
||
56 | } |
||
57 | |||
58 | public function testIsInstanceOf() |
||
59 | { |
||
60 | $this->assertEquals($this, expect($this)->isInstanceOf(self::class)->else(null)); |
||
61 | $this->assertEquals(null, expect(new Exception())->isInstanceOf(self::class)->else(null)); |
||
62 | $this->assertEquals(null, expect(null)->isInstanceOf(self::class)->else(null)); |
||
63 | } |
||
64 | |||
65 | public function testIsCallable() |
||
66 | { |
||
67 | $this->assertEquals('trim', expect('trim')->isCallable()->else(null)); |
||
68 | $this->assertEquals(null, expect('empty')->isCallable()->else(null)); |
||
69 | } |
||
70 | |||
71 | public function testIsDir() |
||
72 | { |
||
73 | $this->assertEquals(__DIR__, expect(__DIR__)->isDir()->else('src')); |
||
74 | $this->assertEquals('src', expect('test')->isDir()->else('src')); |
||
75 | } |
||
76 | |||
77 | public function testIsFile() |
||
78 | { |
||
79 | $this->assertEquals(__FILE__, expect(__FILE__)->isFile()->else(null)); |
||
80 | $this->assertEquals(null, expect('src')->isFile()->else(null)); |
||
81 | } |
||
82 | |||
83 | public function testIsEmpty() |
||
84 | { |
||
85 | $this->assertEmpty(expect(null)->isEmpty()->else('abc')); |
||
86 | $this->assertNull(expect('abc')->isEmpty()->else(null)); |
||
87 | } |
||
88 | |||
89 | public function testIsNotEmpty() |
||
90 | { |
||
91 | $this->assertNotEmpty(expect(null)->isNotEmpty()->else('abc')); |
||
92 | $this->assertNotNull(expect('abc')->isNotEmpty()->else(null)); |
||
93 | } |
||
94 | |||
95 | public function testIsNull() |
||
96 | { |
||
97 | $this->assertNull(expect(null)->isNull()->else('abc')); |
||
98 | $this->assertEquals('foobar', expect('abc')->isNull()->else('foobar')); |
||
99 | } |
||
100 | |||
101 | public function testIsNotNull() |
||
102 | { |
||
103 | $this->assertNotNull(expect(null)->isNotNull()->else('abc')); |
||
104 | $this->assertNull(expect(null)->isNotNull()->else(null)); |
||
105 | } |
||
106 | |||
107 | public function testIsTrue() |
||
108 | { |
||
109 | $this->assertTrue(expect(false)->isTrue()->else(true)); |
||
110 | $this->assertTrue(expect(true)->isTrue()->else(false)); |
||
111 | $this->assertFalse(expect(false)->isTrue()->else(false)); |
||
112 | } |
||
113 | |||
114 | public function testIsFalse() |
||
115 | { |
||
116 | $this->assertFalse(expect(false)->isFalse()->else(true)); |
||
117 | $this->assertFalse(expect(true)->isFalse()->else(false)); |
||
118 | $this->assertTrue(expect(true)->isFalse()->else(true)); |
||
119 | } |
||
120 | |||
121 | public function testIsEqual() |
||
122 | { |
||
123 | $this->assertEquals('abc', expect('abc')->isEqual('abc')->else('foo')); |
||
124 | $this->assertEquals('42', expect('42')->isEqual('42')->else(null)); |
||
125 | $this->assertEquals(42, expect('42')->isEqual(42)->else(null)); |
||
126 | } |
||
127 | |||
128 | public function testIsNotEqual() |
||
129 | { |
||
130 | $this->assertEquals('foo', expect('abc')->isNotEqual('abc')->else('foo')); |
||
131 | $this->assertEquals(null, expect('42')->isNotEqual('42')->else(null)); |
||
132 | $this->assertEquals(42, expect('42')->isEqual(42)->else(null)); |
||
133 | } |
||
134 | |||
135 | public function testIsIdenticalTo() |
||
136 | { |
||
137 | $this->assertEquals('abc', expect('abc')->isIdenticalTo('abc')->else('foo')); |
||
138 | $this->assertEquals('42', expect('42')->isIdenticalTo('42')->else(null)); |
||
139 | $this->assertEquals(null, expect('42')->isIdenticalTo(42)->else(null)); |
||
140 | $this->assertEquals(42, expect(42)->isIdenticalTo(42)->else(null)); |
||
141 | } |
||
142 | |||
143 | public function testIsNotIdenticalTo() |
||
144 | { |
||
145 | $this->assertEquals('foo', expect('abc')->isNotIdenticalTo('abc')->else('foo')); |
||
146 | $this->assertEquals(null, expect('42')->isNotIdenticalTo('42')->else(null)); |
||
147 | $this->assertEquals('42', expect('42')->isNotIdenticalTo(42)->else(null)); |
||
148 | $this->assertEquals(null, expect(42)->isNotIdenticalTo(42)->else(null)); |
||
149 | } |
||
150 | |||
151 | public function testIsBetween() |
||
152 | { |
||
153 | $this->assertEquals(7, expect(7)->isBetween(0, 8)->else(null)); |
||
154 | $this->assertEquals(7, expect(7)->isBetween(0, 7)->else(null)); |
||
155 | $this->assertEquals(0, expect(0)->isBetween(0, 7)->else(null)); |
||
156 | $this->assertEquals('nope', expect(12)->isBetween(15, 20)->else('nope')); |
||
157 | } |
||
158 | |||
159 | public function testhasLength() |
||
160 | { |
||
161 | $this->assertEquals('foo', expect('foo')->hasLength(3)->else('aye')); |
||
162 | $this->assertEquals('nope', expect('foobar')->hasLength(4)->else('nope')); |
||
163 | |||
164 | $this->assertEquals([1, 2, 3], expect([1, 2, 3])->hasLength(3)->else([])); |
||
165 | $this->assertEquals([42, 23], expect([])->hasLength(2)->else([42, 23])); |
||
166 | } |
||
167 | |||
168 | public function testIsIn() |
||
169 | { |
||
170 | $this->assertEquals(42, expect(42)->isIn([1, 2, 23, 36, 42, 44, 48])->else(null)); |
||
171 | $this->assertEquals(42, expect(42)->isIn([1, 2, 23, 36, 42])->else(null)); |
||
172 | $this->assertEquals(null, expect(42)->isIn([1, 2, 23, 36])->else(null)); |
||
173 | } |
||
174 | |||
175 | public function testIsKeyOf() |
||
176 | { |
||
177 | $this->assertEquals('foo', expect('foo')->isKeyOf(['a' => 23, 'foo' => 42])->else(null)); |
||
178 | $this->assertEquals(null, expect('foo')->isKeyOf(['a' => 23])->else(null)); |
||
179 | } |
||
180 | |||
181 | public function testIsBelow() |
||
182 | { |
||
183 | $this->assertEquals(3, expect(3)->isBelow(4)->else(42)); |
||
184 | $this->assertEquals(42, expect(6)->isBelow(4)->else(42)); |
||
185 | } |
||
186 | |||
187 | public function testIsAbove() |
||
188 | { |
||
189 | $this->assertEquals(42, expect(3)->isAbove(4)->else(42)); |
||
190 | $this->assertEquals(6, expect(6)->isAbove(4)->else(42)); |
||
191 | } |
||
192 | |||
193 | public function testIsBelowOrEqual() |
||
194 | { |
||
195 | $this->assertEquals(23, expect(23)->isBelowOrEqual(23)->else(null)); |
||
196 | $this->assertEquals(23, expect(23)->isBelowOrEqual(42)->else(null)); |
||
197 | $this->assertEquals(null, expect(23)->isBelowOrEqual(22)->else(null)); |
||
198 | } |
||
199 | |||
200 | public function testIsAboveOrEqual() |
||
201 | { |
||
202 | $this->assertEquals(42, expect(42)->isAboveOrEqual(42)->else(null)); |
||
203 | $this->assertEquals(42, expect(42)->isAboveOrEqual(23)->else(null)); |
||
204 | $this->assertEquals(null, expect(42)->isAboveOrEqual(256)->else(null)); |
||
205 | } |
||
206 | |||
207 | public function testIsPositive() |
||
208 | { |
||
209 | $this->assertEquals(42, expect(-1)->isPositive()->else(42)); |
||
210 | $this->assertEquals(0, expect(0)->isPositive()->else(42)); |
||
211 | } |
||
212 | |||
213 | public function testIsNegative() |
||
214 | { |
||
215 | $this->assertEquals(-1, expect(-1)->isNegative()->else(42)); |
||
216 | $this->assertEquals(42, expect(0)->isNegative()->else(42)); |
||
217 | } |
||
218 | |||
219 | public function testIsEven() |
||
220 | { |
||
221 | $this->assertEquals(42, expect(42)->isEven()->else(23)); |
||
222 | $this->assertEquals(42, expect(23)->isEven()->else(42)); |
||
223 | } |
||
224 | |||
225 | public function testIsOdd() |
||
226 | { |
||
227 | $this->assertEquals(23, expect(42)->isOdd()->else(23)); |
||
228 | $this->assertEquals(23, expect(23)->isOdd()->else(42)); |
||
229 | } |
||
230 | |||
231 | public function testMatch() |
||
232 | { |
||
233 | $this->assertEquals('abc', expect('abc')->match('/a*b{1}c?d?/')->else('foo')); |
||
234 | $this->assertEquals('foo', expect('ac')->match('/a*b{1}c?d?/')->else('foo')); |
||
235 | } |
||
236 | |||
237 | public function testThen() |
||
238 | { |
||
239 | $this->assertEquals('foo', expect(42)->isEven()->then('foo')); |
||
240 | $this->assertEquals(42, expect(42)->isOdd()->then('foo')); |
||
241 | } |
||
242 | } |