Rearrange tests to be a directory of samples, all tested the same way

This commit is contained in:
Rowan Collins 2017-11-09 20:02:34 +00:00
parent 0fb1c9b166
commit 60afe7f7b9
13 changed files with 230 additions and 264 deletions

View file

@ -13,7 +13,10 @@
"role": "Contributor" "role": "Contributor"
}], }],
"autoload": { "autoload": {
"classmap": ["src/"] "files": [
"src/simplexml_dump.php",
"src/simplexml_tree.php"
]
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^4.8" "phpunit/phpunit": "^4.8"

View file

@ -1,7 +1,7 @@
<phpunit <phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.1/phpunit.xsd" xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.1/phpunit.xsd"
bootstrap="tests/bootstrap.php" bootstrap="vendor/autoload.php"
backupGlobals="true" backupGlobals="true"
verbose="true" verbose="true"
colors="true" colors="true"

12
tests/dump-output/basic Normal file
View file

@ -0,0 +1,12 @@
SimpleXML object (1 item)
[
Element {
Name: 'movies'
String Content: '
'
Content in Default Namespace
Children: 1 - 1 'movie'
Attributes: 0
}
]

View file

@ -0,0 +1,15 @@
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
}
]

View file

@ -0,0 +1,13 @@
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
}
]

View file

@ -0,0 +1,26 @@
<?xml version="1.0" ?>
<movies xmlns="https://github.com/IMSoP/simplexml_debug">
<movie>
<title>PHP: Behind the Parser</title>
<characters>
<character>
<name>Ms. Coder</name>
<actor>Onlivia Actora</actor>
</character>
<character>
<name>Mr. Coder</name>
<actor>El Act&#211;r</actor>
</character>
</characters>
<plot>
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.
</plot>
<great-lines>
<line>PHP solves all my web problems</line>
</great-lines>
<rating type="thumbs">7</rating>
<rating type="stars">5</rating>
</movie>
</movies>

26
tests/input/basic-ns.xml Normal file
View file

@ -0,0 +1,26 @@
<?xml version="1.0" ?>
<movies xmlns:test="https://github.com/IMSoP/simplexml_debug">
<test:movie>
<test:title>PHP: Behind the Parser</test:title>
<test:characters>
<test:character>
<test:name>Ms. Coder</test:name>
<test:actor>Onlivia Actora</test:actor>
</test:character>
<test:character>
<test:name>Mr. Coder</test:name>
<test:actor>El Act&#211;r</test:actor>
</test:character>
</test:characters>
<test:plot>
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.
</test:plot>
<test:great-lines>
<test:line>PHP solves all my web problems</test:line>
</test:great-lines>
<test:rating type="thumbs">7</test:rating>
<test:rating type="stars">5</test:rating>
</test:movie>
</movies>

26
tests/input/basic.xml Normal file
View file

@ -0,0 +1,26 @@
<?xml version="1.0" ?>
<movies>
<movie>
<title>PHP: Behind the Parser</title>
<characters>
<character>
<name>Ms. Coder</name>
<actor>Onlivia Actora</actor>
</character>
<character>
<name>Mr. Coder</name>
<actor>El Act&#211;r</actor>
</character>
</characters>
<plot>
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.
</plot>
<great-lines>
<line>PHP solves all my web problems</line>
</great-lines>
<rating type="thumbs">7</rating>
<rating type="stars">5</rating>
</movie>
</movies>

View file

@ -1,131 +1,34 @@
<?php <?php
class simplexml_dump_Test extends simplexml_dump_bootstrap class simplexml_dump_test extends PHPUnit_Framework_TestCase
{ {
public function setUp() public function loadExamples()
{ {
$this->expected = "SimpleXML object (1 item) $test_cases = array();
[
Element {
Name: 'movies'
String Content: '
'
Content in Default Namespace
Children: 1 - 1 'movie'
Attributes: 0
}
]
";
$this->expected_default_NS = "SimpleXML object (1 item) foreach ( new DirectoryIterator(__DIR__ . '/dump-output') as $fileInfo )
[ {
Element { if($fileInfo->isDot()) {
Namespace: 'https://github.com/IMSoP/simplexml_debug' continue;
(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) $filename = $fileInfo->getFilename();
[
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(); $test_cases[$filename] = array(
} file_get_contents(__DIR__ . '/input/' . $filename . '.xml'),
file_get_contents(__DIR__ . '/dump-output/' . $filename)
);
}
public function testDump() return $test_cases;
{ }
ob_start();
simplexml_dump($this->simpleXML);
$return = ob_get_contents();
ob_end_clean();
$this->assertEquals($this->expected, $return); /**
} * @dataProvider loadExamples
*/
public function testDumpReturn() public function testDumpReturn($xml, $expected_output)
{ {
$return = simplexml_dump($this->simpleXML, true); $return = simplexml_dump(simplexml_load_string($xml), true);
$this->assertEquals($this->expected, $return); $this->assertSame($expected_output, $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 = '<parent xmlns:ns="ns"><ns:child ns:foo="bar" /></parent>';
$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 = '<parent xmlns:ns="ns"><child ns:one="1" ns:two="2" ns:three="3" /></parent>';
$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);
}
} }
?>

View file

@ -1,149 +1,34 @@
<?php <?php
class simplexml_tree_Test extends simplexml_dump_bootstrap class simplexml_tree_test extends PHPUnit_Framework_TestCase
{ {
public function setUp() public function loadExamples()
{ {
$this->expected = "SimpleXML object (1 item) $test_cases = array();
[0] // <movies>
->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) foreach ( new DirectoryIterator(__DIR__ . '/dump-output') as $fileInfo )
[0] // <movies> {
->movie[0] if($fileInfo->isDot()) {
->title[0] continue;
->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) $filename = $fileInfo->getFilename();
[0] // <movies>
->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(); $test_cases[$filename] = array(
} file_get_contents(__DIR__ . '/input/' . $filename . '.xml'),
file_get_contents(__DIR__ . '/tree-output/' . $filename)
);
}
public function testTree() return $test_cases;
{ }
ob_start();
simplexml_tree($this->simpleXML);
$return = ob_get_contents();
ob_end_clean();
$this->assertEquals($this->expected, $return); /**
} * @dataProvider loadExamples
*/
public function testTreeIncludeStringContent() public function testTreeReturn($xml, $expected_output)
{ {
ob_start(); $return = simplexml_tree(simplexml_load_string($xml), false, true);
simplexml_tree($this->simpleXML, true); $this->assertSame($expected_output, $return);
$return = ob_get_contents(); }
ob_end_clean();
$expected = "SimpleXML object (1 item)
[0] // <movies>
(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);
}
} }
?>

18
tests/tree-output/basic Normal file
View file

@ -0,0 +1,18 @@
SimpleXML object (1 item)
[0] // <movies>
->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']

View file

@ -0,0 +1,18 @@
SimpleXML object (1 item)
[0] // <movies>
->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']

View file

@ -0,0 +1,21 @@
SimpleXML object (1 item)
[0] // <movies>
->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