@@ -33,4 +33,43 @@ public function testCssToXPathXml()
33
33
34
34
$ this ->assertEquals ('descendant-or-self::H1 ' , $ converter ->toXPath ('H1 ' ));
35
35
}
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
+ }
36
75
}
0 commit comments