summaryrefslogtreecommitdiff
path: root/tests/unit/I18N/TNumberFormatTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/I18N/TNumberFormatTest.php')
-rw-r--r--tests/unit/I18N/TNumberFormatTest.php103
1 files changed, 103 insertions, 0 deletions
diff --git a/tests/unit/I18N/TNumberFormatTest.php b/tests/unit/I18N/TNumberFormatTest.php
new file mode 100644
index 00000000..18e5f3ff
--- /dev/null
+++ b/tests/unit/I18N/TNumberFormatTest.php
@@ -0,0 +1,103 @@
+<?php
+require_once dirname(__FILE__).'/../phpunit2.php';
+
+//NOTE: This page require UTF-8 aware editors
+Prado::using('System.I18N.core.NumberFormat');
+
+/**
+ * @package System.I18N
+ */
+class TNumberFormatTest extends PHPUnit2_Framework_TestCase {
+ function testDefaultFormats() {
+ $formatter = new NumberFormat();
+ $number = '123456789.125156';
+ $wanted = '123,456,789.125156';
+ $this->assertEquals($wanted, $formatter->format($number));
+
+ //currency
+ $wanted = 'US$123,456,789.13';
+ $this->assertEquals($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->assertEquals($wanted, $fr->format($number,'c','FRF'));
+
+ //german
+ $wanted = 'DES 123.456.789,13';
+ $this->assertEquals($wanted, $de->format($number,'c','DES'));
+
+ //japanese
+ $wanted = '¥123,456,789';
+ $this->assertEquals($wanted, $ja->format($number,'c','JPY'));
+
+ //custom/unkown currency
+ $wanted = 'DLL123,456,789';
+ $this->assertEquals($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->assertEquals($wanted, $formatter->format($number, $pattern));
+
+ //4 digits grouping test
+ $pattern = '#,####.###';
+ $wanted = '1,2345,6789.125156';
+ $this->assertEquals($wanted, $formatter->format($number, $pattern));
+
+ //custom percentage
+ $pattern = '#,###.00%';
+ $wanted = '123,456,789.13%';
+ $this->assertEquals($wanted, $formatter->format($number, $pattern));
+ }
+
+ function testPercentageFormat() {
+ $formatter = new NumberFormat();
+ $number = '0.125156';
+ $wanted = '12%';
+ $this->assertEquals($wanted, $formatter->format($number, 'p'));
+ }
+
+ function testQuotes() {
+ $formatter = new NumberFormat();
+ $number = '123456789.125156';
+
+ $pattern = "# o'clock";
+ $wanted = "123456789 o'clock";
+ $this->assertEquals($wanted, $formatter->format($number, $pattern));
+
+ }
+
+ function testPadding() {
+ $formatter = new NumberFormat();
+ $number = '5';
+
+ $pattern = '0000';
+ $wanted = '0005';
+
+ //this should fail!!!
+ $this->assertNotEquals($wanted, $formatter->format($number, $pattern));
+ }
+
+ function testNegativeValue() {
+ $formatter = new NumberFormat();
+ $number = "-1.2";
+
+ $wanted = "-1.2";
+ $this->assertEquals($wanted, $formatter->format($number));
+ }
+}
+
+?> \ No newline at end of file