public function testTransition()
{
$value = rand(1000, 5000);
$oTransition = new Transition();
$phpPresentation = new PhpPresentation();
$oSlide = $phpPresentation->getActiveSlide();
$element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'stylePage0\']/style:drawing-page-properties';
$pres = TestHelperDOCX::getDocument($phpPresentation, 'ODPresentation');
$this->assertTrue($pres->elementExists($element, 'content.xml'));
$this->assertFalse($pres->attributeElementExists($element, 'presentation:duration', 'content.xml'));
$oTransition->setTimeTrigger(true, $value);
$oSlide->setTransition($oTransition);
$pres = TestHelperDOCX::getDocument($phpPresentation, 'ODPresentation');
$this->assertTrue($pres->elementExists($element, 'content.xml'));
$this->assertTrue($pres->attributeElementExists($element, 'presentation:duration', 'content.xml'));
$this->assertStringStartsWith('PT', $pres->getElementAttribute($element, 'presentation:duration', 'content.xml'));
$this->assertStringEndsWith('S', $pres->getElementAttribute($element, 'presentation:duration', 'content.xml'));
$this->assertContains(number_format($value / 1000, 6, '.', ''), $pres->getElementAttribute($element, 'presentation:duration', 'content.xml'));
$this->assertContains('automatic', $pres->getElementAttribute($element, 'presentation:transition-type', 'content.xml'));
$oTransition->setSpeed(Transition::SPEED_FAST);
$pres = TestHelperDOCX::getDocument($phpPresentation, 'ODPresentation');
$this->assertContains('fast', $pres->getElementAttribute($element, 'presentation:transition-speed', 'content.xml'));
$oTransition->setSpeed(Transition::SPEED_MEDIUM);
$pres = TestHelperDOCX::getDocument($phpPresentation, 'ODPresentation');
$this->assertContains('medium', $pres->getElementAttribute($element, 'presentation:transition-speed', 'content.xml'));
$oTransition->setSpeed(Transition::SPEED_SLOW);
$pres = TestHelperDOCX::getDocument($phpPresentation, 'ODPresentation');
$this->assertContains('slow', $pres->getElementAttribute($element, 'presentation:transition-speed', 'content.xml'));
$rcTransition = new \ReflectionClass('PhpOffice\\PhpPresentation\\Slide\\Transition');
$arrayConstants = $rcTransition->getConstants();
foreach ($arrayConstants as $key => $value) {
if (strpos($key, 'TRANSITION_') !== 0) {
continue;
}
$oTransition->setTransitionType($rcTransition->getConstant($key));
$oSlide->setTransition($oTransition);
$pres = TestHelperDOCX::getDocument($phpPresentation, 'ODPresentation');
switch ($key) {
case 'TRANSITION_BLINDS_HORIZONTAL':
$this->assertContains('horizontal-stripes', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_BLINDS_VERTICAL':
$this->assertContains('vertical-stripes', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_CHECKER_HORIZONTAL':
$this->assertContains('horizontal-checkerboard', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_CHECKER_VERTICAL':
$this->assertContains('vertical-checkerboard', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_CIRCLE_HORIZONTAL':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_CIRCLE_VERTICAL':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_COMB_HORIZONTAL':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_COMB_VERTICAL':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_COVER_DOWN':
$this->assertContains('uncover-to-bottom', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_COVER_LEFT':
$this->assertContains('uncover-to-left', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_COVER_LEFT_DOWN':
$this->assertContains('uncover-to-lowerleft', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_COVER_LEFT_UP':
$this->assertContains('uncover-to-upperleft', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_COVER_RIGHT':
$this->assertContains('uncover-to-right', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_COVER_RIGHT_DOWN':
$this->assertContains('uncover-to-lowerright', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_COVER_RIGHT_UP':
$this->assertContains('uncover-to-upperright', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_COVER_UP':
$this->assertContains('uncover-to-top', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_CUT':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_DIAMOND':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_DISSOLVE':
$this->assertContains('dissolve', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_FADE':
$this->assertContains('fade-from-center', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_NEWSFLASH':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_PLUS':
$this->assertContains('close', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_PULL_DOWN':
$this->assertContains('stretch-from-bottom', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_PULL_LEFT':
$this->assertContains('stretch-from-left', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_PULL_RIGHT':
$this->assertContains('stretch-from-right', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_PULL_UP':
$this->assertContains('stretch-from-top', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_PUSH_DOWN':
$this->assertContains('roll-from-bottom', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_PUSH_LEFT':
$this->assertContains('roll-from-left', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_PUSH_RIGHT':
$this->assertContains('roll-from-right', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_PUSH_UP':
$this->assertContains('roll-from-top', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_RANDOM':
$this->assertContains('random', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_RANDOMBAR_HORIZONTAL':
$this->assertContains('horizontal-lines', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_RANDOMBAR_VERTICAL':
$this->assertContains('vertical-lines', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_SPLIT_IN_HORIZONTAL':
$this->assertContains('close-horizontal', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_SPLIT_OUT_HORIZONTAL':
$this->assertContains('open-horizontal', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_SPLIT_IN_VERTICAL':
$this->assertContains('close-vertical', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_SPLIT_OUT_VERTICAL':
$this->assertContains('open-vertical', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_STRIPS_LEFT_DOWN':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_STRIPS_LEFT_UP':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_STRIPS_RIGHT_DOWN':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_STRIPS_RIGHT_UP':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_WEDGE':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_WIPE_DOWN':
$this->assertContains('fade-from-bottom', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_WIPE_LEFT':
$this->assertContains('fade-from-left', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_WIPE_RIGHT':
$this->assertContains('fade-from-right', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_WIPE_UP':
$this->assertContains('fade-from-top', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_ZOOM_IN':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
case 'TRANSITION_ZOOM_OUT':
$this->assertContains('none', $pres->getElementAttribute($element, 'presentation:transition-style', 'content.xml'));
break;
}
}
$oTransition->setTimeTrigger(false);
$oTransition->setManualTrigger(true);
$pres = TestHelperDOCX::getDocument($phpPresentation, 'ODPresentation');
$this->assertContains('manual', $pres->getElementAttribute($element, 'presentation:transition-type', 'content.xml'));
}