1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\Xml; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehlerclass ServiceTest extends \PHPUnit_Framework_TestCase { 6*a1a3b679SAndreas Boehler 7*a1a3b679SAndreas Boehler function testGetReader() { 8*a1a3b679SAndreas Boehler 9*a1a3b679SAndreas Boehler $elems = [ 10*a1a3b679SAndreas Boehler '{http://sabre.io/ns}test' => 'Test!', 11*a1a3b679SAndreas Boehler ]; 12*a1a3b679SAndreas Boehler 13*a1a3b679SAndreas Boehler $util = new Service(); 14*a1a3b679SAndreas Boehler $util->elementMap = $elems; 15*a1a3b679SAndreas Boehler 16*a1a3b679SAndreas Boehler $reader = $util->getReader(); 17*a1a3b679SAndreas Boehler $this->assertInstanceOf('Sabre\\Xml\\Reader', $reader); 18*a1a3b679SAndreas Boehler $this->assertEquals($elems, $reader->elementMap); 19*a1a3b679SAndreas Boehler 20*a1a3b679SAndreas Boehler } 21*a1a3b679SAndreas Boehler 22*a1a3b679SAndreas Boehler function testGetWriter() { 23*a1a3b679SAndreas Boehler 24*a1a3b679SAndreas Boehler $ns = [ 25*a1a3b679SAndreas Boehler 'http://sabre.io/ns' => 's', 26*a1a3b679SAndreas Boehler ]; 27*a1a3b679SAndreas Boehler 28*a1a3b679SAndreas Boehler $util = new Service(); 29*a1a3b679SAndreas Boehler $util->namespaceMap = $ns; 30*a1a3b679SAndreas Boehler 31*a1a3b679SAndreas Boehler $writer = $util->getWriter(); 32*a1a3b679SAndreas Boehler $this->assertInstanceOf('Sabre\\Xml\\Writer', $writer); 33*a1a3b679SAndreas Boehler $this->assertEquals($ns, $writer->namespaceMap); 34*a1a3b679SAndreas Boehler 35*a1a3b679SAndreas Boehler } 36*a1a3b679SAndreas Boehler 37*a1a3b679SAndreas Boehler /** 38*a1a3b679SAndreas Boehler * @depends testGetReader 39*a1a3b679SAndreas Boehler */ 40*a1a3b679SAndreas Boehler function testParse() { 41*a1a3b679SAndreas Boehler 42*a1a3b679SAndreas Boehler $xml = <<<XML 43*a1a3b679SAndreas Boehler<root xmlns="http://sabre.io/ns"> 44*a1a3b679SAndreas Boehler <child>value</child> 45*a1a3b679SAndreas Boehler</root> 46*a1a3b679SAndreas BoehlerXML; 47*a1a3b679SAndreas Boehler $util = new Service(); 48*a1a3b679SAndreas Boehler $result = $util->parse($xml, null, $rootElement); 49*a1a3b679SAndreas Boehler $this->assertEquals('{http://sabre.io/ns}root', $rootElement); 50*a1a3b679SAndreas Boehler 51*a1a3b679SAndreas Boehler $expected = [ 52*a1a3b679SAndreas Boehler [ 53*a1a3b679SAndreas Boehler 'name' => '{http://sabre.io/ns}child', 54*a1a3b679SAndreas Boehler 'value' => 'value', 55*a1a3b679SAndreas Boehler 'attributes' => [], 56*a1a3b679SAndreas Boehler ] 57*a1a3b679SAndreas Boehler ]; 58*a1a3b679SAndreas Boehler 59*a1a3b679SAndreas Boehler $this->assertEquals( 60*a1a3b679SAndreas Boehler $expected, 61*a1a3b679SAndreas Boehler $result 62*a1a3b679SAndreas Boehler ); 63*a1a3b679SAndreas Boehler 64*a1a3b679SAndreas Boehler } 65*a1a3b679SAndreas Boehler 66*a1a3b679SAndreas Boehler /** 67*a1a3b679SAndreas Boehler * @depends testGetReader 68*a1a3b679SAndreas Boehler */ 69*a1a3b679SAndreas Boehler function testParseStream() { 70*a1a3b679SAndreas Boehler 71*a1a3b679SAndreas Boehler $xml = <<<XML 72*a1a3b679SAndreas Boehler<root xmlns="http://sabre.io/ns"> 73*a1a3b679SAndreas Boehler <child>value</child> 74*a1a3b679SAndreas Boehler</root> 75*a1a3b679SAndreas BoehlerXML; 76*a1a3b679SAndreas Boehler $stream = fopen('php://memory', 'r+'); 77*a1a3b679SAndreas Boehler fwrite($stream, $xml); 78*a1a3b679SAndreas Boehler rewind($stream); 79*a1a3b679SAndreas Boehler 80*a1a3b679SAndreas Boehler $util = new Service(); 81*a1a3b679SAndreas Boehler $result = $util->parse($stream, null, $rootElement); 82*a1a3b679SAndreas Boehler $this->assertEquals('{http://sabre.io/ns}root', $rootElement); 83*a1a3b679SAndreas Boehler 84*a1a3b679SAndreas Boehler $expected = [ 85*a1a3b679SAndreas Boehler [ 86*a1a3b679SAndreas Boehler 'name' => '{http://sabre.io/ns}child', 87*a1a3b679SAndreas Boehler 'value' => 'value', 88*a1a3b679SAndreas Boehler 'attributes' => [], 89*a1a3b679SAndreas Boehler ] 90*a1a3b679SAndreas Boehler ]; 91*a1a3b679SAndreas Boehler 92*a1a3b679SAndreas Boehler $this->assertEquals( 93*a1a3b679SAndreas Boehler $expected, 94*a1a3b679SAndreas Boehler $result 95*a1a3b679SAndreas Boehler ); 96*a1a3b679SAndreas Boehler 97*a1a3b679SAndreas Boehler } 98*a1a3b679SAndreas Boehler 99*a1a3b679SAndreas Boehler /** 100*a1a3b679SAndreas Boehler * @depends testGetReader 101*a1a3b679SAndreas Boehler */ 102*a1a3b679SAndreas Boehler function testExpect() { 103*a1a3b679SAndreas Boehler 104*a1a3b679SAndreas Boehler $xml = <<<XML 105*a1a3b679SAndreas Boehler<root xmlns="http://sabre.io/ns"> 106*a1a3b679SAndreas Boehler <child>value</child> 107*a1a3b679SAndreas Boehler</root> 108*a1a3b679SAndreas BoehlerXML; 109*a1a3b679SAndreas Boehler $util = new Service(); 110*a1a3b679SAndreas Boehler $result = $util->expect('{http://sabre.io/ns}root', $xml); 111*a1a3b679SAndreas Boehler 112*a1a3b679SAndreas Boehler $expected = [ 113*a1a3b679SAndreas Boehler [ 114*a1a3b679SAndreas Boehler 'name' => '{http://sabre.io/ns}child', 115*a1a3b679SAndreas Boehler 'value' => 'value', 116*a1a3b679SAndreas Boehler 'attributes' => [], 117*a1a3b679SAndreas Boehler ] 118*a1a3b679SAndreas Boehler ]; 119*a1a3b679SAndreas Boehler 120*a1a3b679SAndreas Boehler $this->assertEquals( 121*a1a3b679SAndreas Boehler $expected, 122*a1a3b679SAndreas Boehler $result 123*a1a3b679SAndreas Boehler ); 124*a1a3b679SAndreas Boehler } 125*a1a3b679SAndreas Boehler 126*a1a3b679SAndreas Boehler /** 127*a1a3b679SAndreas Boehler * @depends testGetReader 128*a1a3b679SAndreas Boehler */ 129*a1a3b679SAndreas Boehler function testExpectStream() { 130*a1a3b679SAndreas Boehler 131*a1a3b679SAndreas Boehler $xml = <<<XML 132*a1a3b679SAndreas Boehler<root xmlns="http://sabre.io/ns"> 133*a1a3b679SAndreas Boehler <child>value</child> 134*a1a3b679SAndreas Boehler</root> 135*a1a3b679SAndreas BoehlerXML; 136*a1a3b679SAndreas Boehler 137*a1a3b679SAndreas Boehler $stream = fopen('php://memory', 'r+'); 138*a1a3b679SAndreas Boehler fwrite($stream, $xml); 139*a1a3b679SAndreas Boehler rewind($stream); 140*a1a3b679SAndreas Boehler 141*a1a3b679SAndreas Boehler $util = new Service(); 142*a1a3b679SAndreas Boehler $result = $util->expect('{http://sabre.io/ns}root', $stream); 143*a1a3b679SAndreas Boehler 144*a1a3b679SAndreas Boehler $expected = [ 145*a1a3b679SAndreas Boehler [ 146*a1a3b679SAndreas Boehler 'name' => '{http://sabre.io/ns}child', 147*a1a3b679SAndreas Boehler 'value' => 'value', 148*a1a3b679SAndreas Boehler 'attributes' => [], 149*a1a3b679SAndreas Boehler ] 150*a1a3b679SAndreas Boehler ]; 151*a1a3b679SAndreas Boehler 152*a1a3b679SAndreas Boehler $this->assertEquals( 153*a1a3b679SAndreas Boehler $expected, 154*a1a3b679SAndreas Boehler $result 155*a1a3b679SAndreas Boehler ); 156*a1a3b679SAndreas Boehler } 157*a1a3b679SAndreas Boehler 158*a1a3b679SAndreas Boehler /** 159*a1a3b679SAndreas Boehler * @depends testGetReader 160*a1a3b679SAndreas Boehler * @expectedException \Sabre\Xml\ParseException 161*a1a3b679SAndreas Boehler */ 162*a1a3b679SAndreas Boehler function testExpectWrong() { 163*a1a3b679SAndreas Boehler 164*a1a3b679SAndreas Boehler $xml = <<<XML 165*a1a3b679SAndreas Boehler<root xmlns="http://sabre.io/ns"> 166*a1a3b679SAndreas Boehler <child>value</child> 167*a1a3b679SAndreas Boehler</root> 168*a1a3b679SAndreas BoehlerXML; 169*a1a3b679SAndreas Boehler $util = new Service(); 170*a1a3b679SAndreas Boehler $util->expect('{http://sabre.io/ns}error', $xml); 171*a1a3b679SAndreas Boehler 172*a1a3b679SAndreas Boehler } 173*a1a3b679SAndreas Boehler 174*a1a3b679SAndreas Boehler /** 175*a1a3b679SAndreas Boehler * @depends testGetWriter 176*a1a3b679SAndreas Boehler */ 177*a1a3b679SAndreas Boehler function testWrite() { 178*a1a3b679SAndreas Boehler 179*a1a3b679SAndreas Boehler $util = new Service(); 180*a1a3b679SAndreas Boehler $util->namespaceMap = [ 181*a1a3b679SAndreas Boehler 'http://sabre.io/ns' => 's', 182*a1a3b679SAndreas Boehler ]; 183*a1a3b679SAndreas Boehler $result = $util->write('{http://sabre.io/ns}root', [ 184*a1a3b679SAndreas Boehler '{http://sabre.io/ns}child' => 'value', 185*a1a3b679SAndreas Boehler ]); 186*a1a3b679SAndreas Boehler 187*a1a3b679SAndreas Boehler $expected = <<<XML 188*a1a3b679SAndreas Boehler<?xml version="1.0"?> 189*a1a3b679SAndreas Boehler<s:root xmlns:s="http://sabre.io/ns"> 190*a1a3b679SAndreas Boehler <s:child>value</s:child> 191*a1a3b679SAndreas Boehler</s:root> 192*a1a3b679SAndreas Boehler 193*a1a3b679SAndreas BoehlerXML; 194*a1a3b679SAndreas Boehler $this->assertEquals( 195*a1a3b679SAndreas Boehler $expected, 196*a1a3b679SAndreas Boehler $result 197*a1a3b679SAndreas Boehler ); 198*a1a3b679SAndreas Boehler 199*a1a3b679SAndreas Boehler } 200*a1a3b679SAndreas Boehler 201*a1a3b679SAndreas Boehler function testParseClarkNotation() { 202*a1a3b679SAndreas Boehler 203*a1a3b679SAndreas Boehler $this->assertEquals([ 204*a1a3b679SAndreas Boehler 'http://sabredav.org/ns', 205*a1a3b679SAndreas Boehler 'elem', 206*a1a3b679SAndreas Boehler ], Service::parseClarkNotation('{http://sabredav.org/ns}elem')); 207*a1a3b679SAndreas Boehler 208*a1a3b679SAndreas Boehler } 209*a1a3b679SAndreas Boehler 210*a1a3b679SAndreas Boehler /** 211*a1a3b679SAndreas Boehler * @expectedException \InvalidArgumentException 212*a1a3b679SAndreas Boehler */ 213*a1a3b679SAndreas Boehler function testParseClarkNotationFail() { 214*a1a3b679SAndreas Boehler 215*a1a3b679SAndreas Boehler Service::parseClarkNotation('http://sabredav.org/ns}elem'); 216*a1a3b679SAndreas Boehler 217*a1a3b679SAndreas Boehler } 218*a1a3b679SAndreas Boehler 219*a1a3b679SAndreas Boehler} 220