'); // Empty class $ook = $d->getElementsByClassName(''); $this->assertEquals(0, $ook->length); // Whitespace $ook = $d->getElementsByClassName(' '); $this->assertEquals(0, $ook->length); // Document context node $ook = $d->getElementsByClassName('ook'); $this->assertEquals(2, $ook->length); // Document context node with additional whitespace $ook = $d->getElementsByClassName(' ook '); $this->assertEquals(2, $ook->length); // Element context node $div = $ook[0]; $ook = $div->getElementsByClassName('ook'); $this->assertSame('DIV', $div->nodeName); $this->assertEquals(1, $ook->length); $this->assertSame('SPAN', $ook[0]->nodeName); // Multiple classes $ook = $d->getElementsByClassName('ook eek'); $this->assertEquals(2, $ook->length); } public function testMethod_getElementsByTagName() { $d = new Document('
'); // Document context $div = $d->getElementsByTagName('div'); $this->assertEquals(3, $div->length); // Element context $div = $div[1]; $span = $div->getElementsByTagName('span'); $this->assertEquals(1, $span->length); // Wildcard $all = $d->getElementsByTagName('*'); $this->assertEquals(10, $all->length); // XML Document $d = new XMLDocument(); $ook = $d->appendChild($d->createElement('ook')); for ($i = 0; $i < 9; $i++) { $ook->appendChild($d->createElement('ook')); } $ook = $d->getElementsByTagName('ook'); $this->assertEquals(10, $ook->length); } public function testMethod_getElementsByTagNameNS() { $d = new Document('
'); $svg = $d->body->lastChild; $svg->appendChild($d->createElementNS(Node::SVG_NAMESPACE, 'div')); // HTML namespace $div = $d->getElementsByTagNameNS(Node::HTML_NAMESPACE, 'div'); $this->assertEquals(3, $div->length); // Null namespace $div = $d->getElementsByTagNameNS(null, 'div'); $this->assertEquals(0, $div->length); // Empty string namespace $div = $d->getElementsByTagNameNS('', 'div'); $this->assertEquals(0, $div->length); // Wildcard namespace and local name $all = $d->getElementsByTagNameNS('*', '*'); $this->assertEquals(11, $all->length); // Wildcard namespace $div = $d->getElementsByTagNameNS('*', 'div'); $this->assertEquals(4, $div->length); // Wildcard local name $svg = $d->getElementsByTagNameNS(Node::SVG_NAMESPACE, '*'); $this->assertEquals(2, $svg->length); } public function provideMethod_validateAndExtract__errors(): iterable { return [ [ function() { $d = new Document(); $d->createElementNS(Node::HTML_NAMESPACE, 'this will fail'); }, DOMException::INVALID_CHARACTER ], [ function() { $d = new Document(); $d->createAttributeNS(Node::HTML_NAMESPACE, 'xmlns'); }, DOMException::NAMESPACE_ERROR ] ]; } /** * @dataProvider provideMethod_validateAndExtract__errors */ public function testMethod_validateAndExtract__errors(\Closure $closure, int $errorCode): void { $this->expectException(DOMException::class); $this->expectExceptionCode($errorCode); $closure(); } }