Skip to content

Commit c6798bd

Browse files
vladis84fabpot
authored andcommitted
Component CssSelector tests
1 parent 12f8629 commit c6798bd

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

Tests/XPath/TranslatorTest.php

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,13 @@
1212
namespace Symfony\Component\CssSelector\Tests\XPath;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\CssSelector\Exception\ExpressionErrorException;
16+
use Symfony\Component\CssSelector\Node\ElementNode;
17+
use Symfony\Component\CssSelector\Node\FunctionNode;
18+
use Symfony\Component\CssSelector\Parser\Parser;
1519
use Symfony\Component\CssSelector\XPath\Extension\HtmlExtension;
1620
use Symfony\Component\CssSelector\XPath\Translator;
21+
use Symfony\Component\CssSelector\XPath\XPathExpr;
1722

1823
class TranslatorTest extends TestCase
1924
{
@@ -31,6 +36,61 @@ public function testCssToXPath($css, $xpath)
3136
$this->assertEquals($xpath, $translator->cssToXPath($css, ''));
3237
}
3338

39+
public function testCssToXPathPseudoElement()
40+
{
41+
$translator = new Translator();
42+
$translator->registerExtension(new HtmlExtension($translator));
43+
$this->expectException(ExpressionErrorException::class);
44+
$translator->cssToXPath('e::first-line');
45+
}
46+
47+
public function testGetExtensionNotExistsExtension()
48+
{
49+
$translator = new Translator();
50+
$translator->registerExtension(new HtmlExtension($translator));
51+
$this->expectException(ExpressionErrorException::class);
52+
$translator->getExtension('fake');
53+
}
54+
55+
public function testAddCombinationNotExistsExtension()
56+
{
57+
$translator = new Translator();
58+
$translator->registerExtension(new HtmlExtension($translator));
59+
$this->expectException(ExpressionErrorException::class);
60+
$parser = new Parser();
61+
$xpath = $parser->parse('*')[0];
62+
$combinedXpath = $parser->parse('*')[0];
63+
$translator->addCombination('fake', $xpath, $combinedXpath);
64+
}
65+
66+
public function testAddFunctionNotExistsFunction()
67+
{
68+
$translator = new Translator();
69+
$translator->registerExtension(new HtmlExtension($translator));
70+
$xpath = new XPathExpr();
71+
$function = new FunctionNode(new ElementNode(), 'fake');
72+
$this->expectException(ExpressionErrorException::class);
73+
$translator->addFunction($xpath, $function);
74+
}
75+
76+
public function testAddPseudoClassNotExistsClass()
77+
{
78+
$translator = new Translator();
79+
$translator->registerExtension(new HtmlExtension($translator));
80+
$xpath = new XPathExpr();
81+
$this->expectException(ExpressionErrorException::class);
82+
$translator->addPseudoClass($xpath, 'fake');
83+
}
84+
85+
public function testAddAttributeMatchingClassNotExistsClass()
86+
{
87+
$translator = new Translator();
88+
$translator->registerExtension(new HtmlExtension($translator));
89+
$xpath = new XPathExpr();
90+
$this->expectException(ExpressionErrorException::class);
91+
$translator->addAttributeMatching($xpath, '', '', '');
92+
}
93+
3494
/** @dataProvider getXmlLangTestData */
3595
public function testXmlLang($css, array $elementsId)
3696
{

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy