Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1820232
KeyValueTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
5 KB
Subscribers
None
KeyValueTest.php
View Options
<?php
namespace
Sabre\Xml\Element
;
use
Sabre\Xml\Reader
;
use
Sabre\Xml\Writer
;
class
KeyValueTest
extends
\PHPUnit_Framework_TestCase
{
function
testDeserialize
()
{
$input
=
<<<BLA
<?xml version="1.0"?>
<root xmlns="http://sabredav.org/ns">
<struct>
<elem1 />
<elem2>hi</elem2>
<elem3>
<elem4>foo</elem4>
<elem5>foo & bar</elem5>
</elem3>
<elem6>Hi<!-- ignore me -->there</elem6>
</struct>
<struct />
<otherThing>
<elem1 />
</otherThing>
</root>
BLA;
$reader
=
new
Reader
();
$reader
->
elementMap
=
[
'{http://sabredav.org/ns}struct'
=>
'Sabre
\\
Xml
\\
Element
\\
KeyValue'
,
];
$reader
->
xml
(
$input
);
$output
=
$reader
->
parse
();
$this
->
assertEquals
([
'name'
=>
'{http://sabredav.org/ns}root'
,
'value'
=>
[
[
'name'
=>
'{http://sabredav.org/ns}struct'
,
'value'
=>
[
'{http://sabredav.org/ns}elem1'
=>
null
,
'{http://sabredav.org/ns}elem2'
=>
'hi'
,
'{http://sabredav.org/ns}elem3'
=>
[
[
'name'
=>
'{http://sabredav.org/ns}elem4'
,
'value'
=>
'foo'
,
'attributes'
=>
[],
],
[
'name'
=>
'{http://sabredav.org/ns}elem5'
,
'value'
=>
'foo & bar'
,
'attributes'
=>
[],
],
],
'{http://sabredav.org/ns}elem6'
=>
'Hithere'
,
],
'attributes'
=>
[],
],
[
'name'
=>
'{http://sabredav.org/ns}struct'
,
'value'
=>
[],
'attributes'
=>
[],
],
[
'name'
=>
'{http://sabredav.org/ns}otherThing'
,
'value'
=>
[
[
'name'
=>
'{http://sabredav.org/ns}elem1'
,
'value'
=>
null
,
'attributes'
=>
[],
],
],
'attributes'
=>
[],
],
],
'attributes'
=>
[],
],
$output
);
}
/**
* This test was added to find out why an element gets eaten by the
* SabreDAV MKCOL parser.
*/
function
testElementEater
()
{
$input
=
<<<BLA
<?xml version="1.0"?>
<mkcol xmlns="DAV:">
<set>
<prop>
<resourcetype><collection /></resourcetype>
<displayname>bla</displayname>
</prop>
</set>
</mkcol>
BLA;
$reader
=
new
Reader
();
$reader
->
elementMap
=
[
'{DAV:}set'
=>
'Sabre
\\
Xml
\\
Element
\\
KeyValue'
,
'{DAV:}prop'
=>
'Sabre
\\
Xml
\\
Element
\\
KeyValue'
,
'{DAV:}resourcetype'
=>
'Sabre
\\
Xml
\\
Element
\\
Elements'
,
];
$reader
->
xml
(
$input
);
$expected
=
[
'name'
=>
'{DAV:}mkcol'
,
'value'
=>
[
[
'name'
=>
'{DAV:}set'
,
'value'
=>
[
'{DAV:}prop'
=>
[
'{DAV:}resourcetype'
=>
[
'{DAV:}collection'
,
],
'{DAV:}displayname'
=>
'bla'
,
],
],
'attributes'
=>
[],
],
],
'attributes'
=>
[],
];
$this
->
assertEquals
(
$expected
,
$reader
->
parse
());
}
function
testSerialize
()
{
$value
=
[
'{http://sabredav.org/ns}elem1'
=>
null
,
'{http://sabredav.org/ns}elem2'
=>
'textValue'
,
'{http://sabredav.org/ns}elem3'
=>
[
'{http://sabredav.org/ns}elem4'
=>
'text2'
,
'{http://sabredav.org/ns}elem5'
=>
null
,
],
'{http://sabredav.org/ns}elem6'
=>
'text3'
,
];
$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'
=>
new
KeyValue
(
$value
),
]);
$output
=
$writer
->
outputMemory
();
$expected
=
<<<XML
<?xml version="1.0"?>
<root xmlns="http://sabredav.org/ns">
<elem1/>
<elem2>textValue</elem2>
<elem3>
<elem4>text2</elem4>
<elem5/>
</elem3>
<elem6>text3</elem6>
</root>
XML;
$this
->
assertEquals
(
$expected
,
$output
);
}
/**
* I discovered that when there's no whitespace between elements, elements
* can get skipped.
*/
function
testElementSkipProblem
()
{
$input
=
<<<BLA
<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://sabredav.org/ns">
<elem3>val3</elem3><elem4>val4</elem4><elem5>val5</elem5></root>
BLA;
$reader
=
new
Reader
();
$reader
->
elementMap
=
[
'{http://sabredav.org/ns}root'
=>
'Sabre
\\
Xml
\\
Element
\\
KeyValue'
,
];
$reader
->
xml
(
$input
);
$output
=
$reader
->
parse
();
$this
->
assertEquals
([
'name'
=>
'{http://sabredav.org/ns}root'
,
'value'
=>
[
'{http://sabredav.org/ns}elem3'
=>
'val3'
,
'{http://sabredav.org/ns}elem4'
=>
'val4'
,
'{http://sabredav.org/ns}elem5'
=>
'val5'
,
],
'attributes'
=>
[],
],
$output
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Dec 21, 10:59 PM (1 w, 11 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
917238
Default Alt Text
KeyValueTest.php (5 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment