PageRenderTime 41ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

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

https://bitbucket.org/pcelta/zf2
PHP | 229 lines | 125 code | 47 blank | 57 comment | 12 complexity | 8a121020b887e8c0295b8dd4b28704e3 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 Zend\Validator\Isbn;
  12. /**
  13. * @category Zend
  14. * @package Zend_Validator
  15. * @subpackage UnitTests
  16. * @group Zend_Validator
  17. */
  18. class IsbnTest extends \PHPUnit_Framework_TestCase
  19. {
  20. /**
  21. * Ensures that the validator follows expected behavior
  22. *
  23. * @return void
  24. */
  25. public function testBasic()
  26. {
  27. $validator = new Isbn();
  28. // Brave New World by Aldous Huxley
  29. $this->assertTrue($validator->isValid('0060929871'));
  30. $this->assertFalse($validator->isValid('006092987X'));
  31. // Time Rations by Benjamin Friedlander
  32. $this->assertTrue($validator->isValid('188202205X'));
  33. $this->assertFalse($validator->isValid('1882022059'));
  34. // Towards The Primeval Lighting Field by Will Alexander
  35. $this->assertTrue($validator->isValid('1882022300'));
  36. $this->assertFalse($validator->isValid('1882022301'));
  37. // ISBN-13 for dummies by Zoƫ Wykes
  38. $this->assertTrue($validator->isValid('9780555023402'));
  39. $this->assertFalse($validator->isValid('97805550234029'));
  40. // Change Your Brain, Change Your Life Daniel G. Amen
  41. $this->assertTrue($validator->isValid('9780812929980'));
  42. $this->assertFalse($validator->isValid('9780812929981'));
  43. }
  44. /**
  45. * Ensures that setSeparator() works as expected
  46. *
  47. * @return void
  48. */
  49. public function testType()
  50. {
  51. $validator = new Isbn();
  52. $validator->setType(Isbn::AUTO);
  53. $this->assertTrue($validator->getType() == Isbn::AUTO);
  54. $validator->setType(Isbn::ISBN10);
  55. $this->assertTrue($validator->getType() == Isbn::ISBN10);
  56. $validator->setType(Isbn::ISBN13);
  57. $this->assertTrue($validator->getType() == Isbn::ISBN13);
  58. $this->setExpectedException('Zend\Validator\Exception\InvalidArgumentException', 'Invalid ISBN type');
  59. $validator->setType('X');
  60. }
  61. /**
  62. * Ensures that setSeparator() works as expected
  63. *
  64. * @return void
  65. */
  66. public function testSeparator()
  67. {
  68. $validator = new Isbn();
  69. $validator->setSeparator('-');
  70. $this->assertTrue($validator->getSeparator() == '-');
  71. $validator->setSeparator(' ');
  72. $this->assertTrue($validator->getSeparator() == ' ');
  73. $validator->setSeparator('');
  74. $this->assertTrue($validator->getSeparator() == '');
  75. $this->setExpectedException('Zend\Validator\Exception\InvalidArgumentException', 'Invalid ISBN separator');
  76. $validator->setSeparator('X');
  77. }
  78. /**
  79. * Ensures that __construct() works as expected
  80. *
  81. * @return void
  82. */
  83. public function testInitialization()
  84. {
  85. $options = array('type' => Isbn::AUTO,
  86. 'separator' => ' ');
  87. $validator = new Isbn($options);
  88. $this->assertTrue($validator->getType() == Isbn::AUTO);
  89. $this->assertTrue($validator->getSeparator() == ' ');
  90. $options = array('type' => Isbn::ISBN10,
  91. 'separator' => '-');
  92. $validator = new Isbn($options);
  93. $this->assertTrue($validator->getType() == Isbn::ISBN10);
  94. $this->assertTrue($validator->getSeparator() == '-');
  95. $options = array('type' => Isbn::ISBN13,
  96. 'separator' => '');
  97. $validator = new Isbn($options);
  98. $this->assertTrue($validator->getType() == Isbn::ISBN13);
  99. $this->assertTrue($validator->getSeparator() == '');
  100. }
  101. /**
  102. * Ensures that the validator follows expected behavior
  103. *
  104. * @return void
  105. */
  106. public function testTypeAuto()
  107. {
  108. $validator = new Isbn();
  109. $this->assertTrue($validator->isValid('0060929871'));
  110. $this->assertFalse($validator->isValid('0-06-092987-1'));
  111. $this->assertFalse($validator->isValid('0 06 092987 1'));
  112. $this->assertTrue($validator->isValid('9780555023402'));
  113. $this->assertFalse($validator->isValid('978-0-555023-40-2'));
  114. $this->assertFalse($validator->isValid('978 0 555023 40 2'));
  115. $validator->setSeparator('-');
  116. $this->assertFalse($validator->isValid('0060929871'));
  117. $this->assertTrue($validator->isValid('0-06-092987-1'));
  118. $this->assertFalse($validator->isValid('0 06 092987 1'));
  119. $this->assertFalse($validator->isValid('9780555023402'));
  120. $this->assertTrue($validator->isValid('978-0-555023-40-2'));
  121. $this->assertFalse($validator->isValid('978 0 555023 40 2'));
  122. $validator->setSeparator(' ');
  123. $this->assertFalse($validator->isValid('0060929871'));
  124. $this->assertFalse($validator->isValid('0-06-092987-1'));
  125. $this->assertTrue($validator->isValid('0 06 092987 1'));
  126. $this->assertFalse($validator->isValid('9780555023402'));
  127. $this->assertFalse($validator->isValid('978-0-555023-40-2'));
  128. $this->assertTrue($validator->isValid('978 0 555023 40 2'));
  129. }
  130. /**
  131. * Ensures that the validator follows expected behavior
  132. *
  133. * @return void
  134. */
  135. public function testType10()
  136. {
  137. $validator = new Isbn();
  138. $validator->setType(Isbn::ISBN10);
  139. $this->assertTrue($validator->isValid('0060929871'));
  140. $this->assertFalse($validator->isValid('9780555023402'));
  141. $validator->setSeparator('-');
  142. $this->assertTrue($validator->isValid('0-06-092987-1'));
  143. $this->assertFalse($validator->isValid('978-0-555023-40-2'));
  144. $validator->setSeparator(' ');
  145. $this->assertTrue($validator->isValid('0 06 092987 1'));
  146. $this->assertFalse($validator->isValid('978 0 555023 40 2'));
  147. }
  148. /**
  149. * Ensures that the validator follows expected behavior
  150. *
  151. * @return void
  152. */
  153. public function testType13()
  154. {
  155. $validator = new Isbn();
  156. $validator->setType(Isbn::ISBN13);
  157. $this->assertFalse($validator->isValid('0060929871'));
  158. $this->assertTrue($validator->isValid('9780555023402'));
  159. $validator->setSeparator('-');
  160. $this->assertFalse($validator->isValid('0-06-092987-1'));
  161. $this->assertTrue($validator->isValid('978-0-555023-40-2'));
  162. $validator->setSeparator(' ');
  163. $this->assertFalse($validator->isValid('0 06 092987 1'));
  164. $this->assertTrue($validator->isValid('978 0 555023 40 2'));
  165. }
  166. /**
  167. * @group ZF-9605
  168. */
  169. public function testInvalidTypeGiven()
  170. {
  171. $validator = new Isbn();
  172. $validator->setType(Isbn::ISBN13);
  173. $this->assertFalse($validator->isValid((float) 1.2345));
  174. $this->assertFalse($validator->isValid((object) 'Test'));
  175. }
  176. public function testEqualsMessageTemplates()
  177. {
  178. $validator = new Isbn();
  179. $this->assertAttributeEquals($validator->getOption('messageTemplates'),
  180. 'messageTemplates', $validator);
  181. }
  182. }