InArrayTest.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <?php
  2. /**
  3. * Zend Framework
  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://framework.zend.com/license/new-bsd
  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 license@zend.com so we can send you a copy immediately.
  14. *
  15. * @category Zend
  16. * @package Zend_Validate
  17. * @subpackage UnitTests
  18. * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
  19. * @license http://framework.zend.com/license/new-bsd New BSD License
  20. * @version $Id$
  21. */
  22. /**
  23. * @see Zend_Validate_InArray
  24. */
  25. require_once 'Zend/Validate/InArray.php';
  26. /**
  27. * @category Zend
  28. * @package Zend_Validate
  29. * @subpackage UnitTests
  30. * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
  31. * @license http://framework.zend.com/license/new-bsd New BSD License
  32. * @group Zend_Validate
  33. */
  34. class Zend_Validate_InArrayTest extends PHPUnit_Framework_TestCase
  35. {
  36. /**
  37. * Ensures that the validator follows expected behavior
  38. *
  39. * @return void
  40. */
  41. public function testBasic()
  42. {
  43. $validator = new Zend_Validate_InArray(array(1, 'a', 2.3));
  44. $this->assertTrue($validator->isValid(1));
  45. $this->assertTrue($validator->isValid(1.0));
  46. $this->assertTrue($validator->isValid('1'));
  47. $this->assertTrue($validator->isValid('a'));
  48. $this->assertFalse($validator->isValid('A'));
  49. $this->assertTrue($validator->isValid(2.3));
  50. $this->assertTrue($validator->isValid(2.3e0));
  51. }
  52. /**
  53. * Ensures that getMessages() returns expected default value
  54. *
  55. * @return void
  56. */
  57. public function testGetMessages()
  58. {
  59. $validator = new Zend_Validate_InArray(array(1, 2, 3));
  60. $this->assertEquals(array(), $validator->getMessages());
  61. }
  62. /**
  63. * Ensures that getHaystack() returns expected value
  64. *
  65. * @return void
  66. */
  67. public function testGetHaystack()
  68. {
  69. $validator = new Zend_Validate_InArray(array(1, 2, 3));
  70. $this->assertEquals(array(1, 2, 3), $validator->getHaystack());
  71. }
  72. /**
  73. * Ensures that getStrict() returns expected default value
  74. *
  75. * @return void
  76. */
  77. public function testGetStrict()
  78. {
  79. $validator = new Zend_Validate_InArray(array(1, 2, 3));
  80. $this->assertFalse($validator->getStrict());
  81. }
  82. public function testGivingOptionsAsArrayAtInitiation()
  83. {
  84. $validator = new Zend_Validate_InArray(
  85. array('haystack' =>
  86. array(1, 'a', 2.3)
  87. )
  88. );
  89. $this->assertTrue($validator->isValid(1));
  90. $this->assertTrue($validator->isValid(1.0));
  91. $this->assertTrue($validator->isValid('1'));
  92. $this->assertTrue($validator->isValid('a'));
  93. $this->assertFalse($validator->isValid('A'));
  94. $this->assertTrue($validator->isValid(2.3));
  95. $this->assertTrue($validator->isValid(2.3e0));
  96. }
  97. public function testSettingANewHaystack()
  98. {
  99. $validator = new Zend_Validate_InArray(
  100. array('haystack' =>
  101. array('test', 0, 'A')
  102. )
  103. );
  104. $this->assertTrue($validator->isValid('A'));
  105. $validator->setHaystack(array(1, 'a', 2.3));
  106. $this->assertTrue($validator->isValid(1));
  107. $this->assertTrue($validator->isValid(1.0));
  108. $this->assertTrue($validator->isValid('1'));
  109. $this->assertTrue($validator->isValid('a'));
  110. $this->assertFalse($validator->isValid('A'));
  111. $this->assertTrue($validator->isValid(2.3));
  112. $this->assertTrue($validator->isValid(2.3e0));
  113. }
  114. public function testSettingNewStrictMode()
  115. {
  116. $validator = new Zend_Validate_InArray(array(1, 2, 3));
  117. $this->assertFalse($validator->getStrict());
  118. $this->assertTrue($validator->isValid('1'));
  119. $this->assertTrue($validator->isValid(1));
  120. $validator->setStrict(true);
  121. $this->assertTrue($validator->getStrict());
  122. $this->assertFalse($validator->isValid('1'));
  123. $this->assertTrue($validator->isValid(1));
  124. }
  125. public function testSettingStrictViaInitiation()
  126. {
  127. $validator = new Zend_Validate_InArray(
  128. array(
  129. 'haystack' => array('test', 0, 'A'),
  130. 'strict' => true
  131. )
  132. );
  133. $this->assertTrue($validator->getStrict());
  134. }
  135. public function testGettingRecursiveOption()
  136. {
  137. $validator = new Zend_Validate_InArray(array(1, 2, 3));
  138. $this->assertFalse($validator->getRecursive());
  139. $validator->setRecursive(true);
  140. $this->assertTrue($validator->getRecursive());
  141. }
  142. public function testSettingRecursiveViaInitiation()
  143. {
  144. $validator = new Zend_Validate_InArray(
  145. array(
  146. 'haystack' => array('test', 0, 'A'),
  147. 'recursive' => true
  148. )
  149. );
  150. $this->assertTrue($validator->getRecursive());
  151. }
  152. public function testRecursiveDetection()
  153. {
  154. $validator = new Zend_Validate_InArray(
  155. array(
  156. 'haystack' =>
  157. array(
  158. 'firstDimension' => array('test', 0, 'A'),
  159. 'secondDimension' => array('value', 2, 'a')),
  160. 'recursive' => false
  161. )
  162. );
  163. $this->assertFalse($validator->isValid('A'));
  164. $validator->setRecursive(true);
  165. $this->assertTrue($validator->isValid('A'));
  166. }
  167. public function testRecursiveStandalone()
  168. {
  169. $validator = new Zend_Validate_InArray(
  170. array(
  171. 'firstDimension' => array('test', 0, 'A'),
  172. 'secondDimension' => array('value', 2, 'a')
  173. )
  174. );
  175. $this->assertFalse($validator->isValid('A'));
  176. $validator->setRecursive(true);
  177. $this->assertTrue($validator->isValid('A'));
  178. }
  179. /**
  180. * @group GH-365
  181. */
  182. public function testMultidimensionalArrayNotFound()
  183. {
  184. $input = array(
  185. array('x'),
  186. array('y'),
  187. );
  188. $validator = new Zend_Validate_InArray(array('a'));
  189. $this->assertFalse($validator->isValid($input));
  190. }
  191. /**
  192. * @group GH-365
  193. */
  194. public function testErrorMessageWithArrayValue()
  195. {
  196. $input = array(
  197. array('x'),
  198. array('y'),
  199. );
  200. $validator = new Zend_Validate_InArray(array('a'));
  201. $validator->isValid($input);
  202. $messages = $validator->getMessages();
  203. $this->assertEquals(
  204. "'x, y' was not found in the haystack",
  205. current($messages)
  206. );
  207. }
  208. }