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
|
<?php
require_once __DIR__ . "/../scss.inc.php";
class ApiTest extends PHPUnit_Framework_TestCase
{
public function setUp()
{
$this->scss = new scssc();
}
public function testUserFunction()
{
$this->scss->registerFunction("add-two", function ($args) {
list($a, $b) = $args;
return $a[1] + $b[1];
});
$this->assertEquals(
"result: 30;",
$this->compile("result: add-two(10, 20);")
);
}
public function testImportMissing()
{
$this->assertEquals(
'@import "missing";',
$this->compile('@import "missing";')
);
}
public function testImportCustomCallback()
{
$this->scss->addImportPath(function ($path) {
return __DIR__ . '/inputs/' . str_replace('.css', '.scss', $path);
});
$this->assertEquals(
trim(file_get_contents(__DIR__ . '/outputs/variables.css')),
$this->compile('@import "variables.css";')
);
}
/**
* @dataProvider provideSetVariables
*/
public function testSetVariables($expected, $scss, $variables)
{
$this->scss->setVariables($variables);
$this->assertEquals($expected, $this->compile($scss));
}
public function provideSetVariables()
{
return array(
array(
".magic {\n color: red;\n width: 760px; }",
'.magic { color: $color; width: $base - 200; }',
array(
'color' => 'red',
'base' => '960px',
),
),
array(
".logo {\n color: #808080; }",
'.logo { color: desaturate($primary, 100%); }',
array(
'primary' => '#ff0000',
),
),
);
}
public function compile($str)
{
return trim($this->scss->compile($str));
}
}
|