2023-02-16 09:19:46 +01:00

74 lines
1.8 KiB
PHP

<?php
/**
* Html2Pdf Library - Tests
*
* HTML => PDF converter
* distributed under the OSL-3.0 License
*
* @package Html2pdf
* @author Laurent MINGUET <webmaster@html2pdf.fr>
* @copyright 2017 Laurent MINGUET
*/
namespace Spipu\Html2Pdf\Tests\Parsing;
use PHPUnit_Framework_TestCase;
use Spipu\Html2Pdf\Parsing\HtmlLexer;
/**
* Class HtmlLexerTest
*/
class HtmlLexerTest extends PHPUnit_Framework_TestCase
{
/**
* Test: tokenize
*
* @param string $html html to test
* @param array $expectedTokens expected token
*
* @dataProvider tokenizeProvider
*/
public function testTokenize($html, $expectedTokens)
{
$lexer = new HtmlLexer();
$tokens = $lexer->tokenize($html);
$this->assertEquals(count($expectedTokens), count($tokens));
for ($i = 0; $i < count($tokens); $i++) {
$this->assertEquals($expectedTokens[$i][0], $tokens[$i]->getType());
$this->assertEquals($expectedTokens[$i][1], $tokens[$i]->getData());
$this->assertEquals($expectedTokens[$i][2], $tokens[$i]->getLine());
}
}
/**
* provider: tokenize
*
* @return array
*/
public function tokenizeProvider()
{
return array(
array(
'<p>test</p>',
array(
array('code', '<p>', 1),
array('txt', 'test', -1),
array('code', '</p>', 1),
)
),
array(
"<a><!-- comment -->\n<b><c>test",
array(
array('code', '<a>', 1),
array('txt', "\n", -1),
array('code', '<b>', 2),
array('code', '<c>', 2),
array('txt', "test", -1),
)
)
);
}
}