You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1473 lines
74 KiB
1473 lines
74 KiB
<?php
|
|
/**
|
|
* @license MIT
|
|
* Copyright 2017 Dustin Wilson, J. King, et al.
|
|
* See LICENSE and AUTHORS files for details
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
namespace MensBeam\HTML\DOM\TestCase;
|
|
|
|
use MensBeam\HTML\DOM\{
|
|
Document,
|
|
DOMException,
|
|
Element,
|
|
Node,
|
|
Text,
|
|
XMLDocument
|
|
};
|
|
|
|
|
|
/** @covers \MensBeam\HTML\DOM\Element */
|
|
class TestElement extends \PHPUnit\Framework\TestCase {
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::closest
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\NonElementParentNode::getElementById
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_xpath
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
*/
|
|
public function testMethod_closest() {
|
|
$d = new Document(<<<HTML
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<article id="ookeek">
|
|
<div id="ook">Ook!
|
|
<div id="ookeek">Ookeek</div>
|
|
<div id="eek">Eek!
|
|
<div id="ack">Ack</div>
|
|
<div id="eekack">Eekack</div>
|
|
</div>
|
|
</div>
|
|
</article>
|
|
</body>
|
|
</html>
|
|
HTML, 'UTF-8');
|
|
$e = $d->getElementById('ack');
|
|
|
|
$this->assertSame($d->getElementById('eek'), $e->closest('#eek'));
|
|
$this->assertSame($e, $e->closest('div div'));
|
|
$this->assertSame($d->getElementById('ook'), $e->closest('article > div'));
|
|
$this->assertSame($d->getElementById('ookeek'), $e->closest(':not(div)'));
|
|
$this->assertNull($e->closest('svg'));
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::closest
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DOMException::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_closest__errors() {
|
|
$this->expectException(DOMException::class);
|
|
$this->expectExceptionCode(DOMException::SYNTAX_ERROR);
|
|
$d = new Document();
|
|
$documentElement = $d->appendChild($d->createElement('html'));
|
|
$documentElement->closest('fail?');
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_value
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttribute
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
*/
|
|
public function testMethod_getAttribute() {
|
|
$d = new Document('<!DOCTYPE html><html id="ook" poop💩="jeff"></html>', 'UTF-8');
|
|
$documentElement = $d->documentElement;
|
|
|
|
// id attribute
|
|
$this->assertSame('ook', $documentElement->getAttribute('id'));
|
|
// coerced attribute
|
|
$this->assertSame('jeff', $documentElement->getAttribute('poop💩'));
|
|
// nonexistent attribute
|
|
$this->assertNull($documentElement->getAttribute('class'));
|
|
}
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNames
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Collection::__construct
|
|
* @covers \MensBeam\HTML\DOM\Collection::item
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::getElementsByTagName
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::item
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::offsetGet
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
*/
|
|
public function testMethod_getAttributeNames() {
|
|
$d = new Document('<!DOCTYPE html><html><body><div id="ook" class="eek" ack="ack" foo="foo" bar="bar"></div></body></html>');
|
|
$div = $d->getElementsByTagName('div')[0];
|
|
$this->assertSame([ 'id', 'class', 'ack', 'foo', 'bar' ], $div->getAttributeNames());
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNodeNS
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNS
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_value
|
|
* @covers \MensBeam\HTML\DOM\Attr::__set_value
|
|
* @covers \MensBeam\HTML\DOM\Collection::__construct
|
|
* @covers \MensBeam\HTML\DOM\Collection::item
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createAttributeNS
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::getElementsByTagNameNS
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::validateAndExtract
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNodeNS
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNS
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::item
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::offsetGet
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_getAttributeNS() {
|
|
$d = new Document('<!DOCTYPE html><html><head></head><body><svg xmlns="' . Node::SVG_NAMESPACE . '" xmlns:xlink="' . Node::XLINK_NAMESPACE . '" viewBox="0 0 42 42"></svg></body></html>', 'UTF-8');
|
|
$svg = $d->getElementsByTagNameNS(Node::SVG_NAMESPACE, 'svg')[0];
|
|
// Parser per the spec doesn't parse xmlns prefixed attributes except xlink, so let's add one manually instead to test coercion.
|
|
$svg->setAttributeNS(Node::XMLNS_NAMESPACE, 'xmlns:poop💩', 'https://poop💩.poop');
|
|
|
|
// xmlns attribute
|
|
$this->assertSame(Node::SVG_NAMESPACE, $svg->getAttributeNS(Node::XMLNS_NAMESPACE, 'xmlns'));
|
|
// xmlns xlink attribute
|
|
$this->assertSame(Node::XLINK_NAMESPACE, $svg->getAttributeNS(Node::XMLNS_NAMESPACE, 'xlink'));
|
|
// coerced namespaced attribute
|
|
$this->assertSame('https://poop💩.poop', $svg->getAttributeNS(Node::XMLNS_NAMESPACE, 'poop💩'));
|
|
// nonexistent namespaced attribute
|
|
$this->assertNull($svg->getAttributeNS(Node::XMLNS_NAMESPACE, 'ook'));
|
|
// empty string namespace
|
|
$this->assertSame('0 0 42 42', $svg->getAttributeNS('', 'viewBox'));
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::hasAttribute
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Collection::__construct
|
|
* @covers \MensBeam\HTML\DOM\Collection::item
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::getElementsByTagNameNS
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::item
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::offsetGet
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
*/
|
|
public function testMethod_hasAttribute() {
|
|
$d = new Document('<!DOCTYPE html><html id="ook" poop💩="jeff"></html>', 'UTF-8');
|
|
$documentElement = $d->documentElement;
|
|
$svg = $d->getElementsByTagNameNS(Node::SVG_NAMESPACE, 'svg')[0];
|
|
|
|
$this->assertTrue($documentElement->hasAttribute('id'));
|
|
$this->assertTrue($documentElement->hasAttribute('poop💩'));
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::hasAttributeNS
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Attr::__set_value
|
|
* @covers \MensBeam\HTML\DOM\Collection::__construct
|
|
* @covers \MensBeam\HTML\DOM\Collection::item
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createAttributeNS
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::getElementsByTagNameNS
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::validateAndExtract
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNodeNS
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNodeNS
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNS
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::item
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::offsetGet
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_hasAttributeNS() {
|
|
$d = new Document('<!DOCTYPE html><html><head></head><body><svg xmlns="' . Node::SVG_NAMESPACE . '" xmlns:xlink="' . Node::XLINK_NAMESPACE . '" viewBox="0 0 42 42"></svg></body></html>', 'UTF-8');
|
|
$svg = $d->getElementsByTagNameNS(Node::SVG_NAMESPACE, 'svg')[0];
|
|
// Parser per the spec doesn't parse xmlns prefixed attributes except xlink, so let's add one manually instead to test coercion.
|
|
$svg->setAttributeNS(Node::XMLNS_NAMESPACE, 'xmlns:poop💩', 'https://poop💩.poop');
|
|
|
|
// xmlns attribute
|
|
$this->assertTrue($svg->hasAttributeNS(Node::XMLNS_NAMESPACE, 'xmlns'));
|
|
// xmlns xlink attribute
|
|
$this->assertTrue($svg->hasAttributeNS(Node::XMLNS_NAMESPACE, 'xlink'));
|
|
// coerced namespaced attribute
|
|
$this->assertTrue($svg->hasAttributeNS(Node::XMLNS_NAMESPACE, 'poop💩'));
|
|
// nonexistent namespaced attribute
|
|
$this->assertFalse($svg->hasAttributeNS(Node::XMLNS_NAMESPACE, 'ook'));
|
|
// empty string namespace
|
|
$this->assertTrue($svg->hasAttributeNS('', 'viewBox'));
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::hasAttributes
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Collection::__construct
|
|
* @covers \MensBeam\HTML\DOM\Collection::item
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::getElementsByTagNameNS
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::item
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::offsetGet
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
*/
|
|
public function testMethod_hasAttributes() {
|
|
$d = new Document('<!DOCTYPE html><html><body><svg xmlns="' . Node::SVG_NAMESPACE . '" xmlns:xlink="' . Node::XLINK_NAMESPACE . '"></svg></body></html>', 'UTF-8');
|
|
$svg = $d->getElementsByTagNameNS(Node::SVG_NAMESPACE, 'svg')[0];
|
|
$this->assertTrue($svg->hasAttributes());
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::insertAdjacent
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createTextNode
|
|
* @covers \MensBeam\HTML\DOM\DOMException::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::insertAdjacentText
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Text::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_insertAdjacent__errors() {
|
|
$this->expectException(DOMException::class);
|
|
$this->expectExceptionCode(DOMException::SYNTAX_ERROR);
|
|
$d = new Document();
|
|
$d->appendChild($d->createElement('html'));
|
|
$d->documentElement->insertAdjacentText('fail', 'fail');
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::insertAdjacentElement
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Collection::__construct
|
|
* @covers \MensBeam\HTML\DOM\Collection::item
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_body
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createTextNode
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\Document::serialize
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::getElementsByTagName
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::insertAdjacent
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::item
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::offsetGet
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_firstChild
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_nextSibling
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_parentNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__toString
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::insertBefore
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Text::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_xpath
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_insertAdjacentElement() {
|
|
$d = new Document('<!DOCTYPE html><html><body><p>Ook</p></body></html>', 'UTF-8');
|
|
$body = $d->body;
|
|
$p = $d->getElementsByTagName('p')[0];
|
|
|
|
$dd = $d->createElement('div');
|
|
$dd->appendChild($d->createTextNode('beforebegin'));
|
|
$p->insertAdjacentElement('beForebEgin', $dd);
|
|
$this->assertSame('<body><div>beforebegin</div><p>Ook</p></body>', (string)$body);
|
|
|
|
$dd = $d->createElement('div');
|
|
$dd->appendChild($d->createTextNode('afterbegin'));
|
|
$p->insertAdjacentElement('AfterbeGin', $dd);
|
|
$this->assertSame('<body><div>beforebegin</div><p><div>afterbegin</div>Ook</p></body>', (string)$body);
|
|
|
|
$dd = $d->createElement('div');
|
|
$dd->appendChild($d->createTextNode('beforeend'));
|
|
$p->insertAdjacentElement('beforeend', $dd);
|
|
$this->assertSame('<body><div>beforebegin</div><p><div>afterbegin</div>Ook<div>beforeend</div></p></body>', (string)$body);
|
|
|
|
$dd = $d->createElement('div');
|
|
$dd->appendChild($d->createTextNode('afterend'));
|
|
$p->insertAdjacentElement('aFteREND', $dd);
|
|
$this->assertSame('<body><div>beforebegin</div><p><div>afterbegin</div>Ook<div>beforeend</div></p><div>afterend</div></body>', (string)$body);
|
|
|
|
$t = $d->createElement('template');
|
|
$t->content->appendChild($d->createTextNode('beforebegin'));
|
|
$p->insertAdjacentElement('beForebEgin', $t);
|
|
$this->assertSame('<body><div>beforebegin</div><template>beforebegin</template><p><div>afterbegin</div>Ook<div>beforeend</div></p><div>afterend</div></body>', (string)$body);
|
|
|
|
$p = $d->createElement('p');
|
|
$this->assertNull($p->insertAdjacentElement('beforebegin', $dd));
|
|
$this->assertNull($p->insertAdjacentElement('afterend', $dd));
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::insertAdjacentHTML
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Collection::__construct
|
|
* @covers \MensBeam\HTML\DOM\Collection::item
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_body
|
|
* @covers \MensBeam\HTML\DOM\Document::createDocumentFragment
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\Document::serialize
|
|
* @covers \MensBeam\HTML\DOM\DocumentFragment::__construct
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::getElementsByTagName
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_localName
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::item
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::offsetGet
|
|
* @covers \MensBeam\HTML\DOM\HTMLTemplateElement::__construct
|
|
* @covers \MensBeam\HTML\DOM\HTMLTemplateElement::__get_content
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_firstChild
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_lastChild
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_nextSibling
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_parentNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__toString
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChildInner
|
|
* @covers \MensBeam\HTML\DOM\Node::cloneInnerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::insertBefore
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Serializer::getTemplateContent
|
|
* @covers \MensBeam\HTML\DOM\Text::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::setProtectedProperties
|
|
*/
|
|
public function testMethod_insertAdjacentHTML() {
|
|
$d = new Document('<!DOCTYPE html><html><body><p>Ook</p><template>Ook!</template></body></html>', 'UTF-8');
|
|
$body = $d->body;
|
|
$p = $d->getElementsByTagName('p')[0];
|
|
$t = $d->getElementsByTagName('template')[0];
|
|
|
|
$p->insertAdjacentHTML('beForebEgin', '<div>beforebegin</div>');
|
|
$this->assertSame('<body><div>beforebegin</div><p>Ook</p><template>Ook!</template></body>', (string)$body);
|
|
|
|
$p->insertAdjacentHTML('AfterbeGin', '<div>afterbegin</div>');
|
|
$this->assertSame('<body><div>beforebegin</div><p><div>afterbegin</div>Ook</p><template>Ook!</template></body>', (string)$body);
|
|
|
|
$p->insertAdjacentHTML('beforeend', '<div>beforeend</div>');
|
|
$this->assertSame('<body><div>beforebegin</div><p><div>afterbegin</div>Ook<div>beforeend</div></p><template>Ook!</template></body>', (string)$body);
|
|
|
|
$p->insertAdjacentHTML('aFteREND', '<div>afterend</div>');
|
|
$this->assertSame('<body><div>beforebegin</div><p><div>afterbegin</div>Ook<div>beforeend</div></p><div>afterend</div><template>Ook!</template></body>', (string)$body);
|
|
|
|
$t->insertAdjacentHTML('beforebegin', '<div>beforebegin</div>');
|
|
$this->assertSame('<body><div>beforebegin</div><p><div>afterbegin</div>Ook<div>beforeend</div></p><div>afterend</div><div>beforebegin</div><template>Ook!</template></body>', (string)$body);
|
|
|
|
// Yes, this is correct. There are no special handling instructions for
|
|
// templates in this.
|
|
$t->insertAdjacentHTML('afterbegin', '<div>afterbegin</div>');
|
|
$this->assertSame('<body><div>beforebegin</div><p><div>afterbegin</div>Ook<div>beforeend</div></p><div>afterend</div><div>beforebegin</div><template>Ook!</template></body>', (string)$body);
|
|
|
|
$t->content->appendChild($d->createElement('div'));
|
|
$t->content->lastChild->insertAdjacentHTML('beforebegin', '<div>beforebegin</div>');
|
|
$this->assertSame('<body><div>beforebegin</div><p><div>afterbegin</div>Ook<div>beforeend</div></p><div>afterend</div><div>beforebegin</div><template>Ook!<div>beforebegin</div><div></div></template></body>', (string)$body);
|
|
}
|
|
|
|
|
|
public function provideMethod_insertAdjacentHTML__errors(): iterable {
|
|
return [
|
|
[ function() {
|
|
$d = new Document();
|
|
$documentElement = $d->appendChild($d->createElement('html'));
|
|
$documentElement->insertAdjacentHTML('beforebegin', 'Ook!');
|
|
}, DOMException::NO_MODIFICATION_ALLOWED ],
|
|
|
|
[ function() {
|
|
$d = new Document();
|
|
$documentElement = $d->appendChild($d->createElement('html'));
|
|
$documentElement->insertAdjacentHTML('fail', 'fail');
|
|
}, DOMException::SYNTAX_ERROR ]
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @dataProvider provideMethod_insertAdjacentHTML__errors
|
|
* @covers \MensBeam\HTML\DOM\Element::insertAdjacentHTML
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DOMException::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_parentNode
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_insertAdjacentHTML__errors(\Closure $closure, int $errorCode) {
|
|
$this->expectException(DOMException::class);
|
|
$this->expectExceptionCode($errorCode);
|
|
$closure();
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::insertAdjacentText
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Collection::__construct
|
|
* @covers \MensBeam\HTML\DOM\Collection::item
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_body
|
|
* @covers \MensBeam\HTML\DOM\Document::createTextNode
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\Document::serialize
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::getElementsByTagName
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::insertAdjacent
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::item
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::offsetGet
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_firstChild
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_nextSibling
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_parentNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__toString
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::insertBefore
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Text::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_insertAdjacentText() {
|
|
$d = new Document('<!DOCTYPE html><html><body><p>Ook</p></body></html>', 'UTF-8');
|
|
$body = $d->body;
|
|
$p = $d->getElementsByTagName('p')[0];
|
|
|
|
$p->insertAdjacentText('beforebegin', 'beforebegin');
|
|
$this->assertSame('<body>beforebegin<p>Ook</p></body>', (string)$body);
|
|
|
|
$p->insertAdjacentText('afterbegin', 'afterbegin');
|
|
$this->assertSame('<body>beforebegin<p>afterbeginOok</p></body>', (string)$body);
|
|
|
|
$p->insertAdjacentText('beforeend', 'beforeend');
|
|
$this->assertSame('<body>beforebegin<p>afterbeginOokbeforeend</p></body>', (string)$body);
|
|
|
|
$p->insertAdjacentText('afterend', 'afterend');
|
|
$this->assertSame('<body>beforebegin<p>afterbeginOokbeforeend</p>afterend</body>', (string)$body);
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::matches
|
|
* @covers \MensBeam\HTML\DOM\Element::webkitMatchesSelector
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\NonElementParentNode::getElementById
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_xpath
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
*/
|
|
public function testMethod_matches_webkitMatchesSelector() {
|
|
$d = new Document(<<<HTML
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<ul id="ook" class="ook">
|
|
<li>Ook?</li>
|
|
<li id="eek" class="eek">Eek!</li>
|
|
<li id="eek" class="eek">Eek!</li>
|
|
<li>Ook.</li>
|
|
</ul>
|
|
</body>
|
|
</html>
|
|
HTML, 'UTF-8');
|
|
$ook = $d->getElementById('ook');
|
|
$eek = $d->getElementById('eek');
|
|
|
|
$this->assertTrue($ook->matches('.ook'));
|
|
$this->assertTrue($ook->matches('body > ul'));
|
|
$this->assertTrue($eek->matches('.eek'));
|
|
$this->assertTrue($eek->matches('li + li'));
|
|
$this->assertFalse($ook->webkitMatchesSelector('li'));
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::matches
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DOMException::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_matches__errors() {
|
|
$this->expectException(DOMException::class);
|
|
$this->expectExceptionCode(DOMException::SYNTAX_ERROR);
|
|
$d = new Document();
|
|
$documentElement = $d->appendChild($d->createElement('html'));
|
|
$documentElement->matches('fail?');
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::removeAttribute
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Collection::__construct
|
|
* @covers \MensBeam\HTML\DOM\Collection::__get_length
|
|
* @covers \MensBeam\HTML\DOM\Collection::count
|
|
* @covers \MensBeam\HTML\DOM\Collection::item
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::getElementsByTagNameNS
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_attributes
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::item
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::offsetGet
|
|
* @covers \MensBeam\HTML\DOM\NamedNodeMap::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
*/
|
|
public function testMethod_removeAttribute() {
|
|
$d = new Document('<!DOCTYPE html><html><head></head><body><svg xmlns="' . Node::SVG_NAMESPACE . '" xmlns:xlink="' . Node::XLINK_NAMESPACE . '" viewBox="0 0 42 42" poop💩="jeff"></svg></body></html>', 'UTF-8');
|
|
$svg = $d->getElementsByTagNameNS(Node::SVG_NAMESPACE, 'svg')[0];
|
|
|
|
// Trying to remove namespaced attribute
|
|
$svg->removeAttribute('xmlns');
|
|
$this->assertEquals(4, $svg->attributes->length);
|
|
// Removing attribute
|
|
$svg->removeAttribute('viewBox');
|
|
$this->assertEquals(3, $svg->attributes->length);
|
|
// Removing coerced attribute
|
|
$svg->removeAttribute('poop💩');
|
|
$this->assertEquals(2, $svg->attributes->length);
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::removeAttributeNode
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_localName
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_ownerElement
|
|
* @covers \MensBeam\HTML\DOM\Attr::__set_value
|
|
* @covers \MensBeam\HTML\DOM\Collection::__construct
|
|
* @covers \MensBeam\HTML\DOM\Collection::__get_length
|
|
* @covers \MensBeam\HTML\DOM\Collection::count
|
|
* @covers \MensBeam\HTML\DOM\Collection::item
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createAttributeNS
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::getElementsByTagNameNS
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::validateAndExtract
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_attributes
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNodeNS
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNodeNS
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNS
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::item
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::offsetGet
|
|
* @covers \MensBeam\HTML\DOM\NamedNodeMap::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_removeAttributeNode() {
|
|
$d = new Document('<!DOCTYPE html><html><head></head><body><svg xmlns="' . Node::SVG_NAMESPACE . '" xmlns:xlink="' . Node::XLINK_NAMESPACE . '" viewBox="0 0 42 42"></svg></body></html>', 'UTF-8');
|
|
$svg = $d->getElementsByTagNameNS(Node::SVG_NAMESPACE, 'svg')[0];
|
|
// Parser per the spec doesn't parse xmlns prefixed attributes except xlink, so let's add one manually instead to test coercion.
|
|
$svg->setAttributeNS(Node::XMLNS_NAMESPACE, 'xmlns:poop💩', 'https://poop💩.poop');
|
|
|
|
$xmlns = $svg->getAttributeNodeNS(Node::XMLNS_NAMESPACE, 'xmlns');
|
|
$xlink = $svg->getAttributeNodeNS(Node::XMLNS_NAMESPACE, 'xlink');
|
|
$poop = $svg->getAttributeNodeNS(Node::XMLNS_NAMESPACE, 'poop💩');
|
|
$viewBox = $svg->getAttributeNode('viewBox');
|
|
|
|
$svg->removeAttributeNode($xmlns);
|
|
$this->assertEquals(3, $svg->attributes->length);
|
|
$svg->removeAttributeNode($xlink);
|
|
$this->assertEquals(2, $svg->attributes->length);
|
|
$svg->removeAttributeNode($poop);
|
|
$this->assertEquals(1, $svg->attributes->length);
|
|
$svg->removeAttributeNode($viewBox);
|
|
$this->assertEquals(0, $svg->attributes->length);
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::removeAttributeNode
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createAttribute
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DOMException::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_removeAttributeNode__errors() {
|
|
$this->expectException(DOMException::class);
|
|
$this->expectExceptionCode(DOMException::NOT_FOUND);
|
|
$d = new Document();
|
|
$documentElement = $d->appendChild($d->createElement('html'));
|
|
$documentElement->removeAttributeNode($d->createAttribute('shit'));
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::removeAttributeNS
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_localName
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_ownerElement
|
|
* @covers \MensBeam\HTML\DOM\Attr::__set_value
|
|
* @covers \MensBeam\HTML\DOM\Collection::__construct
|
|
* @covers \MensBeam\HTML\DOM\Collection::__get_length
|
|
* @covers \MensBeam\HTML\DOM\Collection::count
|
|
* @covers \MensBeam\HTML\DOM\Collection::item
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createAttributeNS
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::getElementsByTagNameNS
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::validateAndExtract
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_attributes
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNodeNS
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNodeNS
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNS
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::item
|
|
* @covers \MensBeam\HTML\DOM\HTMLCollection::offsetGet
|
|
* @covers \MensBeam\HTML\DOM\NamedNodeMap::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_removeAttributeNS() {
|
|
$d = new Document('<!DOCTYPE html><html><head></head><body><svg xmlns="' . Node::SVG_NAMESPACE . '" xmlns:xlink="' . Node::XLINK_NAMESPACE . '" viewBox="0 0 42 42"></svg></body></html>', 'UTF-8');
|
|
$svg = $d->getElementsByTagNameNS(Node::SVG_NAMESPACE, 'svg')[0];
|
|
// Parser per the spec doesn't parse xmlns prefixed attributes except xlink, so let's add one manually instead to test coercion.
|
|
$svg->setAttributeNS(Node::XMLNS_NAMESPACE, 'xmlns:poop💩', 'https://poop💩.poop');
|
|
|
|
// Remove null namespaced attribute
|
|
$svg->removeAttributeNS(null, 'viewBox');
|
|
$this->assertEquals(3, $svg->attributes->length);
|
|
// Remove namespaced attribute
|
|
$svg->removeAttributeNS(Node::XMLNS_NAMESPACE, 'xmlns');
|
|
$this->assertEquals(2, $svg->attributes->length);
|
|
// Remove coerced namespaced attribute
|
|
$svg->removeAttributeNS(Node::XMLNS_NAMESPACE, 'poop💩');
|
|
$this->assertEquals(1, $svg->attributes->length);
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttribute
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Element::hasAttribute
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_setAttribute() {
|
|
$d = new Document();
|
|
$d->appendChild($d->createElement('html'));
|
|
$documentElement = $d->documentElement;
|
|
// Just need to test coerced attributes; everything else has been covered
|
|
// elsewhere
|
|
$documentElement->setAttribute('poop💩', 'jeff');
|
|
$this->assertTrue($documentElement->hasAttribute('poop💩'));
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttribute
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DOMException::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_setAttribute__errors() {
|
|
$this->expectException(DOMException::class);
|
|
$this->expectExceptionCode(DOMException::INVALID_CHARACTER);
|
|
$d = new Document();
|
|
$d->appendChild($d->createElement('html'));
|
|
$d->documentElement->setAttribute('this will fail', 'fail');
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_localName
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_ownerElement
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_value
|
|
* @covers \MensBeam\HTML\DOM\Attr::__set_value
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createAttribute
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttribute
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_setAttributeNode() {
|
|
$d = new Document();
|
|
$d->appendChild($d->createElement('html'));
|
|
$documentElement = $d->documentElement;
|
|
$attr = $d->createAttribute('poop💩');
|
|
$attr->value = 'jeff';
|
|
$documentElement->setAttributeNode($attr);
|
|
|
|
// Almost everything is covered. Just need to test same attributes and
|
|
// replacements.
|
|
$documentElement->setAttributeNode($attr);
|
|
$this->assertSame('jeff', $documentElement->getAttribute('poop💩'));
|
|
$attr = $d->createAttribute('poop💩');
|
|
$attr->value = 'jeff';
|
|
$documentElement->setAttributeNode($attr);
|
|
$this->assertSame('jeff', $documentElement->getAttribute('poop💩'));
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNode
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_localName
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_ownerElement
|
|
* @covers \MensBeam\HTML\DOM\Attr::__set_value
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createAttribute
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DOMException::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_setAttributeNode__errors() {
|
|
$this->expectException(DOMException::class);
|
|
$this->expectExceptionCode(DOMException::IN_USE_ATTRIBUTE);
|
|
$d = new Document();
|
|
$documentElement = $d->appendChild($d->createElement('html'));
|
|
$body = $documentElement->appendChild($d->createElement('body'));
|
|
$attr = $d->createAttribute('ook');
|
|
$attr->value = 'eek';
|
|
$body->setAttributeNode($attr);
|
|
$documentElement->setAttributeNode($attr);
|
|
}
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttributeNS
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_value
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DocumentOrElement::validateAndExtract
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNodeNS
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNS
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\NonElementParentNode::getElementById
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testMethod_setAttributeNS() {
|
|
$d = new Document();
|
|
$d->appendChild($d->createElement('html'));
|
|
$documentElement = $d->documentElement;
|
|
|
|
// Just need to test setting of a bullshit namespaced attribute and id
|
|
// attribute; everything else is covered already.
|
|
$documentElement->setAttributeNS('https://poop💩.poop💩', 'poop💩:poop💩', 'jeff');
|
|
$this->assertSame('jeff', $documentElement->getAttributeNS('https://poop💩.poop💩', 'poop💩'));
|
|
$documentElement->setAttributeNS(null, 'id', 'ook');
|
|
$this->assertSame($documentElement, $d->getElementById('ook'));
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_attributes
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_value
|
|
* @covers \MensBeam\HTML\DOM\Collection::__get_length
|
|
* @covers \MensBeam\HTML\DOM\Collection::count
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttribute
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\NamedNodeMap::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
*/
|
|
public function testProperty_attributes() {
|
|
$d = new Document('<!DOCTYPE html><html id="ook" class="eek" ack="ack" foo="foo" bar="bar" xmlns="' . Node::HTML_NAMESPACE . '"></html>', 'UTF-8');
|
|
$documentElement = $d->documentElement;
|
|
$this->assertEquals(6, $documentElement->attributes->length);
|
|
$this->assertSame(Node::HTML_NAMESPACE, $documentElement->getAttribute('xmlns'));
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_classList
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::load
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMTokenList::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMTokenList::__get_length
|
|
* @covers \MensBeam\HTML\DOM\DOMTokenList::parseOrderedSet
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::hasChildNodes
|
|
* @covers \MensBeam\HTML\DOM\Node::postParsingTemplatesFix
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testProperty_classList() {
|
|
$d = new Document('<!DOCTYPE html><html class="ook eek ack foo bar"></html>', 'UTF-8');
|
|
$documentElement = $d->documentElement;
|
|
$this->assertEquals(5, $documentElement->classList->length);
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_className
|
|
* @covers \MensBeam\HTML\DOM\Element::__set_className
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_value
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttribute
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttribute
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testProperty_className() {
|
|
$d = new Document();
|
|
$documentElement = $d->appendChild($d->createElement('html'));
|
|
$documentElement->className = 'ook';
|
|
$this->assertSame('ook', $documentElement->className);
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_id
|
|
* @covers \MensBeam\HTML\DOM\Element::__set_id
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Attr::__get_value
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttribute
|
|
* @covers \MensBeam\HTML\DOM\Element::getAttributeNode
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttribute
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testProperty_id() {
|
|
$d = new Document();
|
|
$documentElement = $d->appendChild($d->createElement('html'));
|
|
$documentElement->id = 'ook';
|
|
$this->assertSame('ook', $documentElement->id);
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_innerHTML
|
|
* @covers \MensBeam\HTML\DOM\Element::__set_innerHTML
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_body
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createDocumentFragment
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createTextNode
|
|
* @covers \MensBeam\HTML\DOM\DocumentFragment::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\HTMLTemplateElement::__construct
|
|
* @covers \MensBeam\HTML\DOM\HTMLTemplateElement::__get_content
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_firstChild
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::containsInner
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Serializer::getTemplateContent
|
|
* @covers \MensBeam\HTML\DOM\Text::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::setProtectedProperties
|
|
*/
|
|
public function testProperty_innerHTML() {
|
|
$d = new Document();
|
|
$d->appendChild($d->createElement('html'));
|
|
$d->documentElement->appendChild($d->createElement('body'));
|
|
$s = $d->body->appendChild($d->createElement('span'));
|
|
$s->appendChild($d->createTextNode('ook'));
|
|
$this->assertSame('<span>ook</span>', $d->body->innerHTML);
|
|
|
|
$d->body->innerHTML = '<div id ="ook">eek</div>';
|
|
$this->assertSame('<div id="ook">eek</div>', $d->body->innerHTML);
|
|
|
|
$t = $d->body->appendChild($d->createElement('template'));
|
|
$t->innerHTML = 'ook';
|
|
$this->assertSame('ook', $t->innerHTML);
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_outerHTML
|
|
* @covers \MensBeam\HTML\DOM\Element::__set_outerHTML
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_body
|
|
* @covers \MensBeam\HTML\DOM\Document::__get_documentElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createDocumentFragment
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\Document::createTextNode
|
|
* @covers \MensBeam\HTML\DOM\Document::serialize
|
|
* @covers \MensBeam\HTML\DOM\DocumentFragment::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__get_namespaceURI
|
|
* @covers \MensBeam\HTML\DOM\Element::setAttribute
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_ownerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_parentNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__toString
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::containsInner
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Node::replaceChild
|
|
* @covers \MensBeam\HTML\DOM\Text::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testProperty_outerHTML() {
|
|
$d = new Document();
|
|
$d->appendChild($d->createElement('html'));
|
|
$d->documentElement->appendChild($d->createElement('body'));
|
|
$d->body->setAttribute('class', 'ook');
|
|
$s = $d->body->appendChild($d->createElement('span'));
|
|
$s->appendChild($d->createTextNode('ook'));
|
|
$this->assertSame('<body class="ook"><span>ook</span></body>', $d->body->outerHTML);
|
|
|
|
$d->body->outerHTML = '<body>eek</body>';
|
|
$this->assertSame('<body>eek</body>', $d->body->outerHTML);
|
|
|
|
$f = $d->createDocumentFragment();
|
|
$div = $f->appendChild($d->createElement('div'));
|
|
$div->outerHTML = 'ook';
|
|
$this->assertSame('ook', (string)$f);
|
|
|
|
$div = $d->createElement('div');
|
|
$div->appendChild($d->createTextNode('ook'));
|
|
$div->outerHTML = '<div>eek</div>';
|
|
$this->assertSame('<div>ook</div>', (string)$div);
|
|
}
|
|
|
|
|
|
/**
|
|
* @covers \MensBeam\HTML\DOM\Element::__set_outerHTML
|
|
*
|
|
* @covers \MensBeam\HTML\DOM\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Document::createElement
|
|
* @covers \MensBeam\HTML\DOM\DOMException::__construct
|
|
* @covers \MensBeam\HTML\DOM\DOMImplementation::__construct
|
|
* @covers \MensBeam\HTML\DOM\Element::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__construct
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_innerNode
|
|
* @covers \MensBeam\HTML\DOM\Node::__get_parentNode
|
|
* @covers \MensBeam\HTML\DOM\Node::appendChild
|
|
* @covers \MensBeam\HTML\DOM\Node::getInnerDocument
|
|
* @covers \MensBeam\HTML\DOM\Node::getRootNode
|
|
* @covers \MensBeam\HTML\DOM\Node::postInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionBugFixes
|
|
* @covers \MensBeam\HTML\DOM\Node::preInsertionValidity
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__construct
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::__get_wrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\Document::getWrapperNode
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::get
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::has
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::key
|
|
* @covers \MensBeam\HTML\DOM\Inner\NodeCache::set
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::createFromProtectedConstructor
|
|
* @covers \MensBeam\HTML\DOM\Inner\Reflection::getProtectedProperty
|
|
*/
|
|
public function testProperty_outerHTML__errors() {
|
|
$this->expectException(DOMException::class);
|
|
$this->expectExceptionCode(DOMException::NO_MODIFICATION_ALLOWED);
|
|
$d = new Document();
|
|
$documentElement = $d->appendChild($d->createElement('html'));
|
|
$documentElement->outerHTML = 'FAIL';
|
|
}
|
|
}
|