diff --git a/tests/bootstrap.php b/tests/bootstrap.php
new file mode 100644
index 0000000..022f6c2
--- /dev/null
+++ b/tests/bootstrap.php
@@ -0,0 +1,96 @@
+simpleXML = simplexml_load_string('
+
+
+ PHP: Behind the Parser
+
+
+ Ms. Coder
+ Onlivia Actora
+
+
+ Mr. Coder
+ El ActÓr
+
+
+
+ So, this language. It\'s like, a programming language.
+ Or is it a scripting language? All is revealed in this
+ thrilling horror spoof of a documentary.
+
+
+ PHP solves all my web problems
+
+ 7
+ 5
+
+
+ ');
+
+ $this->simpleXML_default_NS = simplexml_load_string('
+
+
+ PHP: Behind the Parser
+
+
+ Ms. Coder
+ Onlivia Actora
+
+
+ Mr. Coder
+ El ActÓr
+
+
+
+ So, this language. It\'s like, a programming language.
+ Or is it a scripting language? All is revealed in this
+ thrilling horror spoof of a documentary.
+
+
+ PHP solves all my web problems
+
+ 7
+ 5
+
+
+ ');
+
+ $this->simpleXML_named_NS = simplexml_load_string('
+
+
+ PHP: Behind the Parser
+
+
+ Ms. Coder
+ Onlivia Actora
+
+
+ Mr. Coder
+ El ActÓr
+
+
+
+ So, this language. It\'s like, a programming language.
+ Or is it a scripting language? All is revealed in this
+ thrilling horror spoof of a documentary.
+
+
+ PHP solves all my web problems
+
+ 7
+ 5
+
+
+ ');
+ }
+}
+
+?>
diff --git a/tests/simplexml_dump_Test.php b/tests/simplexml_dump_Test.php
new file mode 100644
index 0000000..506fea8
--- /dev/null
+++ b/tests/simplexml_dump_Test.php
@@ -0,0 +1,131 @@
+expected = "SimpleXML object (1 item)
+[
+ Element {
+ Name: 'movies'
+ String Content: '
+
+ '
+ Content in Default Namespace
+ Children: 1 - 1 'movie'
+ Attributes: 0
+ }
+]
+";
+
+ $this->expected_default_NS = "SimpleXML object (1 item)
+[
+ Element {
+ Namespace: 'https://github.com/IMSoP/simplexml_debug'
+ (Default Namespace)
+ Name: 'movies'
+ String Content: '
+
+ '
+ Content in Default Namespace
+ Namespace URI: 'https://github.com/IMSoP/simplexml_debug'
+ Children: 1 - 1 'movie'
+ Attributes: 0
+ }
+]
+";
+
+ $this->expected_named_NS = "SimpleXML object (1 item)
+[
+ Element {
+ Name: 'movies'
+ String Content: '
+
+ '
+ Content in Namespace test
+ Namespace URI: 'https://github.com/IMSoP/simplexml_debug'
+ Children: 1 - 1 'movie'
+ Attributes: 0
+ }
+]
+";
+
+ parent::setUp();
+ }
+
+ public function testDump()
+ {
+ ob_start();
+ simplexml_dump($this->simpleXML);
+ $return = ob_get_contents();
+ ob_end_clean();
+
+ $this->assertEquals($this->expected, $return);
+ }
+
+ public function testDumpReturn()
+ {
+ $return = simplexml_dump($this->simpleXML, true);
+ $this->assertEquals($this->expected, $return);
+ }
+
+ public function testDumpWithDefaultNS()
+ {
+ $return = simplexml_dump($this->simpleXML_default_NS, true);
+ $this->assertEquals($this->expected_default_NS, $return);
+ }
+
+ public function testDumpWithNamedNS()
+ {
+ $return = simplexml_dump($this->simpleXML_named_NS, true);
+ $this->assertEquals($this->expected_named_NS, $return);
+ }
+
+ public function testDumpAttributeWithNamedNS()
+ {
+ $xml = '';
+ $sxml = simplexml_load_string($xml);
+
+ $return = simplexml_dump($sxml->children('ns', true)->child->attributes('ns'), true);
+
+ $expected = "SimpleXML object (1 item)
+[
+ Attribute {
+ Namespace: 'ns'
+ Namespace Alias: 'ns'
+ Name: 'foo'
+ Value: 'bar'
+ }
+]
+";
+
+ $this->assertEquals($expected, $return);
+ }
+
+ public function testDumpMultipleAttributes()
+ {
+ $xml = '';
+ $sxml = simplexml_load_string($xml);
+
+ $return = simplexml_dump($sxml->child, true);
+
+ $expected = "SimpleXML object (1 item)
+[
+ Element {
+ Namespace: 'ns'
+ Namespace Alias: 'ns'
+ Name: 'child'
+ String Content: ''
+ Content in Namespace ns
+ Namespace URI: 'ns'
+ Children: 0
+ Attributes: 3 - 'one', 'two', 'three'
+ }
+]
+";
+
+ $this->assertEquals($expected, $return);
+ }
+}
+
+?>
diff --git a/tests/simplexml_tree_Test.php b/tests/simplexml_tree_Test.php
new file mode 100644
index 0000000..786a8ad
--- /dev/null
+++ b/tests/simplexml_tree_Test.php
@@ -0,0 +1,149 @@
+expected = "SimpleXML object (1 item)
+[0] //
+ ->movie[0]
+ ->title[0]
+ ->characters[0]
+ ->character[0]
+ ->name[0]
+ ->actor[0]
+ ->character[1]
+ ->name[0]
+ ->actor[0]
+ ->plot[0]
+ ->great-lines[0]
+ ->line[0]
+ ->rating[0]
+ ['type']
+ ->rating[1]
+ ['type']
+";
+
+ $this->expected_default_NS = "SimpleXML object (1 item)
+[0] //
+ ->movie[0]
+ ->title[0]
+ ->characters[0]
+ ->character[0]
+ ->name[0]
+ ->actor[0]
+ ->character[1]
+ ->name[0]
+ ->actor[0]
+ ->plot[0]
+ ->great-lines[0]
+ ->line[0]
+ ->rating[0]
+ ['type']
+ ->rating[1]
+ ['type']
+";
+
+ $this->expected_named_NS = "SimpleXML object (1 item)
+[0] //
+ ->children('test', true)
+ ->movie[0]
+ ->title[0]
+ ->characters[0]
+ ->character[0]
+ ->name[0]
+ ->actor[0]
+ ->character[1]
+ ->name[0]
+ ->actor[0]
+ ->plot[0]
+ ->great-lines[0]
+ ->line[0]
+ ->rating[0]
+ ->attributes('', true)
+ ->type
+ ->rating[1]
+ ->attributes('', true)
+ ->type
+";
+
+ parent::setUp();
+ }
+
+ public function testTree()
+ {
+ ob_start();
+ simplexml_tree($this->simpleXML);
+ $return = ob_get_contents();
+ ob_end_clean();
+
+ $this->assertEquals($this->expected, $return);
+ }
+
+ public function testTreeIncludeStringContent()
+ {
+ ob_start();
+ simplexml_tree($this->simpleXML, true);
+ $return = ob_get_contents();
+ ob_end_clean();
+
+ $expected = "SimpleXML object (1 item)
+[0] //
+ (string) '' (9 chars)
+ ->movie[0]
+ (string) '' (41 chars)
+ ->title[0]
+ (string) 'PHP: Behind the...' (22 chars)
+ ->characters[0]
+ (string) '' (20 chars)
+ ->character[0]
+ (string) '' (23 chars)
+ ->name[0]
+ (string) 'Ms. Coder' (9 chars)
+ ->actor[0]
+ (string) 'Onlivia Actora' (14 chars)
+ ->character[1]
+ (string) '' (23 chars)
+ ->name[0]
+ (string) 'Mr. Coder' (9 chars)
+ ->actor[0]
+ (string) 'El ActÓr' (9 chars)
+ ->plot[0]
+ (string) 'So, this langua...' (174 chars)
+ ->great-lines[0]
+ (string) '' (13 chars)
+ ->line[0]
+ (string) 'PHP solves all ...' (30 chars)
+ ->rating[0]
+ (string) '7' (1 chars)
+ ['type']
+ (string) 'thumbs' (6 chars)
+ ->rating[1]
+ (string) '5' (1 chars)
+ ['type']
+ (string) 'stars' (5 chars)
+";
+
+ $this->assertEquals($expected, $return);
+ }
+
+ public function testTreeReturn()
+ {
+ $return = simplexml_tree($this->simpleXML, false, true);
+ $this->assertEquals($this->expected, $return);
+ }
+
+ public function testTreeWithDefaultNS()
+ {
+ $return = simplexml_tree($this->simpleXML_default_NS, false, true);
+ $this->assertEquals($this->expected_default_NS, $return);
+ }
+
+ public function testTreeWithNamedNS()
+ {
+ $return = simplexml_tree($this->simpleXML_named_NS, false, true);
+ $this->assertEquals($this->expected_named_NS, $return);
+ }
+}
+
+?>