public function testMarshalling()
{
$discoHints = new DiscoHints();
$discoHints->IPHint = array("192.168.6.0/24", "fd00:0123:aa:1001::/64");
$discoHints->DomainHint = array("example.org", "student.example.org");
$discoHints->GeolocationHint = array("geo:47.37328,8.531126", "geo:19.34343,12.342514");
$document = DOMDocumentFactory::fromString('<root />');
$xml = $discoHints->toXML($document->firstChild);
$discoElements = Utils::xpQuery($xml, '/root/*[local-name()=\'DiscoHints\' and namespace-uri()=\'urn:oasis:names:tc:SAML:metadata:ui\']');
$this->assertCount(1, $discoElements);
$discoElement = $discoElements[0];
$ipHintElements = Utils::xpQuery($discoElement, './*[local-name()=\'IPHint\' and namespace-uri()=\'urn:oasis:names:tc:SAML:metadata:ui\']');
$this->assertCount(2, $ipHintElements);
$this->assertEquals("192.168.6.0/24", $ipHintElements[0]->textContent);
$this->assertEquals("fd00:0123:aa:1001::/64", $ipHintElements[1]->textContent);
$domainHintElements = Utils::xpQuery($discoElement, './*[local-name()=\'DomainHint\' and namespace-uri()=\'urn:oasis:names:tc:SAML:metadata:ui\']');
$this->assertCount(2, $domainHintElements);
$this->assertEquals("example.org", $domainHintElements[0]->textContent);
$this->assertEquals("student.example.org", $domainHintElements[1]->textContent);
$geoHintElements = Utils::xpQuery($discoElement, './*[local-name()=\'GeolocationHint\' and namespace-uri()=\'urn:oasis:names:tc:SAML:metadata:ui\']');
$this->assertCount(2, $geoHintElements);
$this->assertEquals("geo:47.37328,8.531126", $geoHintElements[0]->textContent);
$this->assertEquals("geo:19.34343,12.342514", $geoHintElements[1]->textContent);
}