/
whereTest.php
74 lines (72 loc) · 2.26 KB
/
whereTest.php
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
<?php
/**
* @covers Dash\where
*/
class whereTest extends PHPUnit\Framework\TestCase
{
/**
* @dataProvider cases
*/
public function test($iterable, $properties, $expected)
{
$actual = Dash\where($iterable, $properties);
$this->assertEquals($expected, $actual);
}
public function cases()
{
return [
'With an empty array' => [
'iterable' => [],
'properties' => ['age' => 30],
'expected' => [],
],
'With an empty object' => [
'iterable' => (object) [],
'properties' => ['age' => 30],
'expected' => [],
],
'With an indexed array' => [
'iterable' => [
['name' => 'Jane', 'age' => 25, 'gender' => 'f'],
['name' => 'Mike', 'age' => 30, 'gender' => 'm'],
['name' => 'Abby', 'age' => 30, 'gender' => 'f'],
['name' => 'Pete', 'age' => 45, 'gender' => 'm'],
['name' => 'Kate', 'age' => 30, 'gender' => 'f'],
],
'properties' => ['gender' => 'f', 'age' => 30],
'expected' => [
['name' => 'Abby', 'age' => 30, 'gender' => 'f'],
['name' => 'Kate', 'age' => 30, 'gender' => 'f'],
],
],
'With an associative array' => [
'iterable' => [
'a' => ['name' => 'Jane', 'age' => 25, 'gender' => 'f'],
'b' => ['name' => 'Mike', 'age' => 30, 'gender' => 'm'],
'c' => ['name' => 'Abby', 'age' => 30, 'gender' => 'f'],
'd' => ['name' => 'Pete', 'age' => 45, 'gender' => 'm'],
'e' => ['name' => 'Kate', 'age' => 30, 'gender' => 'f'],
],
'properties' => ['gender' => 'f', 'age' => 30],
'expected' => [
'c' => ['name' => 'Abby', 'age' => 30, 'gender' => 'f'],
'e' => ['name' => 'Kate', 'age' => 30, 'gender' => 'f'],
],
],
'With an object' => [
'iterable' => [
'a' => (object) ['name' => 'Jane', 'age' => 25, 'gender' => 'f'],
'b' => (object) ['name' => 'Mike', 'age' => 30, 'gender' => 'm'],
'c' => (object) ['name' => 'Abby', 'age' => 30, 'gender' => 'f'],
'd' => (object) ['name' => 'Pete', 'age' => 45, 'gender' => 'm'],
'e' => (object) ['name' => 'Kate', 'age' => 30, 'gender' => 'f'],
],
'properties' => ['gender' => 'f', 'age' => 30],
'expected' => [
'c' => (object) ['name' => 'Abby', 'age' => 30, 'gender' => 'f'],
'e' => (object) ['name' => 'Kate', 'age' => 30, 'gender' => 'f'],
],
],
];
}
}