merged branch pscheit/master (PR #2742)

Commits
-------

63e2a99 [CssSelector] Fixed Issue for XPathExprOr: missing prefix in string conversion

Discussion
----------

[CssSelector] Issue for XPathExprOr: missing prefix in string conversion

Hi there,

I created a small and dumb test for the issue. I looked at the original implementation and i think the problem is, that private properties are used in the parent class for xPathExprOr. so that the prefix cannot be accessd with $this->prefix in XPathExprOr
However I think the distribution for the prefix should be put in the parts of the or-sub-expressions the way it is shown in the test.

Hope this helps.

Best regards
Philipp
This commit is contained in:
Fabien Potencier 2011-12-01 08:46:19 +01:00
commit 654352f8d1
2 changed files with 15 additions and 1 deletions

View File

@ -42,7 +42,7 @@ class XPathExprOr extends XPathExpr
*/
public function __toString()
{
$prefix = $this->prefix;
$prefix = $this->getPrefix();
$tmp = array();
foreach ($this->items as $i) {

View File

@ -26,4 +26,18 @@ class OrNodeTest extends \PHPUnit_Framework_TestCase
$this->assertEquals("h1 | h2 | h3", (string) $or->toXpath(), '->toXpath() returns the xpath representation of the node');
}
public function testIssueMissingPrefix()
{
// h1, h2, h3
$element1 = new ElementNode('*', 'h1');
$element2 = new ElementNode('*', 'h2');
$element3 = new ElementNode('*', 'h3');
$or = new OrNode(array($element1, $element2, $element3));
$xPath = $or->toXPath();
$xPath->addPrefix('descendant-or-self::');
$this->assertEquals("descendant-or-self::h1 | descendant-or-self::h2 | descendant-or-self::h3", (string) $xPath);
}
}