From dfa5aa5fbf11f89ce483c58016465ddc3921f082 Mon Sep 17 00:00:00 2001 From: wei <> Date: Wed, 5 Jul 2006 07:40:57 +0000 Subject: move to tests --- tests/test_tools/simpletest/encoding.php | 156 +++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 tests/test_tools/simpletest/encoding.php (limited to 'tests/test_tools/simpletest/encoding.php') diff --git a/tests/test_tools/simpletest/encoding.php b/tests/test_tools/simpletest/encoding.php new file mode 100644 index 00000000..62ca2a1b --- /dev/null +++ b/tests/test_tools/simpletest/encoding.php @@ -0,0 +1,156 @@ +_request = array(); + $this->setCoordinates(); + $this->merge($query); + } + + /** + * Adds a parameter to the query. + * @param string $key Key to add value to. + * @param string/array $value New data. + * @access public + */ + function add($key, $value) { + if ($value === false) { + return; + } + if (! isset($this->_request[$key])) { + $this->_request[$key] = array(); + } + if (is_array($value)) { + foreach ($value as $item) { + $this->_request[$key][] = $item; + } + } else { + $this->_request[$key][] = $value; + } + } + + /** + * Adds a set of parameters to this query. + * @param array/SimpleQueryString $query Multiple values are + * as lists on a single key. + * @access public + */ + function merge($query) { + if (is_object($query)) { + foreach ($query->getKeys() as $key) { + $this->add($key, $query->getValue($key)); + } + if ($query->getX() !== false) { + $this->setCoordinates($query->getX(), $query->getY()); + } + } elseif (is_array($query)) { + foreach ($query as $key => $value) { + $this->add($key, $value); + } + } + } + + /** + * Sets image coordinates. Set to false to clear + * them. + * @param integer $x Horizontal position. + * @param integer $y Vertical position. + * @access public + */ + function setCoordinates($x = false, $y = false) { + if (($x === false) || ($y === false)) { + $this->_x = $this->_y = false; + return; + } + $this->_x = (integer)$x; + $this->_y = (integer)$y; + } + + /** + * Accessor for horizontal image coordinate. + * @return integer X value. + * @access public + */ + function getX() { + return $this->_x; + } + + /** + * Accessor for vertical image coordinate. + * @return integer Y value. + * @access public + */ + function getY() { + return $this->_y; + } + + /** + * Accessor for single value. + * @return string/array False if missing, string + * if present and array if + * multiple entries. + * @access public + */ + function getValue($key) { + if (! isset($this->_request[$key])) { + return false; + } elseif (count($this->_request[$key]) == 1) { + return $this->_request[$key][0]; + } else { + return $this->_request[$key]; + } + } + + /** + * Accessor for key list. + * @return array List of keys present. + * @access public + */ + function getKeys() { + return array_keys($this->_request); + } + + /** + * Renders the query string as a URL encoded + * request part. + * @return string Part of URL. + * @access public + */ + function asString() { + $statements = array(); + foreach ($this->_request as $key => $values) { + foreach ($values as $value) { + $statements[] = "$key=" . urlencode($value); + } + } + $coords = ($this->_x !== false) ? '?' . $this->_x . ',' . $this->_y : ''; + return implode('&', $statements) . $coords; + } + } +?> \ No newline at end of file -- cgit v1.2.3