ParserTest.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Xls;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PhpOffice\PhpSpreadsheet\Writer\Exception as WriterException;
  5. use PhpOffice\PhpSpreadsheet\Writer\Xls\Parser;
  6. use PHPUnit\Framework\TestCase;
  7. class ParserTest extends TestCase
  8. {
  9. /** @var ?Spreadsheet */
  10. private $spreadsheet;
  11. protected function tearDown(): void
  12. {
  13. if ($this->spreadsheet !== null) {
  14. $this->spreadsheet->disconnectWorksheets();
  15. $this->spreadsheet = null;
  16. }
  17. }
  18. public function testNonArray(): void
  19. {
  20. $this->expectException(WriterException::class);
  21. $this->expectExceptionMessage('Unexpected non-array');
  22. $this->spreadsheet = new Spreadsheet();
  23. $parser = new Parser($this->spreadsheet);
  24. $parser->toReversePolish();
  25. }
  26. public function testMissingIndex(): void
  27. {
  28. $this->expectException(WriterException::class);
  29. $this->expectExceptionMessage('Unexpected non-array');
  30. $this->spreadsheet = new Spreadsheet();
  31. $parser = new Parser($this->spreadsheet);
  32. $parser->toReversePolish(['left' => 0]);
  33. }
  34. public function testParseError(): void
  35. {
  36. $this->expectException(WriterException::class);
  37. $this->expectExceptionMessage('Unknown token +');
  38. $this->spreadsheet = new Spreadsheet();
  39. $parser = new Parser($this->spreadsheet);
  40. $parser->toReversePolish(['left' => 1, 'right' => 2, 'value' => '+']);
  41. }
  42. public function testGoodParse(): void
  43. {
  44. $this->spreadsheet = new Spreadsheet();
  45. $parser = new Parser($this->spreadsheet);
  46. self::assertSame('1e01001e02001e0300', bin2hex($parser->toReversePolish(['left' => 1, 'right' => 2, 'value' => 3])));
  47. }
  48. }