/vendor/zendframework/zendframework/tests/ZendTest/Validator/NotEmptyTest.php

https://bitbucket.org/pcelta/zf2 · PHP · 608 lines · 441 code · 35 blank · 132 comment · 0 complexity · 082a91e2095a04dc274b456ed55052ef MD5 · raw file

  1. <?php
  2. /**
  3. * Zend Framework (http://framework.zend.com/)
  4. *
  5. * @link http://github.com/zendframework/zf2 for the canonical source repository
  6. * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  7. * @license http://framework.zend.com/license/new-bsd New BSD License
  8. * @package Zend_Validator
  9. */
  10. namespace ZendTest\Validator;
  11. use stdClass;
  12. use Zend\Validator\NotEmpty;
  13. /**
  14. * @category Zend
  15. * @package Zend_Validator
  16. * @subpackage UnitTests
  17. * @group Zend_Validator
  18. */
  19. class NotEmptyTest extends \PHPUnit_Framework_TestCase
  20. {
  21. /**
  22. * @var NotEmpty
  23. */
  24. protected $validator;
  25. public function setUp()
  26. {
  27. $this->validator = new NotEmpty();
  28. }
  29. /**
  30. * Ensures that the validator follows expected behavior
  31. *
  32. * ZF-6708 introduces a change for validating integer 0; it is a valid
  33. * integer value. '0' is also valid.
  34. *
  35. * @group ZF-6708
  36. * @return void
  37. */
  38. public function testBasic()
  39. {
  40. $valuesExpected = array(
  41. array('word', true),
  42. array('', false),
  43. array(' ', false),
  44. array(' word ', true),
  45. array('0', true),
  46. array(1, true),
  47. array(0, true),
  48. array(true, true),
  49. array(false, false),
  50. array(null, false),
  51. array(array(), false),
  52. array(array(5), true),
  53. );
  54. foreach ($valuesExpected as $i => $element) {
  55. $this->assertEquals($element[1], $this->validator->isValid($element[0]),
  56. "Failed test #$i");
  57. }
  58. }
  59. /**
  60. * Ensures that the validator follows expected behavior
  61. *
  62. * @return void
  63. */
  64. public function testOnlyBoolean()
  65. {
  66. $this->validator->setType(NotEmpty::BOOLEAN);
  67. $this->assertFalse($this->validator->isValid(false));
  68. $this->assertTrue($this->validator->isValid(true));
  69. $this->assertTrue($this->validator->isValid(0));
  70. $this->assertTrue($this->validator->isValid(1));
  71. $this->assertTrue($this->validator->isValid(0.0));
  72. $this->assertTrue($this->validator->isValid(1.0));
  73. $this->assertTrue($this->validator->isValid(''));
  74. $this->assertTrue($this->validator->isValid('abc'));
  75. $this->assertTrue($this->validator->isValid('0'));
  76. $this->assertTrue($this->validator->isValid('1'));
  77. $this->assertTrue($this->validator->isValid(array()));
  78. $this->assertTrue($this->validator->isValid(array('xxx')));
  79. $this->assertTrue($this->validator->isValid(null));
  80. }
  81. /**
  82. * Ensures that the validator follows expected behavior
  83. *
  84. * @return void
  85. */
  86. public function testOnlyInteger()
  87. {
  88. $this->validator->setType(NotEmpty::INTEGER);
  89. $this->assertTrue($this->validator->isValid(false));
  90. $this->assertTrue($this->validator->isValid(true));
  91. $this->assertFalse($this->validator->isValid(0));
  92. $this->assertTrue($this->validator->isValid(1));
  93. $this->assertTrue($this->validator->isValid(0.0));
  94. $this->assertTrue($this->validator->isValid(1.0));
  95. $this->assertTrue($this->validator->isValid(''));
  96. $this->assertTrue($this->validator->isValid('abc'));
  97. $this->assertTrue($this->validator->isValid('0'));
  98. $this->assertTrue($this->validator->isValid('1'));
  99. $this->assertTrue($this->validator->isValid(array()));
  100. $this->assertTrue($this->validator->isValid(array('xxx')));
  101. $this->assertTrue($this->validator->isValid(null));
  102. }
  103. /**
  104. * Ensures that the validator follows expected behavior
  105. *
  106. * @return void
  107. */
  108. public function testOnlyFloat()
  109. {
  110. $this->validator->setType(NotEmpty::FLOAT);
  111. $this->assertTrue($this->validator->isValid(false));
  112. $this->assertTrue($this->validator->isValid(true));
  113. $this->assertTrue($this->validator->isValid(0));
  114. $this->assertTrue($this->validator->isValid(1));
  115. $this->assertFalse($this->validator->isValid(0.0));
  116. $this->assertTrue($this->validator->isValid(1.0));
  117. $this->assertTrue($this->validator->isValid(''));
  118. $this->assertTrue($this->validator->isValid('abc'));
  119. $this->assertTrue($this->validator->isValid('0'));
  120. $this->assertTrue($this->validator->isValid('1'));
  121. $this->assertTrue($this->validator->isValid(array()));
  122. $this->assertTrue($this->validator->isValid(array('xxx')));
  123. $this->assertTrue($this->validator->isValid(null));
  124. }
  125. /**
  126. * Ensures that the validator follows expected behavior
  127. *
  128. * @return void
  129. */
  130. public function testOnlyString()
  131. {
  132. $this->validator->setType(NotEmpty::STRING);
  133. $this->assertTrue($this->validator->isValid(false));
  134. $this->assertTrue($this->validator->isValid(true));
  135. $this->assertTrue($this->validator->isValid(0));
  136. $this->assertTrue($this->validator->isValid(1));
  137. $this->assertTrue($this->validator->isValid(0.0));
  138. $this->assertTrue($this->validator->isValid(1.0));
  139. $this->assertFalse($this->validator->isValid(''));
  140. $this->assertTrue($this->validator->isValid('abc'));
  141. $this->assertTrue($this->validator->isValid('0'));
  142. $this->assertTrue($this->validator->isValid('1'));
  143. $this->assertTrue($this->validator->isValid(array()));
  144. $this->assertTrue($this->validator->isValid(array('xxx')));
  145. $this->assertTrue($this->validator->isValid(null));
  146. }
  147. /**
  148. * Ensures that the validator follows expected behavior
  149. *
  150. * @return void
  151. */
  152. public function testOnlyZero()
  153. {
  154. $this->validator->setType(NotEmpty::ZERO);
  155. $this->assertTrue($this->validator->isValid(false));
  156. $this->assertTrue($this->validator->isValid(true));
  157. $this->assertTrue($this->validator->isValid(0));
  158. $this->assertTrue($this->validator->isValid(1));
  159. $this->assertTrue($this->validator->isValid(0.0));
  160. $this->assertTrue($this->validator->isValid(1.0));
  161. $this->assertTrue($this->validator->isValid(''));
  162. $this->assertTrue($this->validator->isValid('abc'));
  163. $this->assertFalse($this->validator->isValid('0'));
  164. $this->assertTrue($this->validator->isValid('1'));
  165. $this->assertTrue($this->validator->isValid(array()));
  166. $this->assertTrue($this->validator->isValid(array('xxx')));
  167. $this->assertTrue($this->validator->isValid(null));
  168. }
  169. /**
  170. * Ensures that the validator follows expected behavior
  171. *
  172. * @return void
  173. */
  174. public function testOnlyArray()
  175. {
  176. $this->validator->setType(NotEmpty::EMPTY_ARRAY);
  177. $this->assertTrue($this->validator->isValid(false));
  178. $this->assertTrue($this->validator->isValid(true));
  179. $this->assertTrue($this->validator->isValid(0));
  180. $this->assertTrue($this->validator->isValid(1));
  181. $this->assertTrue($this->validator->isValid(0.0));
  182. $this->assertTrue($this->validator->isValid(1.0));
  183. $this->assertTrue($this->validator->isValid(''));
  184. $this->assertTrue($this->validator->isValid('abc'));
  185. $this->assertTrue($this->validator->isValid('0'));
  186. $this->assertTrue($this->validator->isValid('1'));
  187. $this->assertFalse($this->validator->isValid(array()));
  188. $this->assertTrue($this->validator->isValid(array('xxx')));
  189. $this->assertTrue($this->validator->isValid(null));
  190. }
  191. /**
  192. * Ensures that the validator follows expected behavior
  193. *
  194. * @return void
  195. */
  196. public function testOnlyNull()
  197. {
  198. $this->validator->setType(NotEmpty::NULL);
  199. $this->assertTrue($this->validator->isValid(false));
  200. $this->assertTrue($this->validator->isValid(true));
  201. $this->assertTrue($this->validator->isValid(0));
  202. $this->assertTrue($this->validator->isValid(1));
  203. $this->assertTrue($this->validator->isValid(0.0));
  204. $this->assertTrue($this->validator->isValid(1.0));
  205. $this->assertTrue($this->validator->isValid(''));
  206. $this->assertTrue($this->validator->isValid('abc'));
  207. $this->assertTrue($this->validator->isValid('0'));
  208. $this->assertTrue($this->validator->isValid('1'));
  209. $this->assertTrue($this->validator->isValid(array()));
  210. $this->assertTrue($this->validator->isValid(array('xxx')));
  211. $this->assertFalse($this->validator->isValid(null));
  212. }
  213. /**
  214. * Ensures that the validator follows expected behavior
  215. *
  216. * @return void
  217. */
  218. public function testOnlyPHP()
  219. {
  220. $this->validator->setType(NotEmpty::PHP);
  221. $this->assertFalse($this->validator->isValid(false));
  222. $this->assertTrue($this->validator->isValid(true));
  223. $this->assertFalse($this->validator->isValid(0));
  224. $this->assertTrue($this->validator->isValid(1));
  225. $this->assertFalse($this->validator->isValid(0.0));
  226. $this->assertTrue($this->validator->isValid(1.0));
  227. $this->assertFalse($this->validator->isValid(''));
  228. $this->assertTrue($this->validator->isValid('abc'));
  229. $this->assertFalse($this->validator->isValid('0'));
  230. $this->assertTrue($this->validator->isValid('1'));
  231. $this->assertFalse($this->validator->isValid(array()));
  232. $this->assertTrue($this->validator->isValid(array('xxx')));
  233. $this->assertFalse($this->validator->isValid(null));
  234. }
  235. /**
  236. * Ensures that the validator follows expected behavior
  237. *
  238. * @return void
  239. */
  240. public function testOnlySpace()
  241. {
  242. $this->validator->setType(NotEmpty::SPACE);
  243. $this->assertTrue($this->validator->isValid(false));
  244. $this->assertTrue($this->validator->isValid(true));
  245. $this->assertTrue($this->validator->isValid(0));
  246. $this->assertTrue($this->validator->isValid(1));
  247. $this->assertTrue($this->validator->isValid(0.0));
  248. $this->assertTrue($this->validator->isValid(1.0));
  249. $this->assertTrue($this->validator->isValid(''));
  250. $this->assertTrue($this->validator->isValid('abc'));
  251. $this->assertTrue($this->validator->isValid('0'));
  252. $this->assertTrue($this->validator->isValid('1'));
  253. $this->assertTrue($this->validator->isValid(array()));
  254. $this->assertTrue($this->validator->isValid(array('xxx')));
  255. $this->assertTrue($this->validator->isValid(null));
  256. }
  257. /**
  258. * Ensures that the validator follows expected behavior
  259. *
  260. * @return void
  261. */
  262. public function testOnlyAll()
  263. {
  264. $this->validator->setType(NotEmpty::ALL);
  265. $this->assertFalse($this->validator->isValid(false));
  266. $this->assertTrue($this->validator->isValid(true));
  267. $this->assertFalse($this->validator->isValid(0));
  268. $this->assertTrue($this->validator->isValid(1));
  269. $this->assertFalse($this->validator->isValid(0.0));
  270. $this->assertTrue($this->validator->isValid(1.0));
  271. $this->assertFalse($this->validator->isValid(''));
  272. $this->assertTrue($this->validator->isValid('abc'));
  273. $this->assertFalse($this->validator->isValid('0'));
  274. $this->assertTrue($this->validator->isValid('1'));
  275. $this->assertFalse($this->validator->isValid(array()));
  276. $this->assertTrue($this->validator->isValid(array('xxx')));
  277. $this->assertFalse($this->validator->isValid(null));
  278. }
  279. /**
  280. * Ensures that the validator follows expected behavior
  281. *
  282. * @return void
  283. */
  284. public function testArrayConstantNotation()
  285. {
  286. $filter = new NotEmpty(
  287. array(
  288. 'type' => array(
  289. NotEmpty::ZERO,
  290. NotEmpty::STRING,
  291. NotEmpty::BOOLEAN
  292. )
  293. )
  294. );
  295. $this->assertFalse($filter->isValid(false));
  296. $this->assertTrue($filter->isValid(true));
  297. $this->assertTrue($filter->isValid(0));
  298. $this->assertTrue($filter->isValid(1));
  299. $this->assertTrue($filter->isValid(0.0));
  300. $this->assertTrue($filter->isValid(1.0));
  301. $this->assertFalse($filter->isValid(''));
  302. $this->assertTrue($filter->isValid('abc'));
  303. $this->assertFalse($filter->isValid('0'));
  304. $this->assertTrue($filter->isValid('1'));
  305. $this->assertTrue($filter->isValid(array()));
  306. $this->assertTrue($filter->isValid(array('xxx')));
  307. $this->assertTrue($filter->isValid(null));
  308. }
  309. /**
  310. * Ensures that the validator follows expected behavior
  311. *
  312. * @return void
  313. */
  314. public function testArrayConfigNotation()
  315. {
  316. $filter = new NotEmpty(
  317. array(
  318. 'type' => array(
  319. NotEmpty::ZERO,
  320. NotEmpty::STRING,
  321. NotEmpty::BOOLEAN),
  322. 'test' => false
  323. )
  324. );
  325. $this->assertFalse($filter->isValid(false));
  326. $this->assertTrue($filter->isValid(true));
  327. $this->assertTrue($filter->isValid(0));
  328. $this->assertTrue($filter->isValid(1));
  329. $this->assertTrue($filter->isValid(0.0));
  330. $this->assertTrue($filter->isValid(1.0));
  331. $this->assertFalse($filter->isValid(''));
  332. $this->assertTrue($filter->isValid('abc'));
  333. $this->assertFalse($filter->isValid('0'));
  334. $this->assertTrue($filter->isValid('1'));
  335. $this->assertTrue($filter->isValid(array()));
  336. $this->assertTrue($filter->isValid(array('xxx')));
  337. $this->assertTrue($filter->isValid(null));
  338. }
  339. /**
  340. * Ensures that the validator follows expected behavior
  341. *
  342. * @return void
  343. */
  344. public function testMultiConstantNotation()
  345. {
  346. $filter = new NotEmpty(
  347. NotEmpty::ZERO + NotEmpty::STRING + NotEmpty::BOOLEAN
  348. );
  349. $this->assertFalse($filter->isValid(false));
  350. $this->assertTrue($filter->isValid(true));
  351. $this->assertTrue($filter->isValid(0));
  352. $this->assertTrue($filter->isValid(1));
  353. $this->assertTrue($filter->isValid(0.0));
  354. $this->assertTrue($filter->isValid(1.0));
  355. $this->assertFalse($filter->isValid(''));
  356. $this->assertTrue($filter->isValid('abc'));
  357. $this->assertFalse($filter->isValid('0'));
  358. $this->assertTrue($filter->isValid('1'));
  359. $this->assertTrue($filter->isValid(array()));
  360. $this->assertTrue($filter->isValid(array('xxx')));
  361. $this->assertTrue($filter->isValid(null));
  362. }
  363. /**
  364. * Ensures that the validator follows expected behavior
  365. *
  366. * @return void
  367. */
  368. public function testStringNotation()
  369. {
  370. $filter = new NotEmpty(
  371. array(
  372. 'type' => array('zero', 'string', 'boolean')
  373. )
  374. );
  375. $this->assertFalse($filter->isValid(false));
  376. $this->assertTrue($filter->isValid(true));
  377. $this->assertTrue($filter->isValid(0));
  378. $this->assertTrue($filter->isValid(1));
  379. $this->assertTrue($filter->isValid(0.0));
  380. $this->assertTrue($filter->isValid(1.0));
  381. $this->assertFalse($filter->isValid(''));
  382. $this->assertTrue($filter->isValid('abc'));
  383. $this->assertFalse($filter->isValid('0'));
  384. $this->assertTrue($filter->isValid('1'));
  385. $this->assertTrue($filter->isValid(array()));
  386. $this->assertTrue($filter->isValid(array('xxx')));
  387. $this->assertTrue($filter->isValid(null));
  388. }
  389. /**
  390. * Ensures that the validator follows expected behavior
  391. *
  392. * @return void
  393. */
  394. public function testSingleStringNotation()
  395. {
  396. $filter = new NotEmpty(
  397. 'boolean'
  398. );
  399. $this->assertFalse($filter->isValid(false));
  400. $this->assertTrue($filter->isValid(true));
  401. $this->assertTrue($filter->isValid(0));
  402. $this->assertTrue($filter->isValid(1));
  403. $this->assertTrue($filter->isValid(0.0));
  404. $this->assertTrue($filter->isValid(1.0));
  405. $this->assertTrue($filter->isValid(''));
  406. $this->assertTrue($filter->isValid('abc'));
  407. $this->assertTrue($filter->isValid('0'));
  408. $this->assertTrue($filter->isValid('1'));
  409. $this->assertTrue($filter->isValid(array()));
  410. $this->assertTrue($filter->isValid(array('xxx')));
  411. $this->assertTrue($filter->isValid(null));
  412. }
  413. /**
  414. * Ensures that the validator follows expected behavior
  415. *
  416. * @return void
  417. */
  418. public function testConfigObject()
  419. {
  420. $options = array('type' => 'all');
  421. $config = new \Zend\Config\Config($options);
  422. $filter = new NotEmpty(
  423. $config
  424. );
  425. $this->assertFalse($filter->isValid(false));
  426. $this->assertTrue($filter->isValid(true));
  427. $this->assertFalse($filter->isValid(0));
  428. $this->assertTrue($filter->isValid(1));
  429. $this->assertFalse($filter->isValid(0.0));
  430. $this->assertTrue($filter->isValid(1.0));
  431. $this->assertFalse($filter->isValid(''));
  432. $this->assertTrue($filter->isValid('abc'));
  433. $this->assertFalse($filter->isValid('0'));
  434. $this->assertTrue($filter->isValid('1'));
  435. $this->assertFalse($filter->isValid(array()));
  436. $this->assertTrue($filter->isValid(array('xxx')));
  437. $this->assertFalse($filter->isValid(null));
  438. }
  439. /**
  440. * Ensures that the validator follows expected behavior
  441. *
  442. * @return void
  443. */
  444. public function testSettingFalseType()
  445. {
  446. $this->setExpectedException('Zend\Validator\Exception\InvalidArgumentException', 'Unknown');
  447. $this->validator->setType(true);
  448. }
  449. /**
  450. * Ensures that the validator follows expected behavior
  451. *
  452. * @return void
  453. */
  454. public function testGetType()
  455. {
  456. $this->assertEquals(493, $this->validator->getType());
  457. }
  458. /**
  459. * @group ZF-3236
  460. */
  461. public function testStringWithZeroShouldNotBeTreatedAsEmpty()
  462. {
  463. $this->assertTrue($this->validator->isValid('0'));
  464. }
  465. /**
  466. * Ensures that getMessages() returns expected default value
  467. *
  468. * @return void
  469. */
  470. public function testGetMessages()
  471. {
  472. $this->assertEquals(array(), $this->validator->getMessages());
  473. }
  474. /**
  475. * @ZF-4352
  476. */
  477. public function testNonStringValidation()
  478. {
  479. $v2 = new NotEmpty();
  480. $this->assertTrue($this->validator->isValid($v2));
  481. }
  482. /**
  483. * @ZF-8767
  484. *
  485. * @return void
  486. */
  487. public function testZF8767()
  488. {
  489. $valid = new NotEmpty(NotEmpty::STRING);
  490. $this->assertFalse($valid->isValid(''));
  491. $messages = $valid->getMessages();
  492. $this->assertTrue(array_key_exists('isEmpty', $messages));
  493. $this->assertContains("can't be empty", $messages['isEmpty']);
  494. }
  495. /**
  496. * @return void
  497. */
  498. public function testObjects()
  499. {
  500. $valid = new NotEmpty(NotEmpty::STRING);
  501. $object = new stdClass();
  502. $this->assertFalse($valid->isValid($object));
  503. $valid = new NotEmpty(NotEmpty::OBJECT);
  504. $this->assertTrue($valid->isValid($object));
  505. }
  506. /**
  507. * @return void
  508. */
  509. public function testStringObjects()
  510. {
  511. $valid = new NotEmpty(NotEmpty::STRING);
  512. $object = new ClassTest2();
  513. $this->assertFalse($valid->isValid($object));
  514. $valid = new NotEmpty(NotEmpty::OBJECT_STRING);
  515. $this->assertTrue($valid->isValid($object));
  516. $object = new ClassTest3();
  517. $this->assertFalse($valid->isValid($object));
  518. }
  519. /**
  520. * @group ZF-11566
  521. */
  522. public function testArrayConfigNotationWithoutKey()
  523. {
  524. $filter = new NotEmpty(
  525. array('zero', 'string', 'boolean')
  526. );
  527. $this->assertFalse($filter->isValid(false));
  528. $this->assertTrue($filter->isValid(true));
  529. $this->assertTrue($filter->isValid(0));
  530. $this->assertTrue($filter->isValid(1));
  531. $this->assertTrue($filter->isValid(0.0));
  532. $this->assertTrue($filter->isValid(1.0));
  533. $this->assertFalse($filter->isValid(''));
  534. $this->assertTrue($filter->isValid('abc'));
  535. $this->assertFalse($filter->isValid('0'));
  536. $this->assertTrue($filter->isValid('1'));
  537. $this->assertTrue($filter->isValid(array()));
  538. $this->assertTrue($filter->isValid(array('xxx')));
  539. $this->assertTrue($filter->isValid(null));
  540. }
  541. public function testEqualsMessageTemplates()
  542. {
  543. $validator = $this->validator;
  544. $this->assertAttributeEquals($validator->getOption('messageTemplates'),
  545. 'messageTemplates', $validator);
  546. }
  547. }
  548. class ClassTest2
  549. {
  550. public function __toString()
  551. {
  552. return 'Test';
  553. }
  554. }
  555. class ClassTest3
  556. {
  557. public function toString()
  558. {
  559. return '';
  560. }
  561. }