You are here

AbstractTest.php in Zircon Profile 8

File

vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/AbstractTest.php
View source
<?php

/*
 * This file is part of Twig.
 *
 * (c) Fabien Potencier
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
abstract class Twig_Tests_Profiler_Dumper_AbstractTest extends PHPUnit_Framework_TestCase {
  protected function getProfile() {
    $profile = $this
      ->getMockBuilder('Twig_Profiler_Profile')
      ->disableOriginalConstructor()
      ->getMock();
    $profile
      ->expects($this
      ->any())
      ->method('isRoot')
      ->will($this
      ->returnValue(true));
    $profile
      ->expects($this
      ->any())
      ->method('getName')
      ->will($this
      ->returnValue('main'));
    $profile
      ->expects($this
      ->any())
      ->method('getDuration')
      ->will($this
      ->returnValue(1));
    $profile
      ->expects($this
      ->any())
      ->method('getMemoryUsage')
      ->will($this
      ->returnValue(0));
    $profile
      ->expects($this
      ->any())
      ->method('getPeakMemoryUsage')
      ->will($this
      ->returnValue(0));
    $subProfiles = array(
      $this
        ->getIndexProfile(array(
        $this
          ->getEmbeddedBlockProfile(),
        $this
          ->getEmbeddedTemplateProfile(array(
          $this
            ->getIncludedTemplateProfile(),
        )),
        $this
          ->getMacroProfile(),
        $this
          ->getEmbeddedTemplateProfile(array(
          $this
            ->getIncludedTemplateProfile(),
        )),
      )),
    );
    $profile
      ->expects($this
      ->any())
      ->method('getProfiles')
      ->will($this
      ->returnValue($subProfiles));
    $profile
      ->expects($this
      ->any())
      ->method('getIterator')
      ->will($this
      ->returnValue(new ArrayIterator($subProfiles)));
    return $profile;
  }
  private function getIndexProfile(array $subProfiles = array()) {
    return $this
      ->generateProfile('main', 1, true, 'template', 'index.twig', $subProfiles);
  }
  private function getEmbeddedBlockProfile(array $subProfiles = array()) {
    return $this
      ->generateProfile('body', 0.0001, false, 'block', 'embedded.twig', $subProfiles);
  }
  private function getEmbeddedTemplateProfile(array $subProfiles = array()) {
    return $this
      ->generateProfile('main', 0.0001, true, 'template', 'embedded.twig', $subProfiles);
  }
  private function getIncludedTemplateProfile(array $subProfiles = array()) {
    return $this
      ->generateProfile('main', 0.0001, true, 'template', 'included.twig', $subProfiles);
  }
  private function getMacroProfile(array $subProfiles = array()) {
    return $this
      ->generateProfile('foo', 0.0001, false, 'macro', 'index.twig', $subProfiles);
  }

  /**
   * @param string $name
   * @param float  $duration
   * @param bool   $isTemplate
   * @param string $type
   * @param string $templateName
   * @param array  $subProfiles
   *
   * @return Twig_Profiler_Profile
   */
  private function generateProfile($name, $duration, $isTemplate, $type, $templateName, array $subProfiles = array()) {
    $profile = $this
      ->getMockBuilder('Twig_Profiler_Profile')
      ->disableOriginalConstructor()
      ->getMock();
    $profile
      ->expects($this
      ->any())
      ->method('isRoot')
      ->will($this
      ->returnValue(false));
    $profile
      ->expects($this
      ->any())
      ->method('getName')
      ->will($this
      ->returnValue($name));
    $profile
      ->expects($this
      ->any())
      ->method('getDuration')
      ->will($this
      ->returnValue($duration));
    $profile
      ->expects($this
      ->any())
      ->method('getMemoryUsage')
      ->will($this
      ->returnValue(0));
    $profile
      ->expects($this
      ->any())
      ->method('getPeakMemoryUsage')
      ->will($this
      ->returnValue(0));
    $profile
      ->expects($this
      ->any())
      ->method('isTemplate')
      ->will($this
      ->returnValue($isTemplate));
    $profile
      ->expects($this
      ->any())
      ->method('getType')
      ->will($this
      ->returnValue($type));
    $profile
      ->expects($this
      ->any())
      ->method('getTemplate')
      ->will($this
      ->returnValue($templateName));
    $profile
      ->expects($this
      ->any())
      ->method('getProfiles')
      ->will($this
      ->returnValue($subProfiles));
    $profile
      ->expects($this
      ->any())
      ->method('getIterator')
      ->will($this
      ->returnValue(new ArrayIterator($subProfiles)));
    return $profile;
  }

}