mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 18:51:41 +09:00
- 2022년 3월 개발팀 결정사항 적용 - 모듈 등 서드파티 자료 개발시 composer를 사용하면 상위 경로에 있는 코어의 composer.json을 수정하고, 코어의 vendor 디렉토리를 건드리는 것이 기본값임 - 이를 방지하기 위해 코어의 composer.json과 vendor를 common 디렉토리 안으로 이동하여, 모듈 경로에서 상위 폴더로 인식하지 않도록 함
196 lines
4.6 KiB
PHP
196 lines
4.6 KiB
PHP
<?php
|
|
|
|
require_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
|
|
/* comment above the first occurrence of a duplicated rule */
|
|
color: url('http://mage-page.com');
|
|
string: "hello /* this is not a comment */";
|
|
world: "// neither is this";
|
|
/* comment above the second occurrence of a duplicated rule */
|
|
color: url('http://mage-page.com');
|
|
string: 'hello /* this is not a comment */' /*what if this is a comment */;
|
|
world: '// neither is this' // hell world;
|
|
;
|
|
/* duplicate comments are retained */
|
|
/* duplicate comments are retained */
|
|
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*/ {
|
|
border: 1px solid red;
|
|
/* comment above the first occurrence of a duplicated rule */
|
|
/* comment above the second occurrence of a duplicated rule */
|
|
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';
|
|
/* duplicate comments are retained */
|
|
/* duplicate comments are retained */
|
|
what-ever: 100px;
|
|
/*this is not a comment?*/
|
|
background: url();
|
|
}
|
|
EOD;
|
|
|
|
$outputWithoutComments = <<<EOD
|
|
div {
|
|
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));
|
|
}
|
|
|
|
}
|