summaryrefslogtreecommitdiff
path: root/tests/UnitTests/framework/I18N/testNumberFormat.php
blob: 48342d9cd2dccc41188e9a4442ccf75f3c2d14c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php

//NOTE: This page require UTF-8 aware editors

Prado::using('System.I18N.core.NumberFormat');

class testNumberFormat extends UnitTestCase
{
	function testNumberFormat()
	{
		$this->UnitTestCase();
	}

	function testDefaultFormats()
	{
		$formatter = new NumberFormat();
		$number = '123456789.125156';
		$wanted = '123,456,789.125156';
		$this->assertEqual($wanted, $formatter->format($number));

		//currency
		$wanted = 'US$123,456,789.13';
		$this->assertEqual($wanted, $formatter->format($number,'c'));
	}

	function testLocalizedCurrencyFormats()
	{
		$fr = new NumberFormat('fr');
		$de = new NumberFormat('de');
		$ja = new NumberFormat('ja_JP');

		$number = '123456789.125156';

		//french
		$wanted = '123 456 789,13 F';
		$this->assertEqual($wanted, $fr->format($number,'c','FRF'));

		//german
		$wanted = 'DES 123.456.789,13';
		$this->assertEqual($wanted, $de->format($number,'c','DES'));

		//japanese
		$wanted = '¥123,456,789';
		$this->assertEqual($wanted, $ja->format($number,'c','JPY'));

		//custom/unkown currency
		$wanted = 'DLL123,456,789';
		$this->assertEqual($wanted, $ja->format($number,'c','DLL'));
	}

	function testCustomFormat()
	{
		$formatter = new NumberFormat();
		$number = '123456789.125156';

		//primay and secondary grouping test
		$pattern = '#,###,##.###';
		$wanted = '1,234,567,89.125156';
		$this->assertEqual($wanted, $formatter->format($number, $pattern));

		//4 digits grouping test
		$pattern = '#,####.###';
		$wanted = '1,2345,6789.125156';
		$this->assertEqual($wanted, $formatter->format($number, $pattern));

		//custom percentage
		$pattern = '#,###.00%';
		$wanted = '123,456,789.13%';
		$this->assertEqual($wanted, $formatter->format($number, $pattern));
	}

	function testPercentageFormat()
	{
		$formatter = new NumberFormat();
		$number = '0.125156';
		$wanted = '12%';
		$this->assertEqual($wanted, $formatter->format($number, 'p'));
	}

	function testQuotes()
	{
		$formatter = new NumberFormat();
		$number = '123456789.125156';

		$pattern = "# o'clock";
		$wanted = "123456789 o'clock";
		$this->assertEqual($wanted, $formatter->format($number, $pattern));

	}

	function testPadding()
	{
		$formatter = new NumberFormat();
		$number = '5';

		$pattern = '0000';
		$wanted = '0005';

		//this should fail!!!
		$this->assertEqual($wanted, $formatter->format($number, $pattern));
	}
	
	function testNegativeValue()
	{
		$formatter = new NumberFormat();
		$number = "-1.2";
		
		$wanted = "-1.2";
		$this->assertEqual($wanted, $formatter->format($number));
	}
}

?>