summaryrefslogtreecommitdiff
path: root/tests/test_tools/simpletest/form.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_tools/simpletest/form.php')
-rw-r--r--tests/test_tools/simpletest/form.php351
1 files changed, 0 insertions, 351 deletions
diff --git a/tests/test_tools/simpletest/form.php b/tests/test_tools/simpletest/form.php
deleted file mode 100644
index fba26bf6..00000000
--- a/tests/test_tools/simpletest/form.php
+++ /dev/null
@@ -1,351 +0,0 @@
-<?php
- /**
- * Base include file for SimpleTest.
- * @package SimpleTest
- * @subpackage WebTester
- * @version $Id: form.php 1398 2006-09-08 19:31:03Z xue $
- */
-
- /**#@+
- * include SimpleTest files
- */
- require_once(dirname(__FILE__) . '/tag.php');
- require_once(dirname(__FILE__) . '/encoding.php');
- require_once(dirname(__FILE__) . '/selector.php');
- /**#@-*/
-
- /**
- * Form tag class to hold widget values.
- * @package SimpleTest
- * @subpackage WebTester
- */
- class SimpleForm {
- protected $_method;
- protected $_action;
- protected $_encoding;
- 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->_encoding = $this->_setEncodingClass($tag);
- $this->_default_target = false;
- $this->_id = $tag->getAttribute('id');
- $this->_buttons = array();
- $this->_images = array();
- $this->_widgets = array();
- $this->_radios = array();
- $this->_checkboxes = array();
- }
-
- /**
- * Creates the request packet to be sent by the form.
- * @param SimpleTag $tag Form tag to read.
- * @return string Packet class.
- * @access private
- */
- function _setEncodingClass($tag) {
- if (strtolower($tag->getAttribute('method')) == 'post') {
- if (strtolower($tag->getAttribute('enctype')) == 'multipart/form-data') {
- return 'SimpleMultipartEncoding';
- }
- return 'SimplePostEncoding';
- }
- return 'SimpleGetEncoding';
- }
-
- /**
- * Sets the frame target within a frameset.
- * @param string $frame Name of frame.
- * @access public
- */
- function setDefaultTarget($frame) {
- $this->_default_target = $frame;
- }
-
- /**
- * Accessor for method of form submission.
- * @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 === '') || ($action === false)) {
- return $base;
- }
- $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;
- }
-
- /**
- * Creates the encoding for the current values in the
- * form.
- * @return SimpleFormEncoding Request to submit.
- * @access private
- */
- function _encode() {
- $class = $this->_encoding;
- $encoding = new $class();
- for ($i = 0, $count = count($this->_widgets); $i < $count; $i++) {
- $this->_widgets[$i]->write($encoding);
- }
- return $encoding;
- }
-
- /**
- * 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 getValue($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;
- }
-
- /**
- * 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 setField($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;
- }
-
- /**
- * Used by the page object to set widgets labels to
- * external label tags.
- * @param SimpleSelector $selector Criteria to apply.
- * @access public
- */
- function attachLabelBySelector($selector, $label) {
- for ($i = 0, $count = count($this->_widgets); $i < $count; $i++) {
- if ($selector->isMatch($this->_widgets[$i])) {
- if (method_exists($this->_widgets[$i], 'setLabel')) {
- $this->_widgets[$i]->setLabel($label);
- return;
- }
- }
- }
- }
-
- /**
- * Test to see if a form has a submit button.
- * @param SimpleSelector $selector Criteria to apply.
- * @return boolean True if present.
- * @access public
- */
- function hasSubmit($selector) {
- foreach ($this->_buttons as $button) {
- if ($selector->isMatch($button)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Test to see if a form has an image control.
- * @param SimpleSelector $selector Criteria to apply.
- * @return boolean True if present.
- * @access public
- */
- function hasImage($selector) {
- foreach ($this->_images as $image) {
- if ($selector->isMatch($image)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * 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 submitButton($selector, $additional = false) {
- $additional = $additional ? $additional : array();
- foreach ($this->_buttons as $button) {
- if ($selector->isMatch($button)) {
- $encoding = $this->_encode();
- $button->write($encoding);
- if ($additional) {
- $encoding->merge($additional);
- }
- return $encoding;
- }
- }
- return false;
- }
-
- /**
- * 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 submitImage($selector, $x, $y, $additional = false) {
- $additional = $additional ? $additional : array();
- foreach ($this->_images as $image) {
- if ($selector->isMatch($image)) {
- $encoding = $this->_encode();
- $image->write($encoding, $x, $y);
- if ($additional) {
- $encoding->merge($additional);
- }
- return $encoding;
- }
- }
- return false;
- }
-
- /**
- * 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->_encode();
- }
- }