1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
<?php declare(strict_types = 1);
namespace TheSeer\Tokenizer;
use DOMDocument;
use PHPUnit\Framework\TestCase;
use XMLWriter;
use function file_get_contents;
/**
* @covers \TheSeer\Tokenizer\XMLSerializer
*/
class XMLSerializerTest extends TestCase {
/** @var TokenCollection */
private $tokens;
protected function setUp(): void {
$this->tokens = unserialize(
file_get_contents(__DIR__ . '/_files/test.php.tokens'),
[TokenCollection::class]
);
}
public function testCanBeSerializedToXml(): void {
$expected = file_get_contents(__DIR__ . '/_files/test.php.xml');
$serializer = new XMLSerializer();
$this->assertEquals($expected, $serializer->toXML($this->tokens));
}
public function testCanAppendToWriter(): void {
$expected = file_get_contents(__DIR__ . '/_files/test.php.xml');
$writer = new XMLWriter();
$writer->openMemory();
$writer->setIndent(true);
$serializer = new XMLSerializer();
$writer->startDocument();
$serializer->appendToWriter($writer, $this->tokens);
$writer->endDocument();
$this->assertEquals($expected, $writer->outputMemory());
}
public function testCanBeSerializedToDomDocument(): void {
$serializer = new XMLSerializer();
$result = $serializer->toDom($this->tokens);
$this->assertInstanceOf(DOMDocument::class, $result);
$this->assertEquals('source', $result->documentElement->localName);
}
public function testCanBeSerializedToXmlWithCustomNamespace(): void {
$expected = file_get_contents(__DIR__ . '/_files/customns.xml');
$serializer = new XMLSerializer(new NamespaceUri('custom:xml:namespace'));
$this->assertEquals($expected, $serializer->toXML($this->tokens));
}
public function testEmptyCollectionCreatesEmptyDocument(): void {
$expected = file_get_contents(__DIR__ . '/_files/empty.xml');
$serializer = new XMLSerializer();
$this->assertEquals($expected, $serializer->toXML((new TokenCollection())));
}
}
|