Skip to content

Commit 75026f6

Browse files
committed
Added phpunit tests
1 parent b001a42 commit 75026f6

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed

tests.php

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
<?php
2+
use PHPUnit\Framework\TestCase;
3+
4+
/**
5+
* To run the tests, use the following command:
6+
* $ phpunit --bootstrap compiler.php tests.php
7+
*/
8+
class CompilerTest extends TestCase
9+
{
10+
/**
11+
* DynamicCSSCompiler::strtoval test
12+
*/
13+
public function testStrToVal()
14+
{
15+
// Make protected functions accessible through a reflection class
16+
$class = new ReflectionClass('DynamicCSSCompiler');
17+
$method = $class->getMethod('strtoval');
18+
$method->setAccessible(true);
19+
$dcss = DynamicCSSCompiler::get_instance();
20+
21+
// Assert
22+
$str = "'value'";
23+
$method->invokeArgs($dcss, array(&$str));
24+
$this->assertEquals($str, 'value');
25+
26+
$str = "false";
27+
$method->invokeArgs($dcss, array(&$str));
28+
$this->assertEquals($str, false);
29+
30+
$str = "true";
31+
$method->invokeArgs($dcss, array(&$str));
32+
$this->assertEquals($str, true);
33+
34+
$str = "4";
35+
$method->invokeArgs($dcss, array(&$str));
36+
$this->assertEquals($str, 4);
37+
38+
$str = "4.321";
39+
$method->invokeArgs($dcss, array(&$str));
40+
$this->assertEquals($str, 4.321);
41+
}
42+
43+
/**
44+
* DynamicCSSCompiler::apply_filters test
45+
*/
46+
public function testFilterApplication()
47+
{
48+
// Make protected functions accessible through a reflection class
49+
$class = new ReflectionClass('DynamicCSSCompiler');
50+
$method = $class->getMethod('apply_filters');
51+
$method->setAccessible(true);
52+
$dcss = DynamicCSSCompiler::get_instance();
53+
54+
// Assert
55+
$this->assertEquals($method->invokeArgs($dcss, array('simple_filter', 'foo', array('simple_filter' => 'simple_filter_callback'))), 'foobar');
56+
$this->assertEquals($method->invokeArgs($dcss, array('simple_filter|simple_filter', 'foo', array('simple_filter' => 'simple_filter_callback'))), 'foobarbar');
57+
$this->assertEquals($method->invokeArgs($dcss, array('complex_filter(\'bar\')', 'foo', array('complex_filter' => 'complex_filter_callback'))), 'foobar');
58+
$this->assertEquals($method->invokeArgs($dcss, array('complex_filter(\'bar\',\'foo\')', 'foo', array('complex_filter' => 'complex_filter_callback'))), 'foobarfoo');
59+
$this->assertEquals($method->invokeArgs($dcss, array('complex_filter(\'bar\')|complex_filter(\'foo\')', 'foo', array('complex_filter' => 'complex_filter_callback'))), 'foobarfoo');
60+
$this->assertEquals($method->invokeArgs($dcss, array('add_filter(5,5)', '5 + 5 = ', array('add_filter' => 'add_filter_callback'))), '5 + 5 = 10');
61+
$this->assertEquals($method->invokeArgs($dcss, array('add_filter(5.5,5.5)', '5.5 + 5.5 = ', array('add_filter' => 'add_filter_callback'))), '5.5 + 5.5 = 11');
62+
}
63+
64+
/**
65+
* DynamicCSSCompiler::compile_css test
66+
*/
67+
public function testCompilation()
68+
{
69+
// Make protected functions accessible through a reflection class
70+
$class = new ReflectionClass('DynamicCSSCompiler');
71+
$method = $class->getMethod('compile_css');
72+
$method->setAccessible(true);
73+
$dcss = DynamicCSSCompiler::get_instance();
74+
75+
// Assert
76+
$this->assertEquals($method->invokeArgs($dcss, array('$var1', 'callback', array())), 'value1');
77+
$this->assertEquals($method->invokeArgs($dcss, array('$var2', 'callback', array())), 'value2');
78+
$this->assertEquals($method->invokeArgs($dcss, array('$var3[\'index1\']', 'callback', array())), 'value3');
79+
$this->assertEquals($method->invokeArgs($dcss, array('$var3[\'index2\'][\'subindex1\']', 'callback', array())), 'value4');
80+
$this->assertEquals($method->invokeArgs($dcss, array('$var3[index2][subindex1]', 'callback', array())), 'value4');
81+
$this->assertEquals($method->invokeArgs($dcss, array('$var3[index2][subindex1]', 'callback', array())), 'value4');
82+
$this->assertEquals($method->invokeArgs($dcss, array('$var4|simpleFilter', 'callback', array('simpleFilter' => 'simple_filter_callback'))), 'valuebar');
83+
$this->assertEquals($method->invokeArgs($dcss, array('$var4|simpleFilter|simpleFilter', 'callback', array('simpleFilter' => 'simple_filter_callback'))), 'valuebarbar');
84+
$this->assertEquals($method->invokeArgs($dcss, array('$var4|complexFilter(6)', 'callback', array('complexFilter' => 'complex_filter_callback'))), 'value6');
85+
$this->assertEquals($method->invokeArgs($dcss, array('$var5|complexFilter(e)|complexFilter(7)', 'callback', array('complexFilter' => 'complex_filter_callback'))), 'value7');
86+
$this->assertEquals($method->invokeArgs($dcss, array('$var3[index1]|simpleFilter', 'callback', array('simpleFilter' => 'simple_filter_callback'))), 'value3bar');
87+
}
88+
}
89+
90+
/**
91+
* Value retrieval function
92+
*/
93+
function callback( $varname, $subscripts )
94+
{
95+
$values = array(
96+
'var1' => 'value1',
97+
'var2' => 'value2',
98+
'var3' => array(
99+
'index1' => 'value3',
100+
'index2' => array(
101+
'subindex1' => 'value4'
102+
)
103+
),
104+
'var4' => 'value',
105+
'var5' => 'valu'
106+
);
107+
108+
$val = $values[$varname];
109+
if( null !== $subscripts )
110+
{
111+
foreach( $subscripts as $subscript )
112+
{
113+
$val = $val[$subscript];
114+
}
115+
}
116+
117+
return $val;
118+
}
119+
120+
/**
121+
* Simple string concat filter
122+
*/
123+
function simple_filter_callback( $foo )
124+
{
125+
return $foo.'bar';
126+
}
127+
128+
/**
129+
* String concat filter with parameters
130+
*/
131+
function complex_filter_callback( $value, $arg1 = '', $arg2 = '')
132+
{
133+
return $value.$arg1.$arg2;
134+
}
135+
136+
/**
137+
* Number adding filter
138+
*/
139+
function add_filter_callback( $value, $a, $b )
140+
{
141+
return $value.($a+$b);
142+
}

0 commit comments

Comments
 (0)