| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 | <?phprequire_once __DIR__ . "/../lessc.inc.php";class ApiTest extends PHPUnit_Framework_TestCase {	public function setUp() {		$this->less = new lessc();		$this->less->importDir = array(__DIR__ . "/inputs/test-imports");	}	public function testPreserveComments() {		$input = <<<EOD// what is going on?/** what the heck **//**Here is a block comment**/// this is a comment/*hello*/div /*yeah*/ { //surew	border: 1px solid red; // world	/* another property */	color: url('http://mage-page.com');	string: "hello /* this is not a comment */";	world: "// neither is this";	string: 'hello /* this is not a comment */' /*what if this is a comment */;	world: '// neither is this' // hell world;	;	what-ever: 100px;	background: url(/*this is not a comment?*/); // uhh what happens here}EOD;		$outputWithComments = <<<EOD/** what the heck **//**Here is a block comment**//*hello*//*yeah*/div /*yeah*/ {  /* another property */  border: 1px solid red;  color: url('http://mage-page.com');  string: "hello /* this is not a comment */";  world: "// neither is this";  /*what if this is a comment */  string: 'hello /* this is not a comment */';  world: '// neither is this';  what-ever: 100px;  /*this is not a comment?*/  background: url();}EOD;		$outputWithoutComments = <<<EODdiv {  border: 1px solid red;  color: url('http://mage-page.com');  string: "hello /* this is not a comment */";  world: "// neither is this";  string: 'hello /* this is not a comment */';  world: '// neither is this';  what-ever: 100px;  background: url(/*this is not a comment?*/);}EOD;		$this->assertEquals($this->compile($input), trim($outputWithoutComments));		$this->less->setPreserveComments(true);		$this->assertEquals($this->compile($input), trim($outputWithComments));	}	public function testOldInterface() {		$this->less = new lessc(__DIR__ . "/inputs/hi.less");		$out = $this->less->parse(array("hello" => "10px"));		$this->assertEquals(trim($out), trim('div:before {  content: "hi!";}'));	}	public function testInjectVars() {		$out = $this->less->parse(".magic { color: @color;  width: @base - 200; }",			array(				'color' => 'red',				'base' => '960px'			));			$this->assertEquals(trim($out), trim(".magic {  color: red;  width: 760px;}"));	}	public function testDisableImport() {		$this->less->importDisabled = true;		$this->assertEquals(			"/* import disabled */",			$this->compile("@import 'file3';"));	}	public function testUserFunction() {		$this->less->registerFunction("add-two", function($list) {			list($a, $b) = $list[2];			return $a[1] + $b[1];		});		$this->assertEquals(			$this->compile("result: add-two(10, 20);"),			"result: 30;");				return $this->less;	}	/**	 * @depends testUserFunction	 */	public function testUnregisterFunction($less) {		$less->unregisterFunction("add-two");		$this->assertEquals(			$this->compile("result: add-two(10, 20);"),			"result: add-two(10,20);");	}	public function testFormatters() {		$src = "			div, pre {				color: blue;				span, .big, hello.world {					height: 20px;					color:#ffffff + #000;				}			}";		$this->less->setFormatter("compressed");		$this->assertEquals(			$this->compile($src), "div,pre{color:blue;}div span,div .big,div hello.world,pre span,pre .big,pre hello.world{height:20px;color:#fff;}");		// TODO: fix the output order of tags		$this->less->setFormatter("lessjs");		$this->assertEquals(			$this->compile($src),"div,pre {  color: blue;}div span,div .big,div hello.world,pre span,pre .big,pre hello.world {  height: 20px;  color: #ffffff;}");		$this->less->setFormatter("classic");		$this->assertEquals(			$this->compile($src),trim("div, pre { color:blue; }div span, div .big, div hello.world, pre span, pre .big, pre hello.world {  height:20px;  color:#ffffff;}"));	}	public function compile($str) {		return trim($this->less->parse($str));	}}
 |