1<?php 2 3declare(strict_types=1); 4 5namespace Sabre\Xml\Deserializer; 6 7use Sabre\Xml\Service; 8 9class EnumTest extends \PHPUnit\Framework\TestCase 10{ 11 public function testDeserialize() 12 { 13 $service = new Service(); 14 $service->elementMap['{urn:test}root'] = 'Sabre\Xml\Deserializer\enum'; 15 16 $xml = <<<XML 17<?xml version="1.0"?> 18<root xmlns="urn:test"> 19 <foo1/> 20 <foo2/> 21</root> 22XML; 23 24 $result = $service->parse($xml); 25 26 $expected = [ 27 '{urn:test}foo1', 28 '{urn:test}foo2', 29 ]; 30 31 $this->assertEquals($expected, $result); 32 } 33 34 public function testDeserializeDefaultNamespace() 35 { 36 $service = new Service(); 37 $service->elementMap['{urn:test}root'] = function ($reader) { 38 return enum($reader, 'urn:test'); 39 }; 40 41 $xml = <<<XML 42<?xml version="1.0"?> 43<root xmlns="urn:test"> 44 <foo1/> 45 <foo2/> 46</root> 47XML; 48 49 $result = $service->parse($xml); 50 51 $expected = [ 52 'foo1', 53 'foo2', 54 ]; 55 56 $this->assertEquals($expected, $result); 57 } 58 59 public function testEmptyEnum() 60 { 61 $service = new Service(); 62 $service->elementMap['{urn:test}enum'] = 'Sabre\Xml\Deserializer\enum'; 63 64 $xml = <<<XML 65<?xml version="1.0"?> 66<root xmlns="urn:test"> 67<inner> 68 <enum></enum> 69</inner> 70</root> 71XML; 72 73 $result = $service->parse($xml); 74 75 $this->assertEquals([[ 76 'name' => '{urn:test}inner', 77 'value' => [[ 78 'name' => '{urn:test}enum', 79 'value' => [], 80 'attributes' => [], 81 ]], 82 'attributes' => [], 83 ]], $result); 84 } 85} 86