PageRenderTime 50ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/Zend/Measure/NumberTest.php

https://github.com/damoon/zf
PHP | 262 lines | 155 code | 35 blank | 72 comment | 0 complexity | d14b40cdc558afb623be12c6fd30966e MD5 | raw file
  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_Measure
  17. * @subpackage UnitTests
  18. * @copyright Copyright (c) 2005-2010 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. * Zend_Measure_Number
  24. */
  25. require_once 'Zend/Measure/Number.php';
  26. /**
  27. * PHPUnit test case
  28. */
  29. require_once 'PHPUnit/Framework/TestCase.php';
  30. /**
  31. * @category Zend
  32. * @package Zend_Measure
  33. * @subpackage UnitTests
  34. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  35. * @license http://framework.zend.com/license/new-bsd New BSD License
  36. * @group Zend_Measure
  37. */
  38. class Zend_Measure_NumberTest extends PHPUnit_Framework_TestCase
  39. {
  40. /**
  41. * test for Number initialisation
  42. * expected instance
  43. */
  44. public function testNumberInit()
  45. {
  46. $value = new Zend_Measure_Number('100',Zend_Measure_Number::STANDARD,'de');
  47. $this->assertTrue($value instanceof Zend_Measure_Number,'Zend_Measure_Number Object not returned');
  48. $value = new Zend_Measure_Number('100','de');
  49. $this->assertTrue($value instanceof Zend_Measure_Number,'Zend_Measure_Number Object not returned');
  50. $value = new Zend_Measure_Number('100',Zend_Measure_Number::STANDARD);
  51. $this->assertEquals(100, $value->getValue(),'Zend_Measure_Number value expected');
  52. $value = new Zend_Measure_Number('100',Zend_Measure_Number::STANDARD,'de');
  53. $this->assertEquals(100, $value->getValue(), 'Zend_Measure_Number value expected to be a positive integer');
  54. $value = new Zend_Measure_Number('-100',Zend_Measure_Number::STANDARD,'de');
  55. $this->assertEquals(100, $value->getValue(), 'Zend_Measure_Number value expected to be a negative integer');
  56. $value = new Zend_Measure_Number('-100,200',Zend_Measure_Number::STANDARD,'de');
  57. $this->assertEquals(100, $value->getValue(), 'Zend_Measure_Number value expected to be a decimal value');
  58. $value = new Zend_Measure_Number('-100.100,200',Zend_Measure_Number::STANDARD,'de');
  59. $this->assertEquals(100100, $value->getValue(),'Zend_Measure_Number Object not returned');
  60. $value = new Zend_Measure_Number('-100.100,200',Zend_Measure_Number::STANDARD,'de');
  61. $this->assertEquals(100100, $value->getValue(),'Zend_Measure_Number Object not returned');
  62. try {
  63. $value = new Zend_Measure_Number('100','Number::UNKNOWN','de');
  64. $this->fail('Exception expected because of unknown type');
  65. } catch (Zend_Measure_Exception $e) {
  66. // success
  67. }
  68. try {
  69. $value = new Zend_Measure_Number('novalue',Zend_Measure_Number::STANDARD,'de');
  70. $this->fail('Exception expected because of empty value');
  71. } catch (Zend_Measure_Exception $e) {
  72. // success
  73. }
  74. try {
  75. $value = new Zend_Measure_Number('100',Zend_Measure_Number::STANDARD,'nolocale');
  76. $this->fail('Exception expected because of unknown locale');
  77. } catch (Zend_Measure_Exception $e) {
  78. // success
  79. }
  80. }
  81. /**
  82. * test for equality
  83. * expected true
  84. */
  85. public function testNumberEquality()
  86. {
  87. $value = new Zend_Measure_Number('-100.100,200',Zend_Measure_Number::STANDARD,'de');
  88. $newvalue = new Zend_Measure_Number('-100.100,200',Zend_Measure_Number::STANDARD,'de');
  89. $this->assertTrue($value->equals($newvalue),'Zend_Measure_Number Object should be equal');
  90. $value = new Zend_Measure_Number('-100.100,200',Zend_Measure_Number::STANDARD,'de');
  91. $newvalue = new Zend_Measure_Number('-100,200',Zend_Measure_Number::STANDARD,'de');
  92. $this->assertFalse($value->equals($newvalue),'Zend_Measure_Number Object should be not equal');
  93. }
  94. /**
  95. * test for setValue
  96. * expected integer
  97. */
  98. public function testNumberSetValue()
  99. {
  100. $value = new Zend_Measure_Number('100',Zend_Measure_Number::STANDARD,'de');
  101. $value->setValue('200',Zend_Measure_Number::STANDARD,'de');
  102. $this->assertEquals(200, $value->getValue(), 'Zend_Measure_Number value expected to be a positive integer');
  103. $value->setValue('-200',Zend_Measure_Number::STANDARD,'de');
  104. $this->assertEquals(200, $value->getValue(), 'Zend_Measure_Number value expected to be a negative integer');
  105. $value->setValue('-200,200',Zend_Measure_Number::STANDARD,'de');
  106. $this->assertEquals(200, $value->getValue(), 'Zend_Measure_Number value expected to be a decimal value');
  107. $value->setValue('-200.200,200',Zend_Measure_Number::STANDARD,'de');
  108. $this->assertEquals(200200, $value->getValue(),'Zend_Measure_Number Object not returned');
  109. $value->setValue('-200.200,200',Zend_Measure_Number::STANDARD,'de');
  110. $this->assertEquals(200200, $value->getValue(),'Zend_Measure_Number Object not returned');
  111. try {
  112. $value = new Zend_Measure_Number('100',Zend_Measure_Number::STANDARD,'de');
  113. $value->setValue('-200.200,200','Number::UNKNOWN','de');
  114. $this->fail('Exception expected because of unknown type');
  115. } catch (Zend_Measure_Exception $e) {
  116. // success
  117. }
  118. try {
  119. $value = new Zend_Measure_Number('100',Zend_Measure_Number::STANDARD,'de');
  120. $value->setValue('novalue',Zend_Measure_Number::STANDARD,'de');
  121. $this->fail('Exception expected because of empty value');
  122. } catch (Zend_Measure_Exception $e) {
  123. // success
  124. }
  125. try {
  126. $value = new Zend_Measure_Number('100',Zend_Measure_Number::STANDARD,'de');
  127. $value->setValue('200',Zend_Measure_Number::STANDARD,'nolocale');
  128. $this->fail('Exception expected because of unknown locale');
  129. } catch (Zend_Measure_Exception $e) {
  130. // success
  131. }
  132. $value->setValue('200', Zend_Measure_Number::STANDARD);
  133. $this->assertEquals(200, $value->getValue(), 'Zend_Measure_Number value expected to be a positive integer');
  134. }
  135. /**
  136. * test setting type
  137. * expected new type
  138. */
  139. public function testNumberSetType()
  140. {
  141. $value = new Zend_Measure_Number('-100',Zend_Measure_Number::STANDARD,'de');
  142. $value->setType(Zend_Measure_Number::BINARY);
  143. $this->assertEquals(Zend_Measure_Number::BINARY, $value->getType(), 'Zend_Measure_Number type expected');
  144. $value->setType(Zend_Measure_Number::ROMAN);
  145. $this->assertEquals(Zend_Measure_Number::ROMAN, $value->getType(), 'Zend_Measure_Number type expected');
  146. $value = new Zend_Measure_Number('1001020',Zend_Measure_Number::BINARY,'de');
  147. $value->setType(Zend_Measure_Number::HEXADECIMAL);
  148. $this->assertEquals(Zend_Measure_Number::HEXADECIMAL, $value->getType(), 'Zend_Measure_Number type expected');
  149. $value = new Zend_Measure_Number('MCXVII',Zend_Measure_Number::ROMAN,'de');
  150. $value->setType(Zend_Measure_Number::HEXADECIMAL);
  151. $this->assertEquals(Zend_Measure_Number::HEXADECIMAL, $value->getType(), 'Zend_Measure_Number type expected');
  152. $value = new Zend_Measure_Number('102122',Zend_Measure_Number::TERNARY,'de');
  153. $value->setType(Zend_Measure_Number::OCTAL);
  154. $this->assertEquals(Zend_Measure_Number::OCTAL, $value->getType(), 'Zend_Measure_Number type expected');
  155. $value = new Zend_Measure_Number('1032402',Zend_Measure_Number::QUATERNARY,'de');
  156. $value->setType(Zend_Measure_Number::QUINARY);
  157. $this->assertEquals(Zend_Measure_Number::QUINARY, $value->getType(), 'Zend_Measure_Number type expected');
  158. $value = new Zend_Measure_Number('1052402',Zend_Measure_Number::QUINARY,'de');
  159. $value->setType(Zend_Measure_Number::QUATERNARY);
  160. $this->assertEquals(Zend_Measure_Number::QUATERNARY, $value->getType(), 'Zend_Measure_Number type expected');
  161. $value = new Zend_Measure_Number('1632402',Zend_Measure_Number::SENARY,'de');
  162. $value->setType(Zend_Measure_Number::SEPTENARY);
  163. $this->assertEquals(Zend_Measure_Number::SEPTENARY, $value->getType(), 'Zend_Measure_Number type expected');
  164. $value = new Zend_Measure_Number('1632702', Zend_Measure_Number::SEPTENARY, 'de');
  165. $value->setType(Zend_Measure_Number::SENARY);
  166. $this->assertEquals(Zend_Measure_Number::SENARY, $value->getType(), 'Zend_Measure_Number type expected');
  167. $value = new Zend_Measure_Number('1832402',Zend_Measure_Number::NONARY,'de');
  168. $value->setType(Zend_Measure_Number::SEPTENARY);
  169. $this->assertEquals(Zend_Measure_Number::SEPTENARY, $value->getType(), 'Zend_Measure_Number type expected');
  170. $value = new Zend_Measure_Number('1632402',Zend_Measure_Number::DUODECIMAL,'de');
  171. $value->setType(Zend_Measure_Number::SEPTENARY);
  172. $this->assertEquals(Zend_Measure_Number::SEPTENARY, $value->getType(), 'Zend_Measure_Number type expected');
  173. $value = new Zend_Measure_Number('1234ACE',Zend_Measure_Number::HEXADECIMAL,'de');
  174. $value->setType(Zend_Measure_Number::TERNARY);
  175. $this->assertEquals(Zend_Measure_Number::TERNARY, $value->getType(), 'Zend_Measure_Number type expected');
  176. $value = new Zend_Measure_Number('1234075',Zend_Measure_Number::OCTAL,'de');
  177. $value->setType(Zend_Measure_Number::TERNARY);
  178. $this->assertEquals(Zend_Measure_Number::TERNARY, $value->getType(), 'Zend_Measure_Number type expected');
  179. try {
  180. $value = new Zend_Measure_Number('-100',Zend_Measure_Number::STANDARD,'de');
  181. $value->setType('Number::UNKNOWN');
  182. $this->fail('Exception expected because of unknown type');
  183. } catch (Zend_Measure_Exception $e) {
  184. // success
  185. }
  186. }
  187. /**
  188. * test toString
  189. * expected string
  190. */
  191. public function testNumberToString()
  192. {
  193. $value = new Zend_Measure_Number('-100',Zend_Measure_Number::STANDARD,'de');
  194. $this->assertEquals('100 ⑽', $value->toString(), 'Value 100 ⑽ expected');
  195. }
  196. /**
  197. * test __toString
  198. * expected string
  199. */
  200. public function testNumber_ToString()
  201. {
  202. $value = new Zend_Measure_Number('-100',Zend_Measure_Number::STANDARD,'de');
  203. $this->assertEquals('100 ⑽', $value->__toString(), 'Value 100 ⑽ expected');
  204. }
  205. /**
  206. * test getConversionList
  207. * expected array
  208. */
  209. public function testNumberConversionList()
  210. {
  211. $value = new Zend_Measure_Number('-100',Zend_Measure_Number::STANDARD,'de');
  212. $unit = $value->getConversionList();
  213. $this->assertTrue(is_array($unit), 'Array expected');
  214. }
  215. /**
  216. * test convertTo
  217. */
  218. public function testConvertTo()
  219. {
  220. $value = new Zend_Measure_Number('III',Zend_Measure_Number::ROMAN, 'en');
  221. $this->assertEquals('3 ⑽', $value->convertTo(Zend_Measure_Number::DECIMAL));
  222. $value = new Zend_Measure_Number('XXV',Zend_Measure_Number::ROMAN, 'en');
  223. $this->assertEquals('25 ⑽', $value->convertTo(Zend_Measure_Number::DECIMAL));
  224. $value = new Zend_Measure_Number('_X',Zend_Measure_Number::ROMAN, 'en');
  225. $this->assertEquals('10,000 ⑽', $value->convertTo(Zend_Measure_Number::DECIMAL));
  226. }
  227. }