]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/PHPUnit/PHPUnit/Framework/MockObject/MockBuilder.php
Release 6.2.0
[Github/sugarcrm.git] / tests / PHPUnit / PHPUnit / Framework / MockObject / MockBuilder.php
1 <?php
2 /**
3  * PHPUnit
4  *
5  * Copyright (c) 2010-2011, Sebastian Bergmann <sb@sebastian-bergmann.de>.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  *   * Redistributions of source code must retain the above copyright
13  *     notice, this list of conditions and the following disclaimer.
14  *
15  *   * Redistributions in binary form must reproduce the above copyright
16  *     notice, this list of conditions and the following disclaimer in
17  *     the documentation and/or other materials provided with the
18  *     distribution.
19  *
20  *   * Neither the name of Sebastian Bergmann nor the names of his
21  *     contributors may be used to endorse or promote products derived
22  *     from this software without specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35  * POSSIBILITY OF SUCH DAMAGE.
36  *
37  * @package    PHPUnit_MockObject
38  * @author     Giorgio Sironi <piccoloprincipeazzurro@gmail.com>
39  * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
40  * @copyright  2010-2011 Sebastian Bergmann <sb@sebastian-bergmann.de>
41  * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
42  * @link       http://github.com/sebastianbergmann/phpunit-mock-objects
43  * @since      File available since Release 1.0.0
44  */
45
46 /**
47  * Implementation of the Builder pattern for Mock objects.
48  *
49  * @package    PHPUnit_MockObject
50  * @author     Giorgio Sironi <piccoloprincipeazzurro@gmail.com>
51  * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
52  * @copyright  2010-2011 Sebastian Bergmann <sb@sebastian-bergmann.de>
53  * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
54  * @link       http://github.com/sebastianbergmann/phpunit-mock-objects
55  * @since      File available since Release 1.0.0
56  */
57 class PHPUnit_Framework_MockObject_MockBuilder
58 {
59     /**
60      * @var PHPUnit_Framework_TestCase
61      */
62     protected $testCase;
63
64     /**
65      * @var string
66      */
67     protected $className;
68
69     /**
70      * @var array
71      */
72     protected $methods = array();
73
74     /**
75      * @var string
76      */
77     protected $mockClassName = '';
78
79     /**
80      * @var array
81      */
82     protected $constructorArgs = array();
83
84     /**
85      * @var boolean
86      */
87     protected $originalConstructor = TRUE;
88
89     /**
90      * @var boolean
91      */
92     protected $originalClone = TRUE;
93
94     /**
95      * @var boolean
96      */
97     protected $autoload = TRUE;
98
99     /**
100      * @param PHPUnit_Framework_TestCase
101      * @param string
102      */
103     public function __construct(PHPUnit_Framework_TestCase $testCase, $className)
104     {
105         $this->testCase  = $testCase;
106         $this->className = $className;
107     }
108
109     /**
110      * Creates a mock object using a fluent interface.
111      *
112      * @return PHPUnit_Framework_MockObject_MockObject
113      */
114     public function getMock()
115     {
116         return $this->testCase->getMock(
117           $this->className,
118           $this->methods,
119           $this->constructorArgs,
120           $this->mockClassName,
121           $this->originalConstructor,
122           $this->originalClone,
123           $this->autoload
124         );
125     }
126
127     /**
128      * Creates a mock object for an abstract class using a fluent interface.
129      *
130      * @return PHPUnit_Framework_MockObject_MockObject
131      */
132     public function getMockForAbstractClass()
133     {
134         return $this->testCase->getMockForAbstractClass(
135           $this->className,
136           $this->constructorArgs,
137           $this->mockClassName,
138           $this->originalConstructor,
139           $this->originalClone,
140           $this->autoload
141         );
142     }
143
144     /**
145      * Specifies the subset of methods to mock. Default is to mock all of them.
146      *
147      * @param  array $methods
148      * @return PHPUnit_Framework_MockObject_MockBuilder
149      */
150     public function setMethods(array $methods)
151     {
152         $this->methods = $methods;
153
154         return $this;
155     }
156
157     /**
158      * Specifies the arguments for the constructor.
159      *
160      * @param  array $args
161      * @return PHPUnit_Framework_MockObject_MockBuilder
162      */
163     public function setConstructorArgs(array $args)
164     {
165         $this->constructorArgs = $args;
166
167         return $this;
168     }
169
170     /**
171      * Specifies the name for the mock class.
172      *
173      * @param string $name
174      * @return PHPUnit_Framework_MockObject_MockBuilder
175      */
176     public function setMockClassName($name)
177     {
178         $this->mockClassName = $name;
179
180         return $this;
181     }
182
183     /**
184      * Suppresses the invocation of the original constructor.
185      *
186      * @return PHPUnit_Framework_MockObject_MockBuilder
187      */
188     public function disableOriginalConstructor()
189     {
190         $this->originalConstructor = FALSE;
191
192         return $this;
193     } 
194
195     /**
196      * Suppresses the invocation of the original clone constructor.
197      *
198      * @return PHPUnit_Framework_MockObject_MockBuilder
199      */
200     public function disableOriginalClone()
201     {
202         $this->originalClone = FALSE;
203
204         return $this;
205     } 
206
207     /**
208      * Suppresses the use of class autoloading while creating the mock object.
209      *
210      * @return PHPUnit_Framework_MockObject_MockBuilder
211      */
212     public function disableAutoload()
213     {
214         $this->autoload = FALSE;
215
216         return $this;
217     }
218 }