1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\Xml\Element; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\Xml\Reader; 6*a1a3b679SAndreas Boehleruse Sabre\Xml\Writer; 7*a1a3b679SAndreas Boehler 8*a1a3b679SAndreas Boehlerclass ElementsTest extends \PHPUnit_Framework_TestCase { 9*a1a3b679SAndreas Boehler 10*a1a3b679SAndreas Boehler function testDeserialize() { 11*a1a3b679SAndreas Boehler 12*a1a3b679SAndreas Boehler $input = <<<BLA 13*a1a3b679SAndreas Boehler<?xml version="1.0"?> 14*a1a3b679SAndreas Boehler<root xmlns="http://sabredav.org/ns"> 15*a1a3b679SAndreas Boehler <listThingy> 16*a1a3b679SAndreas Boehler <elem1 /> 17*a1a3b679SAndreas Boehler <elem2 /> 18*a1a3b679SAndreas Boehler <elem3 /> 19*a1a3b679SAndreas Boehler <elem4 attr="val" /> 20*a1a3b679SAndreas Boehler <elem5>content</elem5> 21*a1a3b679SAndreas Boehler <elem6><subnode /></elem6> 22*a1a3b679SAndreas Boehler </listThingy> 23*a1a3b679SAndreas Boehler <listThingy /> 24*a1a3b679SAndreas Boehler <otherThing> 25*a1a3b679SAndreas Boehler <elem1 /> 26*a1a3b679SAndreas Boehler <elem2 /> 27*a1a3b679SAndreas Boehler <elem3 /> 28*a1a3b679SAndreas Boehler </otherThing> 29*a1a3b679SAndreas Boehler</root> 30*a1a3b679SAndreas BoehlerBLA; 31*a1a3b679SAndreas Boehler 32*a1a3b679SAndreas Boehler $reader = new Reader(); 33*a1a3b679SAndreas Boehler $reader->elementMap = [ 34*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}listThingy' => 'Sabre\\Xml\\Element\\Elements', 35*a1a3b679SAndreas Boehler ]; 36*a1a3b679SAndreas Boehler $reader->xml($input); 37*a1a3b679SAndreas Boehler 38*a1a3b679SAndreas Boehler $output = $reader->parse(); 39*a1a3b679SAndreas Boehler 40*a1a3b679SAndreas Boehler $this->assertEquals([ 41*a1a3b679SAndreas Boehler 'name' => '{http://sabredav.org/ns}root', 42*a1a3b679SAndreas Boehler 'value' => [ 43*a1a3b679SAndreas Boehler [ 44*a1a3b679SAndreas Boehler 'name' => '{http://sabredav.org/ns}listThingy', 45*a1a3b679SAndreas Boehler 'value' => [ 46*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem1', 47*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem2', 48*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem3', 49*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem4', 50*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem5', 51*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem6', 52*a1a3b679SAndreas Boehler ], 53*a1a3b679SAndreas Boehler 'attributes' => [], 54*a1a3b679SAndreas Boehler ], 55*a1a3b679SAndreas Boehler [ 56*a1a3b679SAndreas Boehler 'name' => '{http://sabredav.org/ns}listThingy', 57*a1a3b679SAndreas Boehler 'value' => [], 58*a1a3b679SAndreas Boehler 'attributes' => [], 59*a1a3b679SAndreas Boehler ], 60*a1a3b679SAndreas Boehler [ 61*a1a3b679SAndreas Boehler 'name' => '{http://sabredav.org/ns}otherThing', 62*a1a3b679SAndreas Boehler 'value' => [ 63*a1a3b679SAndreas Boehler [ 64*a1a3b679SAndreas Boehler 'name' => '{http://sabredav.org/ns}elem1', 65*a1a3b679SAndreas Boehler 'value' => null, 66*a1a3b679SAndreas Boehler 'attributes' => [], 67*a1a3b679SAndreas Boehler ], 68*a1a3b679SAndreas Boehler [ 69*a1a3b679SAndreas Boehler 'name' => '{http://sabredav.org/ns}elem2', 70*a1a3b679SAndreas Boehler 'value' => null, 71*a1a3b679SAndreas Boehler 'attributes' => [], 72*a1a3b679SAndreas Boehler ], 73*a1a3b679SAndreas Boehler [ 74*a1a3b679SAndreas Boehler 'name' => '{http://sabredav.org/ns}elem3', 75*a1a3b679SAndreas Boehler 'value' => null, 76*a1a3b679SAndreas Boehler 'attributes' => [], 77*a1a3b679SAndreas Boehler ], 78*a1a3b679SAndreas Boehler ], 79*a1a3b679SAndreas Boehler 'attributes' => [], 80*a1a3b679SAndreas Boehler ], 81*a1a3b679SAndreas Boehler ], 82*a1a3b679SAndreas Boehler 'attributes' => [], 83*a1a3b679SAndreas Boehler ], $output); 84*a1a3b679SAndreas Boehler 85*a1a3b679SAndreas Boehler } 86*a1a3b679SAndreas Boehler 87*a1a3b679SAndreas Boehler function testSerialize() { 88*a1a3b679SAndreas Boehler 89*a1a3b679SAndreas Boehler $value = [ 90*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem1', 91*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem2', 92*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem3', 93*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem4', 94*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem5', 95*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}elem6', 96*a1a3b679SAndreas Boehler ]; 97*a1a3b679SAndreas Boehler 98*a1a3b679SAndreas Boehler $writer = new Writer(); 99*a1a3b679SAndreas Boehler $writer->namespaceMap = [ 100*a1a3b679SAndreas Boehler 'http://sabredav.org/ns' => null 101*a1a3b679SAndreas Boehler ]; 102*a1a3b679SAndreas Boehler $writer->openMemory(); 103*a1a3b679SAndreas Boehler $writer->startDocument('1.0'); 104*a1a3b679SAndreas Boehler $writer->setIndent(true); 105*a1a3b679SAndreas Boehler $writer->write([ 106*a1a3b679SAndreas Boehler '{http://sabredav.org/ns}root' => new Elements($value), 107*a1a3b679SAndreas Boehler ]); 108*a1a3b679SAndreas Boehler 109*a1a3b679SAndreas Boehler $output = $writer->outputMemory(); 110*a1a3b679SAndreas Boehler 111*a1a3b679SAndreas Boehler $expected = <<<XML 112*a1a3b679SAndreas Boehler<?xml version="1.0"?> 113*a1a3b679SAndreas Boehler<root xmlns="http://sabredav.org/ns"> 114*a1a3b679SAndreas Boehler <elem1/> 115*a1a3b679SAndreas Boehler <elem2/> 116*a1a3b679SAndreas Boehler <elem3/> 117*a1a3b679SAndreas Boehler <elem4/> 118*a1a3b679SAndreas Boehler <elem5/> 119*a1a3b679SAndreas Boehler <elem6/> 120*a1a3b679SAndreas Boehler</root> 121*a1a3b679SAndreas Boehler 122*a1a3b679SAndreas BoehlerXML; 123*a1a3b679SAndreas Boehler 124*a1a3b679SAndreas Boehler $this->assertEquals($expected, $output); 125*a1a3b679SAndreas Boehler 126*a1a3b679SAndreas Boehler 127*a1a3b679SAndreas Boehler } 128*a1a3b679SAndreas Boehler 129*a1a3b679SAndreas Boehler} 130