From d4d42752d4a25cd74acd0a1c2616fff0bb82dd5d Mon Sep 17 00:00:00 2001 From: Ivan Lanin Date: Thu, 13 Mar 2014 01:58:00 +0700 Subject: [PATCH] Unit test for PHPWord\Style --- Classes/PHPWord/Section.php | 12 +++- Tests/PHPWord/MediaTest.php | 2 +- Tests/PHPWord/SectionTest.php | 87 ++++++++++++++++++++++++++ Tests/PHPWord/Style/TOCTest.php | 1 + Tests/PHPWord/StyleTest.php | 45 +++++++++++++ Tests/PHPWord/TOCTest.php | 8 ++- Tests/PHPWord/Writer/Word2007Test.php | 31 +++++---- Tests/PHPWordTest.php | 6 +- Tests/_files/images/PHPWord.png | Bin 0 -> 16712 bytes Tests/_inc/TestHelperDOCX.php | 2 +- 10 files changed, 173 insertions(+), 21 deletions(-) create mode 100644 Tests/PHPWord/StyleTest.php create mode 100644 Tests/_files/images/PHPWord.png diff --git a/Classes/PHPWord/Section.php b/Classes/PHPWord/Section.php index 70dceba2..bdf37f81 100755 --- a/Classes/PHPWord/Section.php +++ b/Classes/PHPWord/Section.php @@ -243,7 +243,9 @@ class PHPWord_Section $this->_elementCollection[] = $object; return $object; } else { - trigger_error('Source does not exist or unsupported object type.'); + throw new PHPWord_Exception( + 'Source does not exist or unsupported object type.' + ); } } @@ -265,7 +267,9 @@ class PHPWord_Section $this->_elementCollection[] = $image; return $image; } else { - trigger_error('Source does not exist or unsupported image type.'); + throw new PHPWord_Exception( + 'Source does not exist or unsupported image type.' + ); } } @@ -286,7 +290,9 @@ class PHPWord_Section $this->_elementCollection[] = $memoryImage; return $memoryImage; } else { - trigger_error('Unsupported image type.'); + throw new PHPWord_Exception( + 'Unsupported image type.' + ); } } diff --git a/Tests/PHPWord/MediaTest.php b/Tests/PHPWord/MediaTest.php index e5722724..1d302444 100644 --- a/Tests/PHPWord/MediaTest.php +++ b/Tests/PHPWord/MediaTest.php @@ -48,4 +48,4 @@ class MediaTest extends \PHPUnit_Framework_TestCase $this->assertInstanceOf('PHPWord_Section_Image', $element); } } -} \ No newline at end of file +} diff --git a/Tests/PHPWord/SectionTest.php b/Tests/PHPWord/SectionTest.php index 7dede374..bbb3014a 100644 --- a/Tests/PHPWord/SectionTest.php +++ b/Tests/PHPWord/SectionTest.php @@ -5,7 +5,11 @@ use PHPUnit_Framework_TestCase; use PHPWord_Section; /** + * Class TOCTest + * + * @package PHPWord\Tests * @covers PHPWord_Section + * @runTestsInSeparateProcesses */ class SectionTest extends \PHPUnit_Framework_TestCase { @@ -44,4 +48,87 @@ class SectionTest extends \PHPUnit_Framework_TestCase $oSection = new PHPWord_Section(0); $this->assertAttributeEquals($oSection->getHeaders(), '_headers', new PHPWord_Section(0)); } + + /** + * @covers PHPWord_Section::setSettings + */ + public function testSetSettings() + { + $expected = 'landscape'; + $object = new PHPWord_Section(0); + $object->setSettings(array('orientation' => $expected)); + $this->assertEquals($expected, $object->getSettings()->getOrientation()); + } + + /** + * @covers PHPWord_Section::addText + * @covers PHPWord_Section::addLink + * @covers PHPWord_Section::addTextBreak + * @covers PHPWord_Section::addPageBreak + * @covers PHPWord_Section::addTable + * @covers PHPWord_Section::addListItem + * @covers PHPWord_Section::addObject + * @covers PHPWord_Section::addImage + * @covers PHPWord_Section::addMemoryImage + * @covers PHPWord_Section::addTOC + * @covers PHPWord_Section::addTitle + * @covers PHPWord_Section::createTextRun + * @covers PHPWord_Section::createFootnote + */ + public function testAddElements() + { + $objectSource = join( + DIRECTORY_SEPARATOR, + array(PHPWORD_TESTS_DIR_ROOT, '_files', 'documents', 'sheet.xls') + ); + $imageSource = join( + DIRECTORY_SEPARATOR, + array(PHPWORD_TESTS_DIR_ROOT, '_files', 'images', 'PHPWord.png') + ); + $imageUrl = 'http://php.net//images/logos/php-med-trans-light.gif'; + + $section = new PHPWord_Section(0); + $section->addText(utf8_decode('ä')); + $section->addLink(utf8_decode('http://äää.com'), utf8_decode('ä')); + $section->addTextBreak(); + $section->addPageBreak(); + $section->addTable(); + $section->addListItem(utf8_decode('ä')); + $section->addObject($objectSource); + $section->addImage($imageSource); + $section->addMemoryImage($imageUrl); + $section->addTOC(); + $section->addTitle(utf8_decode('ä'), 1); + $section->createTextRun(); + $section->createFootnote(); + + $elementCollection = $section->getElements(); + $elementType = 'Link'; + $objectType = "PHPWord_Section_{$elementType}"; + $this->assertInstanceOf($objectType, $elementCollection[1]); + // $elementTypes = array('Text', 'Link', 'TextBreak', 'PageBreak', + // 'Table', 'ListItem', 'Object', 'Image', 'MemoryImage', 'TOC', + // 'Title', 'TextRun'); + // $i = 0; + // foreach ($elementTypes as $elementType) { + // $objectType = "PHPWord_Section_{$elementType}"; + // $this->assertInstanceOf($objectType, $elementCollection[$i]); + // $i++; + // } + } + + /** + * @covers PHPWord_Section::createHeader + * @covers PHPWord_Section::createFooter + */ + public function testCreateHeaderFooter() + { + $object = new PHPWord_Section(0); + $elements = array('Header', 'Footer'); + foreach ($elements as $element) { + $objectType = "PHPWord_Section_{$element}"; + $method = "create{$element}"; + $this->assertInstanceOf($objectType, $object->$method()); + } + } } diff --git a/Tests/PHPWord/Style/TOCTest.php b/Tests/PHPWord/Style/TOCTest.php index 80e34d74..b72d85fc 100644 --- a/Tests/PHPWord/Style/TOCTest.php +++ b/Tests/PHPWord/Style/TOCTest.php @@ -8,6 +8,7 @@ use PHPWord_Style_TOC; * Class TOCTest * * @package PHPWord\Tests + * @covers PHPWord_Style_TOC * @runTestsInSeparateProcesses */ class TOCTest extends \PHPUnit_Framework_TestCase diff --git a/Tests/PHPWord/StyleTest.php b/Tests/PHPWord/StyleTest.php new file mode 100644 index 00000000..36e961ac --- /dev/null +++ b/Tests/PHPWord/StyleTest.php @@ -0,0 +1,45 @@ + 'center'); + $font = array('italic' => true); + $table = array('bgColor' => 'CCCCCC'); + $styles = array('Paragraph' => 'Paragraph', 'Font' => 'Font', + 'Link' => 'Font', 'Table' => 'TableFull', + 'Heading_1' => 'Font', 'Normal' => 'Paragraph'); + $elementCount = 6; + PHPWord_Style::addParagraphStyle('Paragraph', $paragraph); + PHPWord_Style::addFontStyle('Font', $font); + PHPWord_Style::addLinkStyle('Link', $font); + PHPWord_Style::addTableStyle('Table', $table); + PHPWord_Style::addTitleStyle(1, $font); + PHPWord_Style::setDefaultParagraphStyle($paragraph); + + $this->assertEquals($elementCount, count(PHPWord_Style::getStyles())); + foreach ($styles as $name => $style) { + $expected = "PHPWord_Style_{$style}"; + $this->assertInstanceOf($expected, PHPWord_Style::getStyle($name)); + } + $this->assertNull(PHPWord_Style::getStyle('Unknown')); + } +} diff --git a/Tests/PHPWord/TOCTest.php b/Tests/PHPWord/TOCTest.php index 74038ee3..b093f49c 100644 --- a/Tests/PHPWord/TOCTest.php +++ b/Tests/PHPWord/TOCTest.php @@ -6,7 +6,11 @@ use PHPWord_TOC; use PHPWord_Style_TOC; /** - * @covers PHPWord_TOC + * Class TOCTest + * + * @package PHPWord\Tests + * @covers PHPWord_TOC + * @runTestsInSeparateProcesses */ class TOCTest extends PHPUnit_Framework_TestCase { @@ -46,7 +50,7 @@ class TOCTest extends PHPUnit_Framework_TestCase // Prepare variables $titleCount = 3; $anchor = '_Toc' . (252634154 + $titleCount); - $bookmark = $titleCount - 1; // zero based + $bookmark = $titleCount - 1; $titles = array( 'Heading 1' => 1, 'Heading 2' => 2, diff --git a/Tests/PHPWord/Writer/Word2007Test.php b/Tests/PHPWord/Writer/Word2007Test.php index 59bc6387..ae828ec3 100644 --- a/Tests/PHPWord/Writer/Word2007Test.php +++ b/Tests/PHPWord/Writer/Word2007Test.php @@ -66,23 +66,28 @@ class Word2007Test extends \PHPUnit_Framework_TestCase */ public function testCheckContentTypes() { + $images = array( + 'mars_noext_jpg' => '1.jpg', + 'mars.jpg' => '2.jpg', + 'mario.gif' => '3.gif', + 'firefox.png' => '4.png', + 'duke_nukem.bmp' => '5.bmp', + 'angela_merkel.tif' => '6.tif', + ); $phpWord = new PHPWord(); $section = $phpWord->createSection(); - $section->addImage(PHPWORD_TESTS_DIR_ROOT . "/_files/images/mars_noext_jpg"); - $section->addImage(PHPWORD_TESTS_DIR_ROOT . "/_files/images/mars.jpg"); - $section->addImage(PHPWORD_TESTS_DIR_ROOT . "/_files/images/mario.gif"); - $section->addImage(PHPWORD_TESTS_DIR_ROOT . "/_files/images/firefox.png"); - $section->addImage(PHPWORD_TESTS_DIR_ROOT . "/_files/images/duke_nukem.bmp"); - $section->addImage(PHPWORD_TESTS_DIR_ROOT . "/_files/images/angela_merkel.tif"); + foreach ($images as $source => $target) { + $section->addImage(PHPWORD_TESTS_DIR_ROOT . "/_files/images/{$source}"); + } $doc = TestHelperDOCX::getDocument($phpWord); $mediaPath = $doc->getPath() . "/word/media"; - $this->assertFileEquals(PHPWORD_TESTS_DIR_ROOT . "/_files/images/mars_noext_jpg", $mediaPath . "/section_image1.jpg"); - $this->assertFileEquals(PHPWORD_TESTS_DIR_ROOT . "/_files/images/mars.jpg", $mediaPath . "/section_image2.jpg"); - $this->assertFileEquals(PHPWORD_TESTS_DIR_ROOT . "/_files/images/mario.gif", $mediaPath . "/section_image3.gif"); - $this->assertFileEquals(PHPWORD_TESTS_DIR_ROOT . "/_files/images/firefox.png", $mediaPath . "/section_image4.png"); - $this->assertFileEquals(PHPWORD_TESTS_DIR_ROOT . "/_files/images/duke_nukem.bmp", $mediaPath . "/section_image5.bmp"); - $this->assertFileEquals(PHPWORD_TESTS_DIR_ROOT . "/_files/images/angela_merkel.tif", $mediaPath . "/section_image6.tif"); + foreach ($images as $source => $target) { + $this->assertFileEquals( + PHPWORD_TESTS_DIR_ROOT . "/_files/images/{$source}", + $mediaPath . "/section_image{$target}" + ); + } } -} \ No newline at end of file +} diff --git a/Tests/PHPWordTest.php b/Tests/PHPWordTest.php index 54ab4ae0..0aa4f348 100644 --- a/Tests/PHPWordTest.php +++ b/Tests/PHPWordTest.php @@ -8,7 +8,11 @@ use PHPWord_Section; use PHPWord_Style; /** - * @covers PHPWord + * Class PHPWordTest + * + * @package PHPWord\Tests + * @covers PHPWord + * @runTestsInSeparateProcesses */ class PHPWordTest extends PHPUnit_Framework_TestCase { diff --git a/Tests/_files/images/PHPWord.png b/Tests/_files/images/PHPWord.png new file mode 100644 index 0000000000000000000000000000000000000000..9b7f4930f4df5a26ac45e3e53cc248dc135edb36 GIT binary patch literal 16712 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 literal 0 HcmV?d00001 diff --git a/Tests/_inc/TestHelperDOCX.php b/Tests/_inc/TestHelperDOCX.php index 2d59dcb6..5f8e51a3 100644 --- a/Tests/_inc/TestHelperDOCX.php +++ b/Tests/_inc/TestHelperDOCX.php @@ -67,4 +67,4 @@ class TestHelperDOCX { return self::$file; } -} \ No newline at end of file +}