-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
44 changed files
with
1,531 additions
and
1,203 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -127,7 +127,7 @@ class XML_Util | |
*/ | ||
public static function apiVersion() | ||
{ | ||
return '1.1'; | ||
return '1.4'; | ||
} | ||
|
||
/** | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<?php | ||
|
||
abstract class AbstractUnitTests extends \PHPUnit_Framework_TestCase | ||
{ | ||
public function setUp() | ||
{ | ||
// ensure the class is defined, and thus its constants are declared | ||
new XML_Util(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
<?php | ||
|
||
class ApiVersionTests extends AbstractUnitTests | ||
{ | ||
/** | ||
* @covers XML_Util::apiVersion() | ||
*/ | ||
public function testApiVersion() | ||
{ | ||
$this->assertEquals('1.4', XML_Util::apiVersion()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,217 @@ | ||
<?php | ||
|
||
class AttributesToStringTests extends AbstractUnitTests | ||
{ | ||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringBasicUsage() | ||
{ | ||
$original = array('foo' => 'bar','boo' => 'baz',); | ||
$expected = " boo=\"baz\" foo=\"bar\""; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithExplicitSortTrue() | ||
{ | ||
$original = array('foo' => 'bar','boo' => 'baz',); | ||
$expected = " boo=\"baz\" foo=\"bar\""; | ||
$sort = true; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $sort)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithExplicitSortFalse() | ||
{ | ||
$original = array('foo' => 'bar','boo' => 'baz',); | ||
$expected = " foo=\"bar\" boo=\"baz\""; | ||
$sort = false; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $sort)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithMultilineFalse() | ||
{ | ||
$original = array('foo' => 'bar','boo' => 'baz',); | ||
$expected = " boo=\"baz\" foo=\"bar\""; | ||
$sort = true; | ||
$multiline = false; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $sort, $multiline)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithMultilineTrue() | ||
{ | ||
$original = array('foo' => 'bar','boo' => 'baz',); | ||
$expected = | ||
<<< EOF | ||
boo="baz" | ||
foo="bar" | ||
EOF; | ||
$sort = true; | ||
$multiline = true; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $sort, $multiline)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithExplicitIndent() | ||
{ | ||
$original = array('foo' => 'bar','boo' => 'baz',); | ||
$expected = " boo=\"baz\"\n foo=\"bar\""; | ||
$sort = true; | ||
$multiline = true; | ||
$indent = ' '; // 8 spaces | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $sort, $multiline, $indent)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithExplicitLinebreak() | ||
{ | ||
$original = array('foo' => 'bar','boo' => 'baz',); | ||
$expected = " boo=\"baz\"\n^foo=\"bar\""; | ||
$sort = true; | ||
$multiline = true; | ||
$linebreak = '^'; // some dummy character | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $sort, $multiline, $linebreak)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithOptionsThatIncludesSort() | ||
{ | ||
$original = array('foo' => 'bar','boo' => 'baz',); | ||
$options = array( | ||
'multiline' => true, | ||
'indent' => '----', | ||
'linebreak' => "^", | ||
'entities' => XML_UTIL_ENTITIES_XML, | ||
'sort' => true, | ||
); | ||
|
||
$expected = " boo=\"baz\"\n----foo=\"bar\""; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $options)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithOptionsThatExcludesSort() | ||
{ | ||
$original = array('foo' => 'bar','boo' => 'baz',); | ||
$options = array( | ||
'multiline' => true, | ||
'indent' => '----', | ||
'linebreak' => "^", | ||
'entities' => XML_UTIL_ENTITIES_XML, | ||
); | ||
|
||
$expected = " boo=\"baz\"\n----foo=\"bar\""; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $options)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithEntitiesNone() | ||
{ | ||
$original = array("foo" => "b@&r", "boo" => "b><z"); | ||
$expected = " boo=\"b><z\" foo=\"b@&r\""; | ||
$sort = true; | ||
$multiline = false; | ||
$linebreak = ' '; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $sort, $multiline, $linebreak, PHP_EOL, XML_UTIL_ENTITIES_NONE)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithEntitiesXml() | ||
{ | ||
$original = array("foo" => "b@&r", "boo" => "b><z"); | ||
$expected = " boo=\"b><z\" foo=\"b@&r\""; | ||
$sort = true; | ||
$multiline = false; | ||
$linebreak = ' '; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $sort, $multiline, $linebreak, PHP_EOL, XML_UTIL_ENTITIES_XML)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithEntitiesXmlRequired() | ||
{ | ||
$original = array("foo" => "b@&r", "boo" => "b><z"); | ||
$expected = " boo=\"b><z\" foo=\"b@&r\""; | ||
$sort = true; | ||
$multiline = false; | ||
$linebreak = ' '; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $sort, $multiline, $linebreak, PHP_EOL, XML_UTIL_ENTITIES_XML_REQUIRED)); | ||
} | ||
|
||
/** | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithEntitiesHtml() | ||
{ | ||
$original = array("foo" => "b@&r", "boo" => "b><z"); | ||
$expected = " boo=\"b><z\" foo=\"b@&r\""; | ||
$sort = true; | ||
$multiline = false; | ||
$linebreak = ' '; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $sort, $multiline, $linebreak, PHP_EOL, XML_UTIL_ENTITIES_HTML)); | ||
} | ||
|
||
/** | ||
* Tag attributes should not be treated as CDATA, | ||
* so the operation will instead quietly use XML_UTIL_ENTITIES_XML. | ||
* | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithCDataSectionForSingleAttribute() | ||
{ | ||
$original = array('foo' => 'bar'); // need exactly one attribute here | ||
$options = array( | ||
'sort' => true, // doesn't matter for this testcase | ||
'multiline' => false, // doesn't matter for this testcase | ||
'indent' => null, // doesn't matter for this testcase | ||
'linebreak' => null, // doesn't matter for this testcase | ||
'entities' => XML_UTIL_CDATA_SECTION, // DOES matter for this testcase | ||
); | ||
$expected = " foo=\"bar\""; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $options)); | ||
} | ||
|
||
/** | ||
* Tag attributes should not be treated as CDATA, | ||
* so the operation will instead quietly use XML_UTIL_ENTITIES_XML. | ||
* | ||
* @covers XML_Util::attributesToString() | ||
*/ | ||
public function testAttributesToStringWithCDataSectionForMultipleAttributesAndMultilineFalse() | ||
{ | ||
$original = array('foo' => 'bar', 'boo' => 'baz'); // need more than one attribute here | ||
$options = array( | ||
'sort' => true, // doesn't matter for this testcase | ||
'multiline' => false, // DOES matter for this testcase, must be false | ||
'indent' => null, // doesn't matter for this testcase | ||
'linebreak' => null, // doesn't matter for this testcase | ||
'entities' => XML_UTIL_CDATA_SECTION, // DOES matter for this testcase | ||
); | ||
$expected = " boo=\"baz\" foo=\"bar\""; | ||
$this->assertEquals($expected, XML_Util::attributesToString($original, $options)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
<?php | ||
|
||
/** | ||
* Bug #18343 "Entities in file names decoded during packaging" | ||
* | ||
* No matter what flags are given to createTagFromArray(), | ||
* an attribute must *always* be at least ENTITIES_XML encoded. | ||
* | ||
* @link https://pear.php.net/bugs/bug.php?id=18343 | ||
*/ | ||
class Bug18343Tests extends AbstractUnitTests | ||
{ | ||
private $tagArray = array( | ||
"qname" => "install", | ||
"attributes" => array( | ||
"as" => "Horde/Feed/fixtures/lexicon/http-p.moreover.com-cgi-local-page%2Fo=rss&s=Newsweek", | ||
"name" => "test/Horde/Feed/fixtures/lexicon/http-p.moreover.com-cgi-local-page%2Fo=rss&s=Newsweek", | ||
) | ||
); | ||
|
||
public function getFlagsToTest() | ||
{ | ||
new XML_Util(); // for constants to be declared | ||
|
||
return array( | ||
array('no flag', null), | ||
array('false', false), | ||
array('ENTITIES_NONE', XML_UTIL_ENTITIES_NONE), | ||
array('ENTITIES_XML', XML_UTIL_ENTITIES_XML), | ||
array('ENTITIES_XML_REQUIRED', XML_UTIL_ENTITIES_XML_REQUIRED), | ||
array('ENTITIES_HTML', XML_UTIL_ENTITIES_HTML), | ||
array('REPLACE_ENTITIES', XML_UTIL_REPLACE_ENTITIES), | ||
); | ||
} | ||
|
||
/** | ||
* @dataProvider getFlagsToTest() | ||
*/ | ||
public function testCreateTagFromArrayForBug18343($key, $flag) | ||
{ | ||
// all flags for the candidate input should return the same result | ||
$expected = | ||
<<< EOF | ||
<install as="Horde/Feed/fixtures/lexicon/http-p.moreover.com-cgi-local-page%2Fo=rss&s=Newsweek" name="test/Horde/Feed/fixtures/lexicon/http-p.moreover.com-cgi-local-page%2Fo=rss&s=Newsweek" /> | ||
EOF; | ||
$this->assertEquals($expected, XML_Util::createTagFromArray($this->tagArray, $flag), "Failed bugcheck for $key."); | ||
} | ||
} |
Oops, something went wrong.