p2 project
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.

86 lines
2.8 KiB

2 months ago
<?php
namespace PhpOffice\PhpSpreadsheetTests\Shared;
use PhpOffice\PhpSpreadsheet\Exception as SpreadsheetException;
use PhpOffice\PhpSpreadsheet\Shared\XMLWriter;
use PHPUnit\Framework\TestCase;
class XmlWriterTest extends TestCase
{
/** @var bool */
private $debugEnabled;
protected function setUp(): void
{
$this->debugEnabled = XMLWriter::$debugEnabled;
}
protected function tearDown(): void
{
XMLWriter::$debugEnabled = $this->debugEnabled;
}
public function testUnserialize(): void
{
$this->expectException(SpreadsheetException::class);
$this->expectExceptionMessage('Unserialize not permitted');
$className = XMLWriter::class;
$classLen = strlen($className);
$text = "O:$classLen:\"$className\":1:{";
$text2 = "\x00$className\x00tempFileName";
$text2Len = strlen($text2);
$text .= "s:$text2Len:\"$text2\"";
$text .= ';s:0:"";}';
unserialize($text);
}
public function testDebugEnabled(): void
{
XMLWriter::$debugEnabled = true;
$indent = ' ';
$indentnl = "\n";
$objWriter = new XMLWriter();
$objWriter->startDocument('1.0', 'UTF-8', 'yes');
$expected = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . "\n";
$objWriter->startElement('root');
$expected .= '<root>' . $indentnl;
$objWriter->startElement('node');
$expected .= $indent . '<node>';
$objWriter->writeRawData('xyz');
$expected .= 'xyz';
$objWriter->writeRawData(null);
$objWriter->writeRawData(['12', '34', '5']);
$expected .= "12\n34\n5";
$objWriter->endElement(); // node
$expected .= '</node>' . $indentnl;
$objWriter->endElement(); // root
$expected .= '</root>' . $indentnl;
self::assertSame($expected, $objWriter->getData());
}
public function testDiskCache(): void
{
XMLWriter::$debugEnabled = false;
$indent = '';
$indentnl = '';
$objWriter = new XMLWriter(XMLWriter::STORAGE_DISK);
$objWriter->startDocument('1.0', 'UTF-8', 'yes');
$expected = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . "\n";
$objWriter->startElement('root');
$expected .= '<root>' . $indentnl;
$objWriter->startElement('node');
$expected .= $indent . '<node>';
$objWriter->writeRawData('xyz');
$expected .= 'xyz';
$objWriter->writeRawData(null);
$objWriter->writeRawData(['12', '34', '5']);
$expected .= "12\n34\n5";
$objWriter->endElement(); // node
$expected .= '</node>' . $indentnl;
$objWriter->endElement(); // root
$expected .= '</root>' . $indentnl;
self::assertSame($expected, $objWriter->getData());
}
}