123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
-
- /**
- * @package SimpleTest
- * @subpackage Extensions
- * @author Perrick Penet <perrick@noparking.net>
- * @version $Id: dom_tester.php 1804 2008-09-08 13:16:44Z pp11 $
- */
-
- /**#@+
- * include SimpleTest files
- */
- require_once dirname(__FILE__).'/../web_tester.php';
- require_once dirname(__FILE__).'/dom_tester/css_selector.php';
- /**#@-*/
-
- /**
- * CssSelectorExpectation
- *
- * Create a CSS Selector expectactation
- *
- * @param DomDocument $_dom
- * @param string $_selector
- * @param array $_value
- *
- */
- class CssSelectorExpectation extends SimpleExpectation {
- var $_dom;
- var $_selector;
- var $_value;
-
- /**
- * Sets the dom tree and the css selector to compare against
- * @param mixed $dom Dom tree to search into.
- * @param mixed $selector Css selector to match element.
- * @param string $message Customised message on failure.
- * @access public
- */
- function CssSelectorExpectation($dom, $selector, $message = '%s') {
- $this->SimpleExpectation($message);
- $this->_dom = $dom;
- $this->_selector = $selector;
-
- $css_selector = new CssSelector($this->_dom);
- $this->_value = $css_selector->getTexts($this->_selector);
- }
-
- /**
- * Tests the expectation. True if it matches the
- * held value.
- * @param mixed $compare Comparison value.
- * @return boolean True if correct.
- * @access public
- */
- function test($compare) {
- return (($this->_value == $compare) && ($compare == $this->_value));
- }
-
- /**
- * Returns a human readable test message.
- * @param mixed $compare Comparison value.
- * @return string Description of success
- * or failure.
- * @access public
- */
- function testMessage($compare) {
- $dumper = &$this->_getDumper();
- if (is_array($compare)) {
- sort($compare);
- }
- if ($this->test($compare)) {
- return "CSS selector expectation [" . $dumper->describeValue($this->_value) . "]".
- " using [" . $dumper->describeValue($this->_selector) . "]";
- } else {
- return "CSS selector expectation [" . $dumper->describeValue($this->_value) . "]".
- " using [" . $dumper->describeValue($this->_selector) . "]".
- " fails with [" .
- $dumper->describeValue($compare) . "] " .
- $dumper->describeDifference($this->_value, $compare);
- }
- }
- }
-
- /**
- * DomTestCase
- *
- * Extend Web test case with DOM related assertions,
- * CSS selectors in particular
- *
- * @param DomDocument $dom
- *
- */
- class DomTestCase extends WebTestCase {
- var $dom;
-
- function assertElementsBySelector($selector, $elements, $message = '%s') {
- $this->dom = new DomDocument('1.0', 'utf-8');
- $this->dom->validateOnParse = true;
- $this->dom->loadHTML($this->_browser->getContent());
-
- return $this->assert(
- new CssSelectorExpectation($this->dom, $selector),
- $elements,
- $message);
- }
-
- function getElementsBySelector($selector) {
- $this->dom = new DomDocument('1.0', 'utf-8');
- $this->dom->validateOnParse = true;
- $this->dom->loadHTML($this->_browser->getContent());
-
- $css_selector = new CssSelectorExpectation($this->dom, $selector);
- return $css_selector->_value;
- }
- }
-
- ?>
|