Skip to content

Commit 02b99db

Browse files
committed
minor #16052 [CssSelector] synchronize tests for static and non-static API (xabbuh)
This PR was merged into the 2.8 branch. Discussion ---------- [CssSelector] synchronize tests for static and non-static API | Q | A | ------------- | --- | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | | License | MIT | Doc PR | Synchronizing the classes ensures that no tests are lost when the legacy API is removed in #16020 for Symfony 3.0, thus mitigating the risk of future regressions. Commits ------- 2b29a40 synchronize tests for static and non-static API
2 parents 311029b + 2b29a40 commit 02b99db

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

src/Symfony/Component/CssSelector/Tests/CssSelectorConverterTest.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,43 @@ public function testCssToXPathXml()
3333

3434
$this->assertEquals('descendant-or-self::H1', $converter->toXPath('H1'));
3535
}
36+
37+
/**
38+
* @expectedException \Symfony\Component\CssSelector\Exception\ParseException
39+
* @expectedExceptionMessage Expected identifier, but <eof at 3> found.
40+
*/
41+
public function testParseExceptions()
42+
{
43+
$converter = new CssSelectorConverter();
44+
$converter->toXPath('h1:');
45+
}
46+
47+
/** @dataProvider getCssToXPathWithoutPrefixTestData */
48+
public function testCssToXPathWithoutPrefix($css, $xpath)
49+
{
50+
$converter = new CssSelectorConverter();
51+
52+
$this->assertEquals($xpath, $converter->toXPath($css, ''), '->parse() parses an input string and returns a node');
53+
}
54+
55+
public function getCssToXPathWithoutPrefixTestData()
56+
{
57+
return array(
58+
array('h1', 'h1'),
59+
array('foo|h1', 'foo:h1'),
60+
array('h1, h2, h3', 'h1 | h2 | h3'),
61+
array('h1:nth-child(3n+1)', "*/*[name() = 'h1' and (position() - 1 >= 0 and (position() - 1) mod 3 = 0)]"),
62+
array('h1 > p', 'h1/p'),
63+
array('h1#foo', "h1[@id = 'foo']"),
64+
array('h1.foo', "h1[@class and contains(concat(' ', normalize-space(@class), ' '), ' foo ')]"),
65+
array('h1[class*="foo bar"]', "h1[@class and contains(@class, 'foo bar')]"),
66+
array('h1[foo|class*="foo bar"]', "h1[@foo:class and contains(@foo:class, 'foo bar')]"),
67+
array('h1[class]', 'h1[@class]'),
68+
array('h1 .foo', "h1/descendant-or-self::*/*[@class and contains(concat(' ', normalize-space(@class), ' '), ' foo ')]"),
69+
array('h1 #foo', "h1/descendant-or-self::*/*[@id = 'foo']"),
70+
array('h1 [class*=foo]', "h1/descendant-or-self::*/*[@class and contains(@class, 'foo')]"),
71+
array('div>.foo', "div/*[@class and contains(concat(' ', normalize-space(@class), ' '), ' foo ')]"),
72+
array('div > .foo', "div/*[@class and contains(concat(' ', normalize-space(@class), ' '), ' foo ')]"),
73+
);
74+
}
3675
}

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