]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/PHPUnit/Framework/Constraint/IsType.php
Added unit tests.
[Github/sugarcrm.git] / tests / PHPUnit / Framework / Constraint / IsType.php
1 <?php
2 /**
3  * PHPUnit
4  *
5  * Copyright (c) 2002-2009, 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  * @category   Testing
38  * @package    PHPUnit
39  * @author     Jan Borsodi <jb@ez.no>
40  * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
41  * @copyright  2002-2009 Sebastian Bergmann <sb@sebastian-bergmann.de>
42  * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
43
44  * @link       http://www.phpunit.de/
45  * @since      File available since Release 3.0.0
46  */
47
48 require_once 'PHPUnit/Framework.php';
49 require_once 'PHPUnit/Util/Filter.php';
50
51 PHPUnit_Util_Filter::addFileToFilter(__FILE__, 'PHPUNIT');
52
53 /**
54  * Constraint that asserts that the value it is evaluated for is of a
55  * specified type.
56  *
57  * The expected value is passed in the constructor.
58  *
59  * @category   Testing
60  * @package    PHPUnit
61  * @author     Jan Borsodi <jb@ez.no>
62  * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
63  * @copyright  2002-2009 Sebastian Bergmann <sb@sebastian-bergmann.de>
64  * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
65  * @version    Release: 3.3.17
66  * @link       http://www.phpunit.de/
67  * @since      Class available since Release 3.0.0
68  */
69 class PHPUnit_Framework_Constraint_IsType extends PHPUnit_Framework_Constraint
70 {
71     const TYPE_ARRAY    = 'array';
72     const TYPE_BOOL     = 'bool';
73     const TYPE_FLOAT    = 'float';
74     const TYPE_INT      = 'int';
75     const TYPE_NULL     = 'null';
76     const TYPE_NUMERIC  = 'numeric';
77     const TYPE_OBJECT   = 'object';
78     const TYPE_RESOURCE = 'resource';
79     const TYPE_STRING   = 'string';
80
81     protected $type;
82
83     public function __construct($type)
84     {
85         switch ($type) {
86             case 'array':
87             case 'boolean':
88             case 'bool':
89             case 'float':
90             case 'integer':
91             case 'int':
92             case 'null':
93             case 'numeric':
94             case 'object':
95             case 'resource':
96             case 'string': {
97               break;
98             }
99
100             default: {
101               throw new InvalidArgumentException(
102                 sprintf(
103                   'Type specified for PHPUnit_Framework_Constraint_IsType <%s> is not a valid type.',
104
105                   $type
106                 )
107               );
108             }
109         }
110
111         $this->type = $type;
112     }
113
114     /**
115      * Evaluates the constraint for parameter $other. Returns TRUE if the
116      * constraint is met, FALSE otherwise.
117      *
118      * @param mixed $other Value or object to evaluate.
119      * @return bool
120      */
121     public function evaluate($other)
122     {
123         switch ($this->type) {
124             case 'numeric': {
125               return is_numeric($other);
126             }
127
128             case 'integer':
129             case 'int': {
130               return is_integer($other);
131             }
132
133             case 'float': {
134               return is_float($other);
135             }
136
137             case 'string': {
138               return is_string($other);
139             }
140
141             case 'boolean':
142             case 'bool': {
143               return is_bool($other);
144             }
145
146             case 'null': {
147               return is_null($other);
148             }
149
150             case 'array': {
151               return is_array($other);
152             }
153
154             case 'object': {
155               return is_object($other);
156             }
157
158             case 'resource': {
159               return is_resource($other);
160             }
161         }
162     }
163
164     /**
165      * Returns a string representation of the constraint.
166      *
167      * @return string
168      */
169     public function toString()
170     {
171         return sprintf(
172           'is of type "%s"',
173
174           $this->type
175         );
176     }
177 }
178 ?>