ODPresentationTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. namespace PhpOffice\PhpPresentation\Tests\Writer;
  3. use PhpOffice\PhpPresentation\Shape\Chart\Type\Bar3D;
  4. use PhpOffice\PhpPresentation\Tests\PhpPresentationTestCase;
  5. use PhpOffice\PhpPresentation\Writer\ODPresentation;
  6. /**
  7. * Test class for PhpOffice\PhpPresentation\Writer\ODPresentation
  8. *
  9. * @coversDefaultClass PhpOffice\PhpPresentation\Writer\ODPresentation
  10. */
  11. class ODPresentationTest extends PhpPresentationTestCase
  12. {
  13. protected $writerName = 'ODPresentation';
  14. /**
  15. * Test create new instance
  16. */
  17. public function testConstruct()
  18. {
  19. ;
  20. $this->oPresentation->getActiveSlide()->createDrawingShape();
  21. $object = new ODPresentation($this->oPresentation);
  22. $this->assertInstanceOf('PhpOffice\\PhpPresentation\\PhpPresentation', $object->getPhpPresentation());
  23. $this->assertEquals('./', $object->getDiskCachingDirectory());
  24. $this->assertInstanceOf('PhpOffice\\PhpPresentation\\HashTable', $object->getDrawingHashTable());
  25. }
  26. /**
  27. * Test save
  28. */
  29. public function testSave()
  30. {
  31. $filename = tempnam(sys_get_temp_dir(), 'PhpPresentation');
  32. $imageFile = PHPPRESENTATION_TESTS_BASE_DIR . '/resources/images/PhpPresentationLogo.png';
  33. $slide = $this->oPresentation->getActiveSlide();
  34. $slide->createRichTextShape();
  35. $slide->createLineShape(10, 10, 10, 10);
  36. $slide->createChartShape()->getPlotArea()->setType(new Bar3D());
  37. $slide->createDrawingShape()->setName('Drawing')->setPath($imageFile);
  38. $slide->createTableShape()->createRow();
  39. $object = new ODPresentation($this->oPresentation);
  40. $object->save($filename);
  41. $this->assertTrue(file_exists($filename));
  42. unlink($filename);
  43. }
  44. /**
  45. * Test get PhpPresentation exception
  46. *
  47. * @expectedException \Exception
  48. * @expectedExceptionMessage Filename is empty
  49. */
  50. public function testSaveEmpty()
  51. {
  52. $object = new ODPresentation();
  53. $object->save('');
  54. }
  55. /**
  56. * Test get PhpPresentation exception
  57. *
  58. * @expectedException \Exception
  59. * @expectedExceptionMessage No PhpPresentation assigned.
  60. */
  61. public function testGetPhpPresentationException()
  62. {
  63. $object = new ODPresentation();
  64. $object->getPhpPresentation();
  65. }
  66. /**
  67. * Test set/get disk caching
  68. */
  69. public function testSetGetUseDiskCaching()
  70. {
  71. $object = new ODPresentation($this->oPresentation);
  72. $this->assertFalse($object->hasDiskCaching());
  73. $object->setUseDiskCaching(true, sys_get_temp_dir());
  74. $this->assertTrue($object->hasDiskCaching());
  75. $this->assertEquals(sys_get_temp_dir(), $object->getDiskCachingDirectory());
  76. }
  77. /**
  78. * Test set/get disk caching exception
  79. *
  80. * @expectedException \Exception
  81. */
  82. public function testSetUseDiskCachingException()
  83. {
  84. $object = new ODPresentation($this->oPresentation);
  85. $object->setUseDiskCaching(true, 'foo');
  86. }
  87. public function testFeatureThumbnail()
  88. {
  89. $imagePath = PHPPRESENTATION_TESTS_BASE_DIR.DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'PhpPresentationLogo.png';
  90. $xPathManifest = '/manifest:manifest/manifest:file-entry[@manifest:media-type=\'image/png\'][@manifest:full-path=\'Thumbnails/thumbnail.png\']';
  91. $this->assertZipFileNotExists('Thumbnails/thumbnail.png');
  92. $this->assertZipFileExists('META-INF/manifest.xml');
  93. $this->assertZipXmlElementNotExists('META-INF/manifest.xml', $xPathManifest);
  94. $this->oPresentation->getPresentationProperties()->setThumbnailPath($imagePath);
  95. $this->resetPresentationFile();
  96. $this->assertZipFileExists('Thumbnails/thumbnail.png');
  97. $this->assertZipFileExists('META-INF/manifest.xml');
  98. $this->assertZipXmlElementExists('META-INF/manifest.xml', $xPathManifest);
  99. }
  100. }