diff options
Diffstat (limited to 'tests/unit/I18N/TNumberFormatTest.php')
-rw-r--r-- | tests/unit/I18N/TNumberFormatTest.php | 103 |
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 |