comparison cake/tests/cases/libs/view/helpers/number.test.php @ 0:261e66bd5a0c

hg init
author Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
date Sun, 24 Jul 2011 21:08:31 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:261e66bd5a0c
1 <?php
2 /**
3 * NumberHelperTest file
4 *
5 * PHP versions 4 and 5
6 *
7 * CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing>
8 * Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
9 *
10 * Licensed under The Open Group Test Suite License
11 * Redistributions of files must retain the above copyright notice.
12 *
13 * @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
14 * @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests
15 * @package cake
16 * @subpackage cake.tests.cases.libs.view.helpers
17 * @since CakePHP(tm) v 1.2.0.4206
18 * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License
19 */
20 App::import('Helper', 'Number');
21
22 /**
23 * NumberHelperTest class
24 *
25 * @package cake
26 * @subpackage cake.tests.cases.libs.view.helpers
27 */
28 class NumberHelperTest extends CakeTestCase {
29
30 /**
31 * helper property
32 *
33 * @var mixed null
34 * @access public
35 */
36 var $helper = null;
37
38 /**
39 * setUp method
40 *
41 * @access public
42 * @return void
43 */
44 function startTest() {
45 $this->Number =& new NumberHelper();
46 }
47
48 /**
49 * tearDown method
50 *
51 * @access public
52 * @return void
53 */
54 function endTest() {
55 unset($this->Number);
56 }
57
58 /**
59 * testFormatAndCurrency method
60 *
61 * @access public
62 * @return void
63 */
64 function testFormat() {
65 $value = '100100100';
66
67 $result = $this->Number->format($value, '#');
68 $expected = '#100,100,100';
69 $this->assertEqual($expected, $result);
70
71 $result = $this->Number->format($value, 3);
72 $expected = '100,100,100.000';
73 $this->assertEqual($expected, $result);
74
75 $result = $this->Number->format($value);
76 $expected = '100,100,100';
77 $this->assertEqual($expected, $result);
78
79 $result = $this->Number->format($value, '-');
80 $expected = '100-100-100';
81 $this->assertEqual($expected, $result);
82 }
83
84 /**
85 * Test currency method.
86 *
87 * @access public
88 * @return void
89 */
90 function testCurrency() {
91 $value = '100100100';
92
93 $result = $this->Number->currency($value);
94 $expected = '$100,100,100.00';
95 $this->assertEqual($expected, $result);
96
97 $result = $this->Number->currency($value, '#');
98 $expected = '#100,100,100.00';
99 $this->assertEqual($expected, $result);
100
101 $result = $this->Number->currency($value, false);
102 $expected = '100,100,100.00';
103 $this->assertEqual($expected, $result);
104
105 $result = $this->Number->currency($value, 'USD');
106 $expected = '$100,100,100.00';
107 $this->assertEqual($expected, $result);
108
109 $result = $this->Number->currency($value, 'EUR');
110 $expected = '&#8364;100.100.100,00';
111 $this->assertEqual($expected, $result);
112
113 $result = $this->Number->currency($value, 'GBP');
114 $expected = '&#163;100,100,100.00';
115 $this->assertEqual($expected, $result);
116
117 $result = $this->Number->currency($value, '', array('thousands' =>' ', 'after' => '€', 'decimals' => ',', 'zero' => 'Gratuit'));
118 $expected = '100 100 100,00€';
119 $this->assertEqual($expected, $result);
120
121 $result = $this->Number->currency(1000.45, NULL, array('after'=>'øre','before'=>'Kr. ','decimals'=>',','thousands'=>'.'));
122 $expected = 'Kr. 1.000,45';
123 $this->assertEqual($expected,$result);
124
125 $result = $this->Number->currency(0.5, 'USD');
126 $expected = '50c';
127 $this->assertEqual($expected,$result);
128
129 $result = $this->Number->currency(0.5, NULL, array('after'=>'øre'));
130 $expected = '50øre';
131 $this->assertEqual($expected,$result);
132 }
133
134 /**
135 * Test adding currency format options to the number helper
136 *
137 * @access public
138 * @return void
139 */
140 function testCurrencyAddFormat() {
141 $this->Number->addFormat('NOK', array('before' => 'Kr. '));
142 $result = $this->Number->currency(1000, 'NOK');
143 $expected = 'Kr. 1,000.00';
144 $this->assertEqual($expected,$result);
145
146 $this->Number->addFormat('Other', array('before' => '$$ ', 'after' => 'c!'));
147 $result = $this->Number->currency(0.22, 'Other');
148 $expected = '22c!';
149 $this->assertEqual($expected,$result);
150
151 $result = $this->Number->currency(-10, 'Other');
152 $expected = '($$ 10.00)';
153 $this->assertEqual($expected,$result);
154 }
155
156 /**
157 * testCurrencyPositive method
158 *
159 * @access public
160 * @return void
161 */
162 function testCurrencyPositive() {
163 $value = '100100100';
164
165 $result = $this->Number->currency($value);
166 $expected = '$100,100,100.00';
167 $this->assertEqual($expected, $result);
168
169 $result = $this->Number->currency($value, 'USD', array('before'=> '#'));
170 $expected = '#100,100,100.00';
171 $this->assertEqual($expected, $result);
172
173 $result = $this->Number->currency($value, false);
174 $expected = '100,100,100.00';
175 $this->assertEqual($expected, $result);
176
177 $result = $this->Number->currency($value, 'USD');
178 $expected = '$100,100,100.00';
179 $this->assertEqual($expected, $result);
180
181 $result = $this->Number->currency($value, 'EUR');
182 $expected = '&#8364;100.100.100,00';
183 $this->assertEqual($expected, $result);
184
185 $result = $this->Number->currency($value, 'GBP');
186 $expected = '&#163;100,100,100.00';
187 $this->assertEqual($expected, $result);
188 }
189
190 /**
191 * testCurrencyNegative method
192 *
193 * @access public
194 * @return void
195 */
196 function testCurrencyNegative() {
197 $value = '-100100100';
198
199 $result = $this->Number->currency($value);
200 $expected = '($100,100,100.00)';
201 $this->assertEqual($expected, $result);
202
203 $result = $this->Number->currency($value, 'EUR');
204 $expected = '(&#8364;100.100.100,00)';
205 $this->assertEqual($expected, $result);
206
207 $result = $this->Number->currency($value, 'GBP');
208 $expected = '(&#163;100,100,100.00)';
209 $this->assertEqual($expected, $result);
210
211 $result = $this->Number->currency($value, 'USD', array('negative'=>'-'));
212 $expected = '-$100,100,100.00';
213 $this->assertEqual($expected, $result);
214
215 $result = $this->Number->currency($value, 'EUR', array('negative'=>'-'));
216 $expected = '-&#8364;100.100.100,00';
217 $this->assertEqual($expected, $result);
218
219 $result = $this->Number->currency($value, 'GBP', array('negative'=>'-'));
220 $expected = '-&#163;100,100,100.00';
221 $this->assertEqual($expected, $result);
222
223 }
224
225 /**
226 * testCurrencyCentsPositive method
227 *
228 * @access public
229 * @return void
230 */
231 function testCurrencyCentsPositive() {
232 $value = '0.99';
233
234 $result = $this->Number->currency($value, 'USD');
235 $expected = '99c';
236 $this->assertEqual($expected, $result);
237
238 $result = $this->Number->currency($value, 'EUR');
239 $expected = '&#8364;0,99';
240 $this->assertEqual($expected, $result);
241
242 $result = $this->Number->currency($value, 'GBP');
243 $expected = '99p';
244 $this->assertEqual($expected, $result);
245 }
246
247 /**
248 * testCurrencyCentsNegative method
249 *
250 * @access public
251 * @return void
252 */
253 function testCurrencyCentsNegative() {
254 $value = '-0.99';
255
256 $result = $this->Number->currency($value, 'USD');
257 $expected = '(99c)';
258 $this->assertEqual($expected, $result);
259
260 $result = $this->Number->currency($value, 'EUR');
261 $expected = '(&#8364;0,99)';
262 $this->assertEqual($expected, $result);
263
264 $result = $this->Number->currency($value, 'GBP');
265 $expected = '(99p)';
266 $this->assertEqual($expected, $result);
267
268 $result = $this->Number->currency($value, 'USD', array('negative'=>'-'));
269 $expected = '-99c';
270 $this->assertEqual($expected, $result);
271
272 $result = $this->Number->currency($value, 'EUR', array('negative'=>'-'));
273 $expected = '-&#8364;0,99';
274 $this->assertEqual($expected, $result);
275
276 $result = $this->Number->currency($value, 'GBP', array('negative'=>'-'));
277 $expected = '-99p';
278 $this->assertEqual($expected, $result);
279 }
280
281 /**
282 * testCurrencyZero method
283 *
284 * @access public
285 * @return void
286 */
287 function testCurrencyZero() {
288 $value = '0';
289
290 $result = $this->Number->currency($value, 'USD');
291 $expected = '$0.00';
292 $this->assertEqual($expected, $result);
293
294 $result = $this->Number->currency($value, 'EUR');
295 $expected = '&#8364;0,00';
296 $this->assertEqual($expected, $result);
297
298 $result = $this->Number->currency($value, 'GBP');
299 $expected = '&#163;0.00';
300 $this->assertEqual($expected, $result);
301
302 $result = $this->Number->currency($value, 'GBP', array('zero' => 'FREE!'));
303 $expected = 'FREE!';
304 $this->assertEqual($expected, $result);
305 }
306
307 /**
308 * testCurrencyOptions method
309 *
310 * @access public
311 * @return void
312 */
313 function testCurrencyOptions() {
314 $value = '1234567.89';
315
316 $result = $this->Number->currency($value, null, array('before' => 'GBP'));
317 $expected = 'GBP1,234,567.89';
318 $this->assertEqual($expected, $result);
319
320 $result = $this->Number->currency($value, 'GBP', array('places' => 0));
321 $expected = '&#163;1,234,568';
322 $this->assertEqual($expected, $result);
323
324 $result = $this->Number->currency('1234567.8912345', null, array('before' => 'GBP', 'places' => 3));
325 $expected = 'GBP1,234,567.891';
326 $this->assertEqual($expected, $result);
327
328 $result = $this->Number->currency('650.120001', null, array('before' => 'GBP', 'places' => 4));
329 $expected = 'GBP650.1200';
330 $this->assertEqual($expected, $result);
331
332 $result = $this->Number->currency($value, 'GBP', array('escape' => true));
333 $expected = '&amp;#163;1,234,567.89';
334 $this->assertEqual($expected, $result);
335
336 $result = $this->Number->currency('0.35', 'USD', array('after' => false));
337 $expected = '$0.35';
338 $this->assertEqual($expected, $result);
339
340 $result = $this->Number->currency('0.35', 'GBP', array('after' => false));
341 $expected = '&#163;0.35';
342 $this->assertEqual($expected, $result);
343
344 $result = $this->Number->currency('0.35', 'GBP');
345 $expected = '35p';
346 $this->assertEqual($expected, $result);
347
348 $result = $this->Number->currency('0.35', 'EUR');
349 $expected = '&#8364;0,35';
350 $this->assertEqual($expected, $result);
351 }
352
353 /**
354 * testToReadableSize method
355 *
356 * @access public
357 * @return void
358 */
359 function testToReadableSize() {
360 $result = $this->Number->toReadableSize(0);
361 $expected = '0 Bytes';
362 $this->assertEqual($expected, $result);
363
364 $result = $this->Number->toReadableSize(1);
365 $expected = '1 Byte';
366 $this->assertEqual($expected, $result);
367
368 $result = $this->Number->toReadableSize(45);
369 $expected = '45 Bytes';
370 $this->assertEqual($expected, $result);
371
372 $result = $this->Number->toReadableSize(1023);
373 $expected = '1023 Bytes';
374 $this->assertEqual($expected, $result);
375
376 $result = $this->Number->toReadableSize(1024);
377 $expected = '1 KB';
378 $this->assertEqual($expected, $result);
379
380 $result = $this->Number->toReadableSize(1024*512);
381 $expected = '512 KB';
382 $this->assertEqual($expected, $result);
383
384 $result = $this->Number->toReadableSize(1024*1024-1);
385 $expected = '1.00 MB';
386 $this->assertEqual($expected, $result);
387
388 $result = $this->Number->toReadableSize(1024*1024*512);
389 $expected = '512.00 MB';
390 $this->assertEqual($expected, $result);
391
392 $result = $this->Number->toReadableSize(1024*1024*1024-1);
393 $expected = '1.00 GB';
394 $this->assertEqual($expected, $result);
395
396 $result = $this->Number->toReadableSize(1024*1024*1024*512);
397 $expected = '512.00 GB';
398 $this->assertEqual($expected, $result);
399
400 $result = $this->Number->toReadableSize(1024*1024*1024*1024-1);
401 $expected = '1.00 TB';
402 $this->assertEqual($expected, $result);
403
404 $result = $this->Number->toReadableSize(1024*1024*1024*1024*512);
405 $expected = '512.00 TB';
406 $this->assertEqual($expected, $result);
407
408 $result = $this->Number->toReadableSize(1024*1024*1024*1024*1024-1);
409 $expected = '1024.00 TB';
410 $this->assertEqual($expected, $result);
411
412 $result = $this->Number->toReadableSize(1024*1024*1024*1024*1024*1024);
413 $expected = (1024 * 1024) . '.00 TB';
414 $this->assertEqual($expected, $result);
415 }
416
417 /**
418 * testToPercentage method
419 *
420 * @access public
421 * @return void
422 */
423 function testToPercentage() {
424 $result = $this->Number->toPercentage(45, 0);
425 $expected = '45%';
426 $this->assertEqual($result, $expected);
427
428 $result = $this->Number->toPercentage(45, 2);
429 $expected = '45.00%';
430 $this->assertEqual($result, $expected);
431
432 $result = $this->Number->toPercentage(0, 0);
433 $expected = '0%';
434 $this->assertEqual($result, $expected);
435
436 $result = $this->Number->toPercentage(0, 4);
437 $expected = '0.0000%';
438 $this->assertEqual($result, $expected);
439 }
440 }