Skip to content

Commit 2c3fe72

Browse files
authored
[TASK] Extract value parsing functional tests (part 1) (#1084)
In the tests, we should test parsing and rendering separately as this makes debugging test failures a lot easier. Part of #1057
1 parent 7a59339 commit 2c3fe72

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

tests/Functional/Value/ValueTest.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Sabberworm\CSS\Tests\Functional\Value;
6+
7+
use PHPUnit\Framework\TestCase;
8+
use Sabberworm\CSS\Parsing\ParserState;
9+
use Sabberworm\CSS\Settings;
10+
use Sabberworm\CSS\Value\CSSFunction;
11+
use Sabberworm\CSS\Value\Size;
12+
use Sabberworm\CSS\Value\Value;
13+
14+
/**
15+
* @covers \Sabberworm\CSS\Value\Value
16+
*/
17+
final class ValueTest extends TestCase
18+
{
19+
/**
20+
* the default set of delimiters for parsing most values
21+
*
22+
* @see \Sabberworm\CSS\Rule\Rule::listDelimiterForRule
23+
*
24+
* @var list<non-empty-string>
25+
*/
26+
private const DEFAULT_DELIMITERS = [',', ' ', '/'];
27+
28+
/**
29+
* @test
30+
*/
31+
public function parsesFirstArgumentInMaxFunction(): void
32+
{
33+
$parsedValue = Value::parseValue(
34+
new ParserState('max(300px, 400px);', Settings::create()),
35+
self::DEFAULT_DELIMITERS
36+
);
37+
38+
self::assertInstanceOf(CSSFunction::class, $parsedValue);
39+
$size = $parsedValue->getArguments()[0];
40+
self::assertInstanceOf(Size::class, $size);
41+
self::assertSame(300.0, $size->getSize());
42+
self::assertSame('px', $size->getUnit());
43+
self::assertFalse($size->isColorComponent());
44+
}
45+
}

0 commit comments

Comments
 (0)