Page MenuHomePhabricator

XmlFragmentTest.php
No OneTemporary

XmlFragmentTest.php

<?php
namespace Sabre\Xml\Element;
use Sabre\Xml\Reader;
use Sabre\Xml\Writer;
class XmlFragmentTest extends \PHPUnit_Framework_TestCase {
/**
* @dataProvider xmlProvider
*/
function testDeserialize($input, $expected) {
$input = <<<BLA
<?xml version="1.0"?>
<root xmlns="http://sabredav.org/ns">
<fragment>$input</fragment>
</root>
BLA;
$reader = new Reader();
$reader->elementMap = [
'{http://sabredav.org/ns}fragment' => 'Sabre\\Xml\\Element\\XmlFragment',
];
$reader->xml($input);
$output = $reader->parse();
$this->assertEquals([
'name' => '{http://sabredav.org/ns}root',
'value' => [
[
'name' => '{http://sabredav.org/ns}fragment',
'value' => new XmlFragment($expected),
'attributes' => [],
],
],
'attributes' => [],
], $output);
}
/**
* Data provider for serialize and deserialize tests.
*
* Returns three items per test:
*
* 1. Input data for the reader.
* 2. Expected output for XmlFragment deserializer
* 3. Expected output after serializing that value again.
*
* If 3 is not set, use 1 for 3.
*
* @return void
*/
function xmlProvider() {
return [
[
'hello',
'hello',
],
[
'<element>hello</element>',
'<element xmlns="http://sabredav.org/ns">hello</element>'
],
[
'<element foo="bar">hello</element>',
'<element xmlns="http://sabredav.org/ns" foo="bar">hello</element>'
],
[
'<element x1:foo="bar" xmlns:x1="http://example.org/ns">hello</element>',
'<element xmlns:x1="http://example.org/ns" xmlns="http://sabredav.org/ns" x1:foo="bar">hello</element>'
],
[
'<element xmlns="http://example.org/ns">hello</element>',
'<element xmlns="http://example.org/ns">hello</element>',
'<x1:element xmlns:x1="http://example.org/ns">hello</x1:element>',
],
[
'<element xmlns:foo="http://example.org/ns">hello</element>',
'<element xmlns:foo="http://example.org/ns" xmlns="http://sabredav.org/ns">hello</element>',
'<element>hello</element>',
],
[
'<foo:element xmlns:foo="http://example.org/ns">hello</foo:element>',
'<foo:element xmlns:foo="http://example.org/ns">hello</foo:element>',
'<x1:element xmlns:x1="http://example.org/ns">hello</x1:element>',
],
[
'<foo:element xmlns:foo="http://example.org/ns"><child>hello</child></foo:element>',
'<foo:element xmlns:foo="http://example.org/ns" xmlns="http://sabredav.org/ns"><child>hello</child></foo:element>',
'<x1:element xmlns:x1="http://example.org/ns"><child>hello</child></x1:element>',
],
[
'<foo:element xmlns:foo="http://example.org/ns"><child/></foo:element>',
'<foo:element xmlns:foo="http://example.org/ns" xmlns="http://sabredav.org/ns"><child/></foo:element>',
'<x1:element xmlns:x1="http://example.org/ns"><child/></x1:element>',
],
[
'<foo:element xmlns:foo="http://example.org/ns"><child a="b"/></foo:element>',
'<foo:element xmlns:foo="http://example.org/ns" xmlns="http://sabredav.org/ns"><child a="b"/></foo:element>',
'<x1:element xmlns:x1="http://example.org/ns"><child a="b"/></x1:element>',
],
];
}
/**
* @dataProvider xmlProvider
*/
function testSerialize($expectedFallback, $input, $expected = null) {
if (is_null($expected)) {
$expected = $expectedFallback;
}
$writer = new Writer();
$writer->namespaceMap = [
'http://sabredav.org/ns' => null
];
$writer->openMemory();
$writer->startDocument('1.0');
//$writer->setIndent(true);
$writer->write([
'{http://sabredav.org/ns}root' => [
'{http://sabredav.org/ns}fragment' => new XmlFragment($input),
],
]);
$output = $writer->outputMemory();
$expected = <<<XML
<?xml version="1.0"?>
<root xmlns="http://sabredav.org/ns"><fragment>$expected</fragment></root>
XML;
$this->assertEquals($expected, $output);
}
}

File Metadata

Mime Type
text/x-php
Expires
Tue, Dec 24, 7:59 AM (1 d, 4 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
917173
Default Alt Text
XmlFragmentTest.php (4 KB)

Event Timeline