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
|
<?php
/**
* User: Victor Häggqvist
* Date: 3/4/15
* Time: 3:12 AM
*/
use Snilius\Twig\SortByFieldExtension;
require_once 'Foo.php';
class SortByFieldExtensionTest extends PHPUnit_Framework_TestCase {
public function testExtensionLoad() {
$loader = new Twig_Loader_Array(array('foo'=>''));
$twig = new Twig_Environment($loader);
$twig->addExtension(new SortByFieldExtension());
$this->addToAssertionCount(1);
$twig->render('foo');
}
public function testSortArray(){
$base = array(
array(
"name" => "Redmine",
"desc" => "Issues Tracker",
"url" => "http://www.redmine.org/",
"oss" => "GPL",
"cost" => 0
),
array(
"name" => "GitLab",
"desc" => "Version Control",
"url" => "https://about.gitlab.com/",
"oss" => "GPL",
"cost" => 1,
),
array(
"name" => "Jenkins",
"desc" => "Continous Integration",
"url" => "http://jenkins-ci.org/",
"oss" => "MIT",
"cost" => 0,
),
array(
"name" => "Piwik",
"desc" => "Web Analytics",
"url" => "http://piwik.org/",
"oss" => "GPL",
"cost" => 1
)
);
$fact = array('GitLab','Jenkins','Piwik','Redmine');
$filter = new SortByFieldExtension();
$sorted = $filter->sortByFieldFilter($base,'name');
for ($i = 0; $i < count($fact); $i++){
$this->assertEquals($fact[$i], $sorted[$i]['name']);
}
}
public function testSortObjects() {
$base = array();
$ob1 = new Foo();
$ob1->name = "Redmine";
$base[]=$ob1;
$ob2 = new Foo();
$ob2->name = "GitLab";
$base[]=$ob2;
$ob3 = new Foo();
$ob3->name = "Jenkins";
$base[]=$ob3;
$ob4 = new Foo();
$ob4->name = "Jenkins";
$base[]=$ob4;
$fact = array('GitLab','Jenkins','Jenkins','Redmine');
$filter = new SortByFieldExtension();
$sorted = $filter->sortByFieldFilter($base,'name');
for ($i = 0; $i < count($fact); $i++){
$this->assertEquals($fact[$i], $sorted[$i]->name);
}
}
public function testNonArrayBase() {
$filter = new SortByFieldExtension();
$this->setExpectedException('InvalidArgumentException');
$filter->sortByFieldFilter(1, '');
}
public function testInvalidField() {
$filter = new SortByFieldExtension();
$this->setExpectedException('Exception');
$filter->sortByFieldFilter(array(), null);
}
public function testUnknownField() {
$filter = new SortByFieldExtension();
$this->setExpectedException('Exception');
$filter->sortByFieldFilter(array(new Foo()), 'bar');
}
}
|