1: <?php
2: /**
3: * Mockery
4: *
5: * LICENSE
6: *
7: * This source file is subject to the new BSD license that is bundled
8: * with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://github.com/padraic/mockery/blob/master/LICENSE
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to padraic@php.net so we can send you a copy immediately.
14: *
15: * @category Mockery
16: * @package Mockery
17: * @copyright Copyright (c) 2010-2014 Pádraic Brady (http://blog.astrumfutura.com)
18: * @license http://github.com/padraic/mockery/blob/master/LICENSE New BSD License
19: */
20:
21: namespace Mockery\CountValidator;
22: use Mockery;
23:
24: class AtLeast extends CountValidatorAbstract
25: {
26:
27: /**
28: * Checks if the validator can accept an additional nth call
29: *
30: * @param int $n
31: * @return bool
32: */
33: public function isEligible($n)
34: {
35: return true;
36: }
37:
38: /**
39: * Validate the call count against this validator
40: *
41: * @param int $n
42: * @return bool
43: */
44: public function validate($n)
45: {
46: if ($this->_limit > $n) {
47: $exception = new Mockery\Exception\InvalidCountException(
48: 'Method ' . (string) $this->_expectation
49: . ' from ' . $this->_expectation->getMock()->mockery_getName()
50: . ' should be called' . PHP_EOL
51: . ' at least ' . $this->_limit . ' times but called ' . $n
52: . ' times.'
53: );
54: $exception->setMock($this->_expectation->getMock())
55: ->setMethodName((string) $this->_expectation)
56: ->setExpectedCountComparative('>=')
57: ->setExpectedCount($this->_limit)
58: ->setActualCount($n);
59: throw $exception;
60: }
61: }
62:
63: }
64: