loadXML($xml); $actual = $analyzer->getRequestedProperties($request); foreach ($expected as $key => $value) { if ('unknowns' === $key) { continue; } self::assertArrayHasKey($key, $actual, "Check that key {$key} does exists in list of expected values"); self::assertEquals($value, $actual[$key], "Does the value match expected for key {$key}"); } if (array_key_exists('unknowns', $expected)) { self::assertEquals(count($expected['unknowns']), count($actual['unknowns'])); self::assertEqualsCanonicalizing($expected['unknowns'], $actual['unknowns']); } } public static function provideRequestedProperties(): iterable { yield [ <<<'XML' XML, [ 'resourceType' => false, 'contentType' => false, 'lastModified' => false, 'creationDate' => false, 'contentLength' => false, 'etag' => false, 'supportedLock' => false, 'unknowns' => [ ['xmlns' => 'http://ucb.openoffice.org/dav/props/', 'prop' => 'BaseURI'], ], ], ]; yield [ <<<'XML' XML, [ 'resourceType' => true, 'contentType' => true, 'lastModified' => true, 'creationDate' => true, 'contentLength' => true, 'etag' => true, 'supportedLock' => true, 'unknowns' => [], ], ]; yield [ <<<'XML' XML, [ 'resourceType' => false, 'contentType' => false, 'lastModified' => true, 'creationDate' => false, 'contentLength' => false, 'etag' => false, 'supportedLock' => false, 'unknowns' => [], ], ]; yield [ <<<'XML' XML, [ 'resourceType' => true, 'contentType' => true, 'lastModified' => false, 'creationDate' => false, 'contentLength' => false, 'etag' => false, 'supportedLock' => false, 'unknowns' => [ ['xmlns' => 'http://ucb.openoffice.org/dav/props/', 'prop' => 'IsReadOnly'], ], ], ]; } }