diff options
author | wei <> | 2006-07-05 07:40:57 +0000 |
---|---|---|
committer | wei <> | 2006-07-05 07:40:57 +0000 |
commit | dfa5aa5fbf11f89ce483c58016465ddc3921f082 (patch) | |
tree | f01dd1c13d700b266695e503b3ebb6e05e591410 /test_tools/simpletest/form.php | |
parent | b6dfb6c447cf502e694d299dbda1b2e092c3312d (diff) |
move to tests
Diffstat (limited to 'test_tools/simpletest/form.php')
-rw-r--r-- | test_tools/simpletest/form.php | 619 |
1 files changed, 0 insertions, 619 deletions
diff --git a/test_tools/simpletest/form.php b/test_tools/simpletest/form.php deleted file mode 100644 index 89b4948a..00000000 --- a/test_tools/simpletest/form.php +++ /dev/null @@ -1,619 +0,0 @@ -<?php - /** - * Base include file for SimpleTest. - * @package SimpleTest - * @subpackage WebTester - * @version $Id: form.php,v 1.16 2005/02/22 02:17:04 lastcraft Exp $ - */ - - /**#@+ - * include SimpleTest files - */ - require_once(dirname(__FILE__) . '/tag.php'); - require_once(dirname(__FILE__) . '/encoding.php'); - /**#@-*/ - - /** - * Used to extract form elements for testing against. - * Searches by name attribute. - * @package SimpleTest - * @subpackage WebTester - */ - class SimpleNameSelector { - protected $_name; - - /** - * Stashes the name for later comparison. - * @param string $name Name attribute to match. - */ - function SimpleNameSelector($name) { - $this->_name = $name; - } - - /** - * Comparison. Compares with name attribute of - * widget. - * @param SimpleWidget $widget Control to compare. - * @access public - */ - function isMatch($widget) { - return ($widget->getName() == $this->_name); - } - } - - /** - * Used to extract form elements for testing against. - * Searches by visible label or alt text. - * @package SimpleTest - * @subpackage WebTester - */ - class SimpleLabelSelector { - protected $_label; - - /** - * Stashes the name for later comparison. - * @param string $label Visible text to match. - */ - function SimpleLabelSelector($label) { - $this->_label = $label; - } - - /** - * Comparison. Compares visible text of widget. - * @param SimpleWidget $widget Control to compare. - * @access public - */ - function isMatch($widget) { - return (trim($widget->getLabel()) == trim($this->_label)); - } - } - - /** - * Used to extract form elements for testing against. - * Searches dy id attribute. - * @package SimpleTest - * @subpackage WebTester - */ - class SimpleIdSelector { - protected $_id; - - /** - * Stashes the name for later comparison. - * @param string $id ID atribute to match. - */ - function SimpleIdSelector($id) { - $this->_id = $id; - } - - /** - * Comparison. Compares id attribute of widget. - * @param SimpleWidget $widget Control to compare. - * @access public - */ - function isMatch($widget) { - return $widget->isId($this->_id); - } - } - - /** - * Form tag class to hold widget values. - * @package SimpleTest - * @subpackage WebTester - */ - class SimpleForm { - protected $_method; - protected $_action; - protected $_default_target; - protected $_id; - protected $_buttons; - protected $_images; - protected $_widgets; - protected $_radios; - protected $_checkboxes; - - /** - * Starts with no held controls/widgets. - * @param SimpleTag $tag Form tag to read. - * @param SimpleUrl $url Location of holding page. - */ - function SimpleForm($tag, $url) { - $this->_method = $tag->getAttribute('method'); - $this->_action = $this->_createAction($tag->getAttribute('action'), $url); - $this->_default_target = false; - $this->_id = $tag->getAttribute('id'); - $this->_buttons = array(); - $this->_images = array(); - $this->_widgets = array(); - $this->_radios = array(); - $this->_checkboxes = array(); - } - - /** - * Sets the frame target within a frameset. - * @param string $frame Name of frame. - * @access public - */ - function setDefaultTarget($frame) { - $this->_default_target = $frame; - } - - /** - * Accessor for form action. - * @return string Either get or post. - * @access public - */ - function getMethod() { - return ($this->_method ? strtolower($this->_method) : 'get'); - } - - /** - * Combined action attribute with current location - * to get an absolute form target. - * @param string $action Action attribute from form tag. - * @param SimpleUrl $base Page location. - * @return SimpleUrl Absolute form target. - */ - function _createAction($action, $base) { - if ($action === false) { - return $base; - } - if ($action === true) { - $url = new SimpleUrl(''); - } else { - $url = new SimpleUrl($action); - } - return $url->makeAbsolute($base); - } - - /** - * Absolute URL of the target. - * @return SimpleUrl URL target. - * @access public - */ - function getAction() { - $url = $this->_action; - if ($this->_default_target && ! $url->getTarget()) { - $url->setTarget($this->_default_target); - } - return $url; - } - - /** - * ID field of form for unique identification. - * @return string Unique tag ID. - * @access public - */ - function getId() { - return $this->_id; - } - - /** - * Adds a tag contents to the form. - * @param SimpleWidget $tag Input tag to add. - * @access public - */ - function addWidget($tag) { - if (strtolower($tag->getAttribute('type')) == 'submit') { - $this->_buttons[] = $tag; - } elseif (strtolower($tag->getAttribute('type')) == 'image') { - $this->_images[] = $tag; - } elseif ($tag->getName()) { - $this->_setWidget($tag); - } - } - - /** - * Sets the widget into the form, grouping radio - * buttons if any. - * @param SimpleWidget $tag Incoming form control. - * @access private - */ - function _setWidget($tag) { - if (strtolower($tag->getAttribute('type')) == 'radio') { - $this->_addRadioButton($tag); - } elseif (strtolower($tag->getAttribute('type')) == 'checkbox') { - $this->_addCheckbox($tag); - } else { - $this->_widgets[] = $tag; - } - } - - /** - * Adds a radio button, building a group if necessary. - * @param SimpleRadioButtonTag $tag Incoming form control. - * @access private - */ - function _addRadioButton($tag) { - if (! isset($this->_radios[$tag->getName()])) { - $this->_widgets[] = new SimpleRadioGroup(); - $this->_radios[$tag->getName()] = count($this->_widgets) - 1; - } - $this->_widgets[$this->_radios[$tag->getName()]]->addWidget($tag); - } - - /** - * Adds a checkbox, making it a group on a repeated name. - * @param SimpleCheckboxTag $tag Incoming form control. - * @access private - */ - function _addCheckbox($tag) { - if (! isset($this->_checkboxes[$tag->getName()])) { - $this->_widgets[] = $tag; - $this->_checkboxes[$tag->getName()] = count($this->_widgets) - 1; - } else { - $index = $this->_checkboxes[$tag->getName()]; - if (! SimpleTestCompatibility::isA($this->_widgets[$index], 'SimpleCheckboxGroup')) { - $previous = $this->_widgets[$index]; - $this->_widgets[$index] = new SimpleCheckboxGroup(); - $this->_widgets[$index]->addWidget($previous); - } - $this->_widgets[$index]->addWidget($tag); - } - } - - /** - * Extracts current value from form. - * @param SimpleSelector $selector Criteria to apply. - * @return string/array Value(s) as string or null - * if not set. - * @access public - */ - function _getValueBySelector($selector) { - for ($i = 0, $count = count($this->_widgets); $i < $count; $i++) { - if ($selector->isMatch($this->_widgets[$i])) { - return $this->_widgets[$i]->getValue(); - } - } - foreach ($this->_buttons as $button) { - if ($selector->isMatch($button)) { - return $button->getValue(); - } - } - return null; - } - - /** - * Extracts current value from form. - * @param string $name Keyed by widget name. - * @return string/array Value(s) or null - * if not set. - * @access public - */ - function getValue($name) { - return $this->_getValueBySelector(new SimpleNameSelector($name)); - } - - /** - * Extracts current value from form by the ID. - * @param string/integer $id Keyed by widget ID attribute. - * @return string/array Value(s) or null - * if not set. - * @access public - */ - function getValueById($id) { - return $this->_getValueBySelector(new SimpleIdSelector($id)); - } - - /** - * Sets a widget value within the form. - * @param SimpleSelector $selector Criteria to apply. - * @param string $value Value to input into the widget. - * @return boolean True if value is legal, false - * otherwise. If the field is not - * present, nothing will be set. - * @access public - */ - function _setFieldBySelector($selector, $value) { - $success = false; - for ($i = 0, $count = count($this->_widgets); $i < $count; $i++) { - if ($selector->isMatch($this->_widgets[$i])) { - if ($this->_widgets[$i]->setValue($value)) { - $success = true; - } - } - } - return $success; - } - - /** - * Sets a widget value within the form. - * @param string $name Name of widget tag. - * @param string $value Value to input into the widget. - * @return boolean True if value is legal, false - * otherwise. If the field is not - * present, nothing will be set. - * @access public - */ - function setField($name, $value) { - return $this->_setFieldBySelector(new SimpleNameSelector($name), $value); - } - - /** - * Sets a widget value within the form by using the ID. - * @param string/integer $id Name of widget tag. - * @param string $value Value to input into the widget. - * @return boolean True if value is legal, false - * otherwise. If the field is not - * present, nothing will be set. - * @access public - */ - function setFieldById($id, $value) { - return $this->_setFieldBySelector(new SimpleIdSelector($id), $value); - } - - /** - * Creates the encoding for the current values in the - * form. - * @return SimpleFormEncoding Request to submit. - * @access private - */ - function _getEncoding() { - $encoding = new SimpleFormEncoding(); - for ($i = 0, $count = count($this->_widgets); $i < $count; $i++) { - $encoding->add( - $this->_widgets[$i]->getName(), - $this->_widgets[$i]->getValue()); - } - return $encoding; - } - - /** - * Test to see if a form has a submit button. - * @param SimpleSelector $selector Criteria to apply. - * @return boolean True if present. - * @access private - */ - function _hasSubmitBySelector($selector) { - foreach ($this->_buttons as $button) { - if ($selector->isMatch($button)) { - return true; - } - } - return false; - } - - /** - * Test to see if a form has a submit button with this - * name attribute. - * @param string $name Name to look for. - * @return boolean True if present. - * @access public - */ - function hasSubmitName($name) { - return $this->_hasSubmitBySelector(new SimpleNameSelector($name)); - } - - /** - * Test to see if a form has a submit button with this - * value attribute. - * @param string $label Button label to search for. - * @return boolean True if present. - * @access public - */ - function hasSubmitLabel($label) { - return $this->_hasSubmitBySelector(new SimpleLabelSelector($label)); - } - - /** - * Test to see if a form has a submit button with this - * ID attribute. - * @param string $id Button ID attribute to search for. - * @return boolean True if present. - * @access public - */ - function hasSubmitId($id) { - return $this->_hasSubmitBySelector(new SimpleIdSelector($id)); - } - - /** - * Test to see if a form has an image control. - * @param SimpleSelector $selector Criteria to apply. - * @return boolean True if present. - * @access public - */ - function _hasImageBySelector($selector) { - foreach ($this->_images as $image) { - if ($selector->isMatch($image)) { - return true; - } - } - return false; - } - - /** - * Test to see if a form has a submit button with this - * name attribute. - * @param string $label Button alt attribute to search for - * or nearest equivalent. - * @return boolean True if present. - * @access public - */ - function hasImageLabel($label) { - return $this->_hasImageBySelector(new SimpleLabelSelector($label)); - } - - /** - * Test to see if a form has a submittable image with this - * field name. - * @param string $name Image name to search for. - * @return boolean True if present. - * @access public - */ - function hasImageName($name) { - return $this->_hasImageBySelector(new SimpleNameSelector($name)); - } - - /** - * Test to see if a form has a submittable image with this - * ID attribute. - * @param string $id Button ID attribute to search for. - * @return boolean True if present. - * @access public - */ - function hasImageId($id) { - return $this->_hasImageBySelector(new SimpleIdSelector($id)); - } - - /** - * Gets the submit values for a selected button. - * @param SimpleSelector $selector Criteria to apply. - * @param hash $additional Additional data for the form. - * @return SimpleEncoding Submitted values or false - * if there is no such button - * in the form. - * @access public - */ - function _submitButtonBySelector($selector, $additional) { - foreach ($this->_buttons as $button) { - if ($selector->isMatch($button)) { - $encoding = $this->_getEncoding(); - $encoding->merge($button->getSubmitValues()); - if ($additional) { - $encoding->merge($additional); - } - return $encoding; - } - } - return false; - } - - /** - * Gets the submit values for a named button. - * @param string $name Button label to search for. - * @param hash $additional Additional data for the form. - * @return SimpleEncoding Submitted values or false - * if there is no such button in the - * form. - * @access public - */ - function submitButtonByName($name, $additional = false) { - return $this->_submitButtonBySelector( - new SimpleNameSelector($name), - $additional); - } - - /** - * Gets the submit values for a named button. - * @param string $label Button label to search for. - * @param hash $additional Additional data for the form. - * @return SimpleEncoding Submitted values or false - * if there is no such button in the - * form. - * @access public - */ - function submitButtonByLabel($label, $additional = false) { - return $this->_submitButtonBySelector( - new SimpleLabelSelector($label), - $additional); - } - - /** - * Gets the submit values for a button identified by the ID. - * @param string $id Button ID attribute to search for. - * @param hash $additional Additional data for the form. - * @return SimpleEncoding Submitted values or false - * if there is no such button in the - * form. - * @access public - */ - function submitButtonById($id, $additional = false) { - return $this->_submitButtonBySelector( - new SimpleIdSelector($id), - $additional); - } - - /** - * Gets the submit values for an image. - * @param SimpleSelector $selector Criteria to apply. - * @param integer $x X-coordinate of click. - * @param integer $y Y-coordinate of click. - * @param hash $additional Additional data for the form. - * @return SimpleEncoding Submitted values or false - * if there is no such button in the - * form. - * @access public - */ - function _submitImageBySelector($selector, $x, $y, $additional) { - foreach ($this->_images as $image) { - if ($selector->isMatch($image)) { - $encoding = $this->_getEncoding(); - $encoding->merge($image->getSubmitValues($x, $y)); - if ($additional) { - $encoding->merge($additional); - } - return $encoding; - } - } - return false; - } - - /** - * Gets the submit values for an image identified by the alt - * tag or nearest equivalent. - * @param string $label Button label to search for. - * @param integer $x X-coordinate of click. - * @param integer $y Y-coordinate of click. - * @param hash $additional Additional data for the form. - * @return SimpleEncoding Submitted values or false - * if there is no such button in the - * form. - * @access public - */ - function submitImageByLabel($label, $x, $y, $additional = false) { - return $this->_submitImageBySelector( - new SimpleLabelSelector($label), - $x, - $y, - $additional); - } - - /** - * Gets the submit values for an image identified by the ID. - * @param string $name Image name to search for. - * @param integer $x X-coordinate of click. - * @param integer $y Y-coordinate of click. - * @param hash $additional Additional data for the form. - * @return SimpleEncoding Submitted values or false - * if there is no such button in the - * form. - * @access public - */ - function submitImageByName($name, $x, $y, $additional = false) { - return $this->_submitImageBySelector( - new SimpleNameSelector($name), - $x, - $y, - $additional); - } - - /** - * Gets the submit values for an image identified by the ID. - * @param string/integer $id Button ID attribute to search for. - * @param integer $x X-coordinate of click. - * @param integer $y Y-coordinate of click. - * @param hash $additional Additional data for the form. - * @return SimpleEncoding Submitted values or false - * if there is no such button in the - * form. - * @access public - */ - function submitImageById($id, $x, $y, $additional = false) { - return $this->_submitImageBySelector( - new SimpleIdSelector($id), - $x, - $y, - $additional); - } - - /** - * Simply submits the form without the submit button - * value. Used when there is only one button or it - * is unimportant. - * @return hash Submitted values. - * @access public - */ - function submit() { - return $this->_getEncoding(); - } - } -?>
\ No newline at end of file |