Passed
Push — master ( 45441d...6fcca7 )
by Jeroen De
01:46
created

DimensionParserTest::parse()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
declare( strict_types = 1 );
4
5
namespace ParamProcessor\Tests\Unit\PackagePrivate;
6
7
use ParamProcessor\PackagePrivate\DimensionParser;
8
use PHPUnit\Framework\TestCase;
9
use ValueParsers\ParseException;
10
use ValueParsers\ParserOptions;
11
12
class DimensionParserTest extends TestCase {
13
14
	public function testParserExceptionOnNonString() {
15
		$this->expectException( ParseException::class );
16
		$this->parse( 32202 );
17
	}
18
19
	private function parse( $input ) {
20
		return ( new DimensionParser() )->parse( $input );
21
	}
22
23
	/**
24
	 * @dataProvider validDimensionProvider
25
	 */
26
	public function testParsingValidInputs( string $input, string $expected ) {
27
		$this->assertSame( $expected, $this->parse( $input ) );
28
	}
29
30
	public function validDimensionProvider() {
31
		yield [ '10px', '10px' ];
32
		yield [ '10ex', '10ex' ];
33
		yield [ '10em', '10em' ];
34
		yield [ '2.5px', '2.5px' ];
35
36
		yield [ '10 px', '10px' ];
37
		yield [ '10  px', '10px' ];
38
		yield [ ' 10  px ', '10px' ];
39
40
		yield [ '10', '10px' ];
41
		yield [ '2.5', '2.5px' ];
42
	}
43
44
	public function testAlternateDefaultUnit() {
45
		$this->assertSame(
46
			'1%',
47
			( new DimensionParser( new ParserOptions( [ DimensionParser::DEFAULT_UNIT => '%' ] ) ) )->parse( '1' )
48
		);
49
	}
50
51
}
52