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.
68 lines
2.1 KiB
68 lines
2.1 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,
|
|
DocumentFragment,
|
|
Element,
|
|
Exception,
|
|
HTMLTemplateElement
|
|
};
|
|
|
|
|
|
/** @covers \MensBeam\HTML\DOM\DocumentFragment */
|
|
class TestDocumentFragment extends \PHPUnit\Framework\TestCase {
|
|
/** @covers \MensBeam\HTML\DOM\DocumentFragment::getElementById */
|
|
public function testGetElementById(): void {
|
|
$d = new Document();
|
|
$df = $d->createDocumentFragment();
|
|
$o = $df->appendChild($d->createElement('span'));
|
|
$o->setAttribute('id', 'eek');
|
|
$this->assertSame(Element::class, $df->getElementById('eek')::class);
|
|
$this->assertNull($df->getElementById('ook'));
|
|
}
|
|
|
|
/** @covers \MensBeam\HTML\DOM\DocumentFragment::__get_host */
|
|
public function testGetHost(): void {
|
|
$d = new Document();
|
|
// From a template
|
|
$t = $d->createElement('template');
|
|
$this->assertSame(HTMLTemplateElement::class, get_class($t->content->host));
|
|
// From a created document fragment
|
|
$df = $d->createDocumentFragment();
|
|
$this->assertNull($df->host);
|
|
}
|
|
|
|
public function provideSetHostFailures(): iterable {
|
|
return [
|
|
[ function() {
|
|
$d = new Document();
|
|
$t = $d->createElement('template');
|
|
$t->content->host = $d->createElement('template');
|
|
} ],
|
|
[ function() {
|
|
$d = new Document();
|
|
$df = $d->createDocumentFragment();
|
|
$df->host = $d->createElement('template');
|
|
} ]
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @dataProvider provideSetHostFailures
|
|
* @covers \MensBeam\HTML\DOM\DocumentFragment::__set_host
|
|
* @covers \MensBeam\HTML\DOM\Exception::__construct
|
|
*/
|
|
public function testSetHostFailures(\Closure $closure): void {
|
|
$this->expectException(Exception::class);
|
|
$this->expectExceptionCode(Exception::READONLY_PROPERTY);
|
|
$closure();
|
|
}
|
|
}
|