Skip to content

Commit 8e9a19b

Browse files
committed
Add tests for condition [part 1]
1 parent 0338ef4 commit 8e9a19b

File tree

3 files changed

+217
-9
lines changed

3 files changed

+217
-9
lines changed

src/Condition.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public static function notEqual($value, $comparable)
5151
*
5252
* @return bool
5353
*/
54-
public static function notExactEqual($value, $comparable)
54+
public static function strictNotEqual($value, $comparable)
5555
{
5656
return $value !== $comparable;
5757
}

tests/ConditionTest.php

Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
<?php
2+
3+
namespace Nahid\JsonQ\Tests;
4+
5+
use Nahid\JsonQ\Condition;
6+
7+
class ConditionTest extends AbstractTestCase
8+
{
9+
/**
10+
* @param mixed $value
11+
* @param mixed $comparable
12+
* @param bool $result
13+
*
14+
* @dataProvider equalProvider
15+
*/
16+
public function testEqual($value, $comparable, $result)
17+
{
18+
$this->assertEquals($result, Condition::equal($value, $comparable));
19+
}
20+
21+
/**
22+
* @param mixed $value
23+
* @param mixed $comparable
24+
* @param bool $result
25+
*
26+
* @dataProvider strictEqualProvider
27+
*/
28+
public function testStrictEqual($value, $comparable, $result)
29+
{
30+
$this->assertEquals($result, Condition::strictEqual($value, $comparable));
31+
}
32+
33+
/**
34+
* @param mixed $value
35+
* @param mixed $comparable
36+
* @param bool $result
37+
*
38+
* @dataProvider notEqualProvider
39+
*/
40+
public function testNotEqual($value, $comparable, $result)
41+
{
42+
$this->assertEquals($result, Condition::notEqual($value, $comparable));
43+
}
44+
45+
/**
46+
* @param mixed $value
47+
* @param mixed $comparable
48+
* @param bool $result
49+
*
50+
* @dataProvider strictNotEqualProvider
51+
*/
52+
public function testStrictNotEqual($value, $comparable, $result)
53+
{
54+
$this->assertEquals($result, Condition::strictNotEqual($value, $comparable));
55+
}
56+
57+
/**
58+
* @param mixed $value
59+
* @param mixed $comparable
60+
* @param bool $result
61+
*
62+
* @dataProvider greaterThanProvider
63+
*/
64+
public function testGreaterThan($value, $comparable, $result)
65+
{
66+
$this->assertEquals($result, Condition::greaterThan($value, $comparable));
67+
}
68+
69+
/**
70+
* @param mixed $value
71+
* @param mixed $comparable
72+
* @param bool $result
73+
*
74+
* @dataProvider lessThanProvider
75+
*/
76+
public function testLessThan($value, $comparable, $result)
77+
{
78+
$this->assertEquals($result, Condition::lessThan($value, $comparable));
79+
}
80+
81+
/**
82+
* @param mixed $value
83+
* @param mixed $comparable
84+
* @param bool $result
85+
*
86+
* @dataProvider greaterThanOrEqualProvider
87+
*/
88+
public function testGreaterThanOrEqual($value, $comparable, $result)
89+
{
90+
$this->assertEquals($result, Condition::greaterThanOrEqual($value, $comparable));
91+
}
92+
93+
/**
94+
* @param mixed $value
95+
* @param mixed $comparable
96+
* @param bool $result
97+
*
98+
* @dataProvider lessThanOrEqualProvider
99+
*/
100+
public function testLessThanOrEqual($value, $comparable, $result)
101+
{
102+
$this->assertEquals($result, Condition::lessThanOrEqual($value, $comparable));
103+
}
104+
105+
public function greaterThanProvider()
106+
{
107+
return [
108+
[0, 1, false],
109+
[0,'1', false],
110+
[2, 2, false],
111+
[-1, 2, false],
112+
[-2, -3, true],
113+
[1, 0, true],
114+
[1.2, 1.1, true]
115+
];
116+
}
117+
118+
public function lessThanProvider()
119+
{
120+
return [
121+
[0, 1, true],
122+
[0,'1', true],
123+
[2, 2, false],
124+
[-1, 2, true],
125+
[-2, -3, false],
126+
[1, 0, false],
127+
[1.2, 1.1, false]
128+
];
129+
}
130+
131+
public function greaterThanOrEqualProvider()
132+
{
133+
return [
134+
[0, 1, false],
135+
[0,'1', false],
136+
[2, 2, true],
137+
[-1, 2, false],
138+
[-2, -3, true],
139+
[1, 0, true],
140+
[1.2, 1.1, true]
141+
];
142+
}
143+
144+
public function lessThanOrEqualProvider()
145+
{
146+
return [
147+
[0, 1, true],
148+
[0,'1', true],
149+
[2, 2, true],
150+
[-1, 2, true],
151+
[-2, -3, false],
152+
[1, 0, false],
153+
[1.2, 1.1, false]
154+
];
155+
}
156+
157+
public function strictEqualProvider()
158+
{
159+
return [
160+
[0, 1, false],
161+
['0', 0, false],
162+
['text', 'text2', false],
163+
['text', 'text', true],
164+
[0, 0, true],
165+
[true, false, false],
166+
[true, true, true],
167+
[true, 'true', false]
168+
];
169+
}
170+
171+
public function equalProvider()
172+
{
173+
return [
174+
[0, 1, false],
175+
['0', 0, true],
176+
['text', 'text2', false],
177+
['text', 'text', true],
178+
[0, 0, true],
179+
[true, false, false],
180+
[true, true, true]
181+
];
182+
}
183+
184+
public function strictNotEqualProvider()
185+
{
186+
return [
187+
[0, 1, true],
188+
['0', 0, true],
189+
['text', 'text2', true],
190+
['text', 'text', false],
191+
[0, 0, false],
192+
[true, false, true],
193+
[true, true, false],
194+
[true, 'true', true]
195+
];
196+
}
197+
198+
public function notEqualProvider()
199+
{
200+
return [
201+
[0, 1, true],
202+
['0', 0, false],
203+
['text', 'text2', true],
204+
['text', 'text', false],
205+
[0, 0, false],
206+
[true, false, true],
207+
[true, true, false]
208+
];
209+
}
210+
}

tests/JsonQueriableTest.php

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ public function testIsJson($input, $isReturnMap, $result = null)
172172
public function testPrepareResult($input, $isObject, $result)
173173
{
174174
$method = $this->makeCallable($this->jsonq, 'prepareResult');
175-
176175
$this->assertEquals($result, $method->invokeArgs($this->jsonq, [$input, $isObject]));
177176
}
178177

@@ -209,15 +208,14 @@ public function getDataFromFileProvider()
209208
public function prepareResultProvider()
210209
{
211210
$obj = new \stdClass();
212-
$obj->scalar = 'test';
213-
$obj2 = new \stdClass();
214-
$obj2->scalar = 'test2';
211+
$obj->key1 = 'test';
212+
$obj->key2 = 'test2';
215213

216214
return [
217-
[['test', 'test2'], false, ['test', 'test2']],
218-
[['key1' => 'test','key2' => 'test2'], false, ['key1' => 'test','key2' => 'test2']],
219-
[['test', 'test2'], true, [$obj, $obj2]],
220-
[['key1' => 'test','key2' => 'test2'], true, ['key1' => $obj, 'key2' => $obj2]],
215+
[['test', ['test2', 'test3']], false, ['test', ['test2', 'test3']]],
216+
[['key1' => 'test','key2' => 'test2'], false, $obj],
217+
[['test', 'test2'], true, ['test', 'test2']],
218+
[['key1' => 'test','key2' => 'test2'], true, ['key1' => 'test','key2' => 'test2']],
221219
['["test", "test2"]', false, '["test", "test2"]'],
222220
['["test", "test2"]', true, '["test", "test2"]']
223221
];

0 commit comments

Comments
 (0)