Source for file dom_tester.php

Documentation is available at dom_tester.php

  1. <?php
  2. /**
  3.  *    @package    SimpleTest
  4.  *    @subpackage    Extensions
  5.  *  @author     Perrick Penet <perrick@noparking.net>
  6.  *    @version    $Id: dom_tester.php 1982 2010-03-28 11:57:54Z lastcraft $
  7.  */
  8.  
  9. /**#@+
  10.  * include SimpleTest files
  11.  */
  12. require_once dirname(__FILE__).'/../web_tester.php';
  13. require_once dirname(__FILE__).'/dom_tester/css_selector.php';
  14. /**#@-*/
  15.  
  16. /**
  17.  * CssSelectorExpectation
  18.  * 
  19.  * Create a CSS Selector expectactation
  20.  * 
  21.  * @package    SimpleTest
  22.  * @subpackage    Extensions
  23.  * @param DomDocument $_dom 
  24.  * @param string $_selector 
  25.  * @param array $_value 
  26.  * 
  27.  */
  28.     protected $dom;
  29.     protected $selector;
  30.     protected $value;
  31.     
  32.     /**
  33.      *    Sets the dom tree and the css selector to compare against
  34.      *    @param mixed $dom          Dom tree to search into.
  35.      *    @param mixed $selector     Css selector to match element.
  36.      *    @param string $message     Customised message on failure.
  37.      *    @access public
  38.      */
  39.     function __construct($dom$selector$message '%s'{
  40.         parent::__construct($message);
  41.         $this->dom = $dom;
  42.         $this->selector = $selector;
  43.         
  44.         $css_selector new CssSelector($this->dom);
  45.         $this->value = $css_selector->getTexts($this->selector);
  46.     }
  47.     
  48.     /**
  49.      *    Tests the expectation. True if it matches the
  50.      *    held value.
  51.      *    @param mixed $compare        Comparison value.
  52.      *    @return boolean              True if correct.
  53.      *    @access public
  54.      */
  55.     function test($compare{
  56.             return (($this->value == $compare&& ($compare == $this->value));
  57.     }
  58.     
  59.     /**
  60.      *    Returns a human readable test message.
  61.      *    @param mixed $compare      Comparison value.
  62.      *    @return string             Description of success
  63.      *                                or failure.
  64.      *    @access public
  65.      */
  66.     function testMessage($compare{
  67.         $dumper $this->getDumper();
  68.         if (is_array($compare)) {
  69.             sort($compare);
  70.         }
  71.         if ($this->test($compare)) {
  72.             return "CSS selector expectation [" $dumper->describeValue($this->value"]".
  73.                     " using [" $dumper->describeValue($this->selector"]";
  74.         else {
  75.             return "CSS selector expectation [" $dumper->describeValue($this->value"]".
  76.                     " using [" $dumper->describeValue($this->selector"]".
  77.                     " fails with [" .
  78.                     $dumper->describeValue($compare"] " .
  79.                     $dumper->describeDifference($this->value$compare);
  80.         }
  81.     }
  82. }
  83.  
  84. /**
  85.  * DomTestCase
  86.  * 
  87.  * Extend Web test case with DOM related assertions,
  88.  * CSS selectors in particular
  89.  * 
  90.  * @package    SimpleTest
  91.  * @subpackage    Extensions
  92.  * @param DomDocument $dom 
  93.  * 
  94.  */
  95. class DomTestCase extends WebTestCase {
  96.     public $dom;
  97.     
  98.     function loadDom({
  99.         $this->dom = new DomDocument('1.0''utf-8');
  100.         $this->dom->validateOnParse true;
  101.         $this->dom->loadHTML($this->_browser->getContent());
  102.     }
  103.  
  104.     function getElementsBySelector($selector{
  105.         $this->loadDom();        
  106.         $css_selector new CssSelectorExpectation($this->dom$selector);
  107.         return $css_selector->_value;
  108.     }
  109.     
  110.     function assertElementsBySelector($selector$elements$message '%s'{
  111.         $this->loadDom();        
  112.         return $this->assert(
  113.                 new CssSelectorExpectation($this->dom$selector),
  114.                 $elements,
  115.                 $message);
  116.     }
  117. }
  118. ?>

Documentation generated on Sun, 31 Oct 2010 16:31:12 -0500 by phpDocumentor 1.4.3