12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- /*
- * This file is part of the Lime test framework.
- *
- * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
- * (c) Bernhard Schussek <bernhard.schussek@symfony-project.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- /**
- * Requires a method to be called between X and Y times.
- *
- * The parameters X and Y are passed to the constructor. These values are
- * inclusive, that means that the matcher passes if the method is called
- * exactly X or Y times.
- *
- * @package Lime
- * @author Bernhard Schussek <bernhard.schussek@symfony-project.com>
- * @version SVN: $Id: LimeMockInvocationMatcherBetween.php 23701 2009-11-08 21:23:40Z bschussek $
- * @see LimeMockInvocationMatcherInterface
- */
- class LimeMockInvocationMatcherBetween implements LimeMockInvocationMatcherInterface
- {
- private
- $start = 0,
- $end = 0,
- $actual = 0;
- /**
- * Constructor.
- *
- * @param integer $start The lower limit of accepted invokation counts
- * @param integer $end The upper limit of accepted invokation counts
- */
- public function __construct($start, $end)
- {
- if ($start > $end)
- {
- $this->start = $end;
- $this->end = $start;
- }
- else
- {
- $this->start = $start;
- $this->end = $end;
- }
- }
- /**
- * (non-PHPdoc)
- * @see mock/matcher/LimeMockInvocationMatcherInterface#invoke($invocation)
- */
- public function invoke(LimeMockInvocation $invocation)
- {
- if ($this->actual < $this->end)
- {
- $this->actual++;
- }
- else
- {
- throw new LimeMockInvocationMatcherException(sprintf('should only be called %s', $this->getMessage()));
- }
- }
- /**
- * (non-PHPdoc)
- * @see mock/matcher/LimeMockInvocationMatcherInterface#isInvokable()
- */
- public function isInvokable()
- {
- return $this->actual < $this->end;
- }
- /**
- * (non-PHPdoc)
- * @see mock/matcher/LimeMockInvocationMatcherInterface#isSatisfied()
- */
- public function isSatisfied()
- {
- return $this->actual >= $this->start && $this->actual <= $this->end;
- }
- /**
- * (non-PHPdoc)
- * @see mock/matcher/LimeMockInvocationMatcherInterface#getMessage()
- */
- public function getMessage()
- {
- return sprintf('between %s and % times', $this->start, $this->end);
- }
- }
|