From 615eb561dfc43bd11ba620c9465e18ac15e22131 Mon Sep 17 00:00:00 2001 From: knut <> Date: Fri, 1 Jun 2007 05:09:32 +0000 Subject: resolved #634 and added unit tests for TXmlElement --- HISTORY | 1 + framework/Xml/TXmlDocument.php | 54 +++++++++++++++++--- tests/unit/Xml/AllTests.php | 6 +-- tests/unit/Xml/TXmlDocumentTest.php | 38 +++++++------- tests/unit/Xml/TXmlElementListTest.php | 20 ++++---- tests/unit/Xml/TXmlElementTest.php | 92 ++++++++++++++++++++++++---------- 6 files changed, 144 insertions(+), 67 deletions(-) diff --git a/HISTORY b/HISTORY index ec3a2293..0482f17c 100644 --- a/HISTORY +++ b/HISTORY @@ -3,6 +3,7 @@ Version 3.1.0 To Be Released BUG: Ticket#621 - TWizardNavigationButtonStyle could not be found (Qiang) BUG: TWizard Sidebar using TDataListItemRenderer has error (Qiang) ENH: Ticket#631 - Make TQueue implement Countable as the other collection classes (Knut) +ENH: Ticket#634 - Override __toString for TXmlElement and TXmlDocument (Knut) Version 3.1.0 RC May 14, 2007 ============================= diff --git a/framework/Xml/TXmlDocument.php b/framework/Xml/TXmlDocument.php index b4293763..0b44214e 100644 --- a/framework/Xml/TXmlDocument.php +++ b/framework/Xml/TXmlDocument.php @@ -14,7 +14,7 @@ * TXmlElement class. * * TXmlElement represents an XML element node. - * You can obtain its tagname, attributes, text between the openning and closing + * You can obtain its tag-name, attributes, text between the opening and closing * tags via the TagName, Attributes, and Value properties, respectively. * You can also retrieve its parent and child elements by Parent and Elements * properties, respectively. @@ -33,11 +33,11 @@ class TXmlElement extends TComponent */ private $_parent=null; /** - * @var string tagname of this element + * @var string tag-name of this element */ private $_tagName='unknown'; /** - * @var string text enclosed between openning and closing tags of this element + * @var string text enclosed between opening and closing tags of this element */ private $_value=''; /** @@ -51,7 +51,7 @@ class TXmlElement extends TComponent /** * Constructor. - * @param string tagname for this element + * @param string tag-name for this element */ public function __construct($tagName) { @@ -75,7 +75,7 @@ class TXmlElement extends TComponent } /** - * @return string tagname of this element + * @return string tag-name of this element */ public function getTagName() { @@ -83,7 +83,7 @@ class TXmlElement extends TComponent } /** - * @param string tagname of this element + * @param string tag-name of this element */ public function setTagName($tagName) { @@ -163,7 +163,7 @@ class TXmlElement extends TComponent } /** - * @return TXmlElement the first child element that has the specified tagname, null if not found + * @return TXmlElement the first child element that has the specified tag-name, null if not found */ public function getElementByTagName($tagName) { @@ -177,7 +177,7 @@ class TXmlElement extends TComponent } /** - * @return TList list of all child elements that have the specified tagname + * @return TList list of all child elements that have the specified tag-name */ public function getElementsByTagName($tagName) { @@ -222,6 +222,24 @@ class TXmlElement extends TComponent else return $prefix."<{$this->_tagName}$attr />"; } + + /** + * Magic-method override. Called whenever this element is used as a string. + * + * $element = new TXmlElement('tag'); + * echo $element; + * + * or + * + * $element = new TXmlElement('tag'); + * $xml = (string)$element; + * + * @return string string representation of this element + */ + public function __toString() + { + return $this->toString(); + } private function xmlEncode($str) { @@ -415,6 +433,26 @@ class TXmlDocument extends TXmlElement $encoding=empty($this->_encoding)?'':' encoding="'.$this->_encoding.'"'; return "\n".$this->toString(0); } + + /** + * Magic-method override. Called whenever this document is used as a string. + * + * $document = new TXmlDocument(); + * $document->TagName = 'root'; + * echo $document; + * + * or + * + * $document = new TXmlDocument(); + * $document->TagName = 'root'; + * $xml = (string)$document; + * + * @return string string representation of this document + */ + public function __toString() + { + return $this->saveToString(); + } /** * Recursively converts DOM XML nodes into TXmlElement diff --git a/tests/unit/Xml/AllTests.php b/tests/unit/Xml/AllTests.php index 0760474f..10658d42 100644 --- a/tests/unit/Xml/AllTests.php +++ b/tests/unit/Xml/AllTests.php @@ -5,9 +5,9 @@ if(!defined('PHPUnit_MAIN_METHOD')) { define('PHPUnit_MAIN_METHOD', 'Xml_AllTests::main'); } -require_once 'Xml/TXmlDocumentTest.php'; -require_once 'Xml/TXmlElementTest.php'; -require_once 'Xml/TXmlElementListTest.php'; +require_once 'TXmlDocumentTest.php'; +require_once 'TXmlElementTest.php'; +require_once 'TXmlElementListTest.php'; class Xml_AllTests { public static function main() { diff --git a/tests/unit/Xml/TXmlDocumentTest.php b/tests/unit/Xml/TXmlDocumentTest.php index 1e588974..b47f735d 100644 --- a/tests/unit/Xml/TXmlDocumentTest.php +++ b/tests/unit/Xml/TXmlDocumentTest.php @@ -8,28 +8,28 @@ Prado::using('System.Xml.TXmlDocument'); */ class TXmlDocumentTest extends PHPUnit_Framework_TestCase { - public function testConstruct() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testConstruct() { + throw new PHPUnit_Framework_IncompleteTestError(); + } - public function testSetVersion() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testSetVersion() { + throw new PHPUnit_Framework_IncompleteTestError(); + } - public function testSetEncoding() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testSetEncoding() { + throw new PHPUnit_Framework_IncompleteTestError(); + } - public function testLoadFromFile() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testLoadFromFile() { + throw new PHPUnit_Framework_IncompleteTestError(); + } - public function testLoadFromString() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testLoadFromString() { + throw new PHPUnit_Framework_IncompleteTestError(); + } - public function testSaveToString() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testSaveToString() { + throw new PHPUnit_Framework_IncompleteTestError(); + } } -?> \ No newline at end of file +?> diff --git a/tests/unit/Xml/TXmlElementListTest.php b/tests/unit/Xml/TXmlElementListTest.php index eb91c46f..95906c1f 100644 --- a/tests/unit/Xml/TXmlElementListTest.php +++ b/tests/unit/Xml/TXmlElementListTest.php @@ -8,16 +8,16 @@ Prado::using('System.Xml.TXmlDocument'); */ class TXmlElementListTest extends PHPUnit_Framework_TestCase { - public function testConstruct() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testConstruct() { + throw new PHPUnit_Framework_IncompleteTestError(); + } - public function testInsertAt() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testInsertAt() { + throw new PHPUnit_Framework_IncompleteTestError(); + } - public function testRemoveAt() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testRemoveAt() { + throw new PHPUnit_Framework_IncompleteTestError(); + } } -?> \ No newline at end of file +?> diff --git a/tests/unit/Xml/TXmlElementTest.php b/tests/unit/Xml/TXmlElementTest.php index eec22b1f..89baed03 100644 --- a/tests/unit/Xml/TXmlElementTest.php +++ b/tests/unit/Xml/TXmlElementTest.php @@ -8,39 +8,77 @@ Prado::using('System.Xml.TXmlDocument'); */ class TXmlElementTest extends PHPUnit_Framework_TestCase { - public function setUp() { - } + public function setUp() { + } - public function testConstruct() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testConstruct() { + $element = new TXmlElement('tag'); + self::assertEquals('tag', $element->getTagName()); + } - public function testSetParent() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testSetParent() { + $parent = new TXmlElement('parent'); + $child = new TXmlElement('child'); + $child->setParent($parent); + self::assertEquals($parent, $child->getParent()); + } - public function testSetTagName() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testSetTagName() { + $element = new TXmlElement('tag'); + $element->setTagName('newtag'); + self::assertEquals('newtag', $element->getTagName()); + } - public function testSetValue() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testSetValue() { + $element = new TXmlElement('tag'); + $element->setValue('value'); + self::assertEquals('value', $element->getValue()); + } - public function testSetAttribute() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testHasElement() { + $element = new TXmlElement('first'); + self::assertEquals(false, $element->getHasElement()); + $element->Elements[] = new TXmlElement('second'); + self::assertEquals(true, $element->getHasElement()); + } - public function testGetElementByTagName() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testHasAttribute() { + $element = new TXmlElement('tag'); + self::assertEquals(false, $element->getHasAttribute()); + $element->Attributes[] = new TMap(array('key' => 'value')); + self::assertEquals(true, $element->getHasAttribute()); + } - public function testGetElementsByTagName() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testSetAttribute() { + $element = new TXmlElement('tag'); + self::assertEquals(null, $element->getAttribute('key')); + $element->setAttribute('key', 'value'); + self::assertEquals('value', $element->getAttribute('key')); + } - public function testToString() { - throw new PHPUnit_Framework_IncompleteTestError(); - } + public function testGetElementByTagName() { + $element = new TXmlElement('tag'); + self::assertEquals(null, $element->getElementByTagName('first')); + $element->Elements[] = new TXmlElement('first'); + $first = $element->getElementByTagName('first'); + self::assertType('TXmlElement', $first); + self::assertEquals('first', $first->getTagName()); + } + + public function testGetElementsByTagName() { + $element = new TXmlElement('tag'); + $element->Elements[] = new TXmlElement('tag'); + $element->Elements[] = new TXmlElement('tag'); + self::assertEquals(2, count($element->getElementsByTagName('tag'))); + } + + public function testToString() { + $element = new TXmlElement('tag'); + self::assertEquals('', (string)$element); + $element->setAttribute('key', 'value'); + self::assertEquals('', (string)$element); + $element->setValue('value'); + self::assertEquals('value', (string)$element); + } } -?> \ No newline at end of file +?> -- cgit v1.2.3