aboutsummaryrefslogtreecommitdiffstats
path: root/public/system/storage/vendor/leafo/scssphp/tests/ApiTest.php
blob: ecebe556571ba6701b48ff0c2746f2e1439ee798 (plain)
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));
	}
}