summaryrefslogtreecommitdiff
path: root/tests/unit/I18N/core
diff options
context:
space:
mode:
authorknut <>2006-01-30 21:30:35 +0000
committerknut <>2006-01-30 21:30:35 +0000
commit48b3a6a236d229a203f5c20c705c901ee43ca4c2 (patch)
treeac01a4c4947b27af122a966eb39cbbce29b53861 /tests/unit/I18N/core
parent14257165b0c3906181653c9a863edf87c1cf7366 (diff)
- Ported a few unit tests from the I18N package
- Moving report stylesheets to buildscripts/phing - Added a build/dist target for both standard distribution and PEAR package to build.xml
Diffstat (limited to 'tests/unit/I18N/core')
-rw-r--r--tests/unit/I18N/core/CultureInfoTest.php81
-rw-r--r--tests/unit/I18N/core/NumberFormatInfoTest.php88
-rw-r--r--tests/unit/I18N/core/NumberFormatTest.php111
3 files changed, 280 insertions, 0 deletions
diff --git a/tests/unit/I18N/core/CultureInfoTest.php b/tests/unit/I18N/core/CultureInfoTest.php
new file mode 100644
index 00000000..14b60ece
--- /dev/null
+++ b/tests/unit/I18N/core/CultureInfoTest.php
@@ -0,0 +1,81 @@
+<?php
+require_once dirname(__FILE__).'/../../phpunit2.php';
+
+Prado::using('System.I18N.core.CultureInfo');
+
+/**
+ * @package System.I18N.core
+ */
+class CultureInfoTest extends PHPUnit2_Framework_TestCase {
+ protected $culture;
+
+ function setUp() {
+ $this->culture = CultureInfo::getInvariantCulture();
+ }
+
+ function testCultureName() {
+ $name = 'en';
+
+ $this->assertEquals($name, $this->culture->Name);
+
+ //the default/invariant culture should be neutral
+ $this->assertTrue($this->culture->IsNeutralCulture);
+ }
+
+ function testCultureList() {
+ $allCultures = CultureInfo::getCultures();
+ $neutralCultures = CultureInfo::getCultures(CultureInfo::NEUTRAL);
+ $specificCultures = CultureInfo::getCultures(CultureInfo::SPECIFIC);
+
+ //there should be 246 cultures all together.
+ $this->assertEquals(count($allCultures),246);
+ $this->assertEquals(count($neutralCultures),76);
+ $this->assertEquals(count($specificCultures),170);
+ }
+
+ function testParentCultures() {
+ $zh_CN = new CultureInfo('zh_CN');
+ $parent = $zh_CN->Parent;
+ $grandparent = $parent->Parent;
+
+ $this->assertEquals($zh_CN->Name, 'zh_CN');
+ $this->assertEquals($parent->Name, 'zh');
+ $this->assertEquals($grandparent->Name, 'en');
+ $this->assertEquals($grandparent->Parent->Name, 'en');
+ }
+
+ function testCountryNames() {
+ $culture = new CultureInfo('fr_FR');
+ $this->assertEquals($culture->Countries['AE'], 'Émirats arabes unis');
+ }
+
+ function testCurrencies() {
+ $culture = new CultureInfo('en_AU');
+ $au = array('$', 'Australian Dollar');
+ $this->assertEquals($au, $culture->Currencies['AUD']);
+ }
+
+ function testLanguages() {
+ $culture = new CultureInfo('fr_BE');
+ $this->assertEquals($culture->Languages['fr'], 'français');
+ }
+
+ function testScripts() {
+ $culture = new CultureInfo('fr');
+ $this->assertEquals($culture->Scripts['Armn'], 'arménien');
+ }
+
+ function testTimeZones() {
+ $culture = new CultureInfo('fi');
+ $zone = array(
+ "America/Los_Angeles",
+ "Tyynenmeren normaaliaika",
+ "PST",
+ "Tyynenmeren kesäaika",
+ "PDT",
+ "Los Angeles");
+ $this->assertEquals($culture->TimeZones[1],$zone);
+ }
+}
+
+?> \ No newline at end of file
diff --git a/tests/unit/I18N/core/NumberFormatInfoTest.php b/tests/unit/I18N/core/NumberFormatInfoTest.php
new file mode 100644
index 00000000..a3b6d05a
--- /dev/null
+++ b/tests/unit/I18N/core/NumberFormatInfoTest.php
@@ -0,0 +1,88 @@
+<?php
+require_once dirname(__FILE__).'/../../phpunit2.php';
+
+//NOTE: This page require UTF-8 aware editors
+Prado::using('System.I18N.core.NumberFormatInfo');
+
+/**
+ * @package System.I18N.core
+ */
+class NumberFormatInfoTest extends PHPUnit2_Framework_TestCase {
+
+ function testCurrencyPatterns() {
+ $numberInfo = NumberFormatInfo::getCurrencyInstance();
+
+ //there should be 2 decimal places.
+ $this->assertEquals($numberInfo->DecimalDigits,2);
+ $this->assertEquals($numberInfo->DecimalSeparator,'.');
+ $this->assertEquals($numberInfo->GroupSeparator,',');
+
+ //there should be only 1 grouping of size 3
+ $groupsize = array(3,false);
+ $this->assertEquals($numberInfo->GroupSizes, $groupsize);
+
+ //the default negative pattern prefix and postfix
+ $negPattern = array('-¤','');
+ $this->assertEquals($numberInfo->NegativePattern, $negPattern);
+
+ //the default positive pattern prefix and postfix
+ $negPattern = array('¤','');
+ $this->assertEquals($numberInfo->PositivePattern, $negPattern);
+
+ //the default currency symbol
+ $this->assertEquals($numberInfo->CurrencySymbol, 'US$');
+ $this->assertEquals($numberInfo->getCurrencySymbol('JPY'), '¥');
+ $this->assertEquals($numberInfo->NegativeInfinitySymbol, '-∞');
+ $this->assertEquals($numberInfo->PositiveInfinitySymbol, '+∞');
+ $this->assertEquals($numberInfo->NegativeSign, '-');
+ $this->assertEquals($numberInfo->PositiveSign, '+');
+ $this->assertEquals($numberInfo->NaNSymbol, '�');
+ $this->assertEquals($numberInfo->PercentSymbol, '%');
+ $this->assertEquals($numberInfo->PerMilleSymbol, '‰');
+ }
+
+ function testPatternsSet() {
+ $numberInfo = NumberFormatInfo::getInstance();
+
+ $numberInfo->DecimalDigits = 0;
+ $this->assertEquals($numberInfo->DecimalDigits,0);
+
+ $numberInfo->DecimalSeparator = ',';
+ $this->assertEquals($numberInfo->DecimalSeparator,',');
+
+ $numberInfo->GroupSeparator = ' ';
+ $this->assertEquals($numberInfo->GroupSeparator,' ');
+
+ $numberInfo->GroupSizes = array(2,3);
+ $groupsize = array(2,3);
+ $this->assertEquals($numberInfo->GroupSizes, $groupsize);
+
+ $numberInfo->NegativePattern = array('-$$','.');
+ $negPattern = array('-$$','.');
+ $this->assertEquals($numberInfo->NegativePattern, $negPattern);
+
+ $numberInfo->PositivePattern = array('YY','.');
+ $negPattern = array('YY','.');
+ $this->assertEquals($numberInfo->PositivePattern, $negPattern);
+
+ //the default CurrencySymbol symbol
+ $numberInfo->CurrencySymbol = '$$$';
+ $this->assertEquals($numberInfo->CurrencySymbol, '$$$');
+ }
+
+ function testLocalizedPatterns() {
+ $fr = NumberFormatInfo::getInstance('fr');
+ $de = NumberFormatInfo::getInstance('de');
+ $en = NumberFormatInfo::getInstance('en_US');
+
+ $this->assertEquals($fr->DecimalSeparator, ',');
+ $this->assertEquals($de->DecimalSeparator, ',');
+ $this->assertEquals($en->DecimalSeparator, '.');
+
+ $this->assertEquals($fr->GroupSeparator, ' ');
+ $this->assertEquals($de->GroupSeparator, '.');
+ $this->assertEquals($en->GroupSeparator, ',');
+ }
+}
+
+?> \ No newline at end of file
diff --git a/tests/unit/I18N/core/NumberFormatTest.php b/tests/unit/I18N/core/NumberFormatTest.php
new file mode 100644
index 00000000..af6a06ca
--- /dev/null
+++ b/tests/unit/I18N/core/NumberFormatTest.php
@@ -0,0 +1,111 @@
+<?php
+require_once dirname(__FILE__).'/../../phpunit2.php';
+
+//NOTE: This page require UTF-8 aware editors
+Prado::using('System.I18N.core.NumberFormat');
+
+/**
+ * @package System.I18N.core
+ */
+class NumberFormatTest 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 testFormatWithANegativeValue() {
+ $formatter = new NumberFormat();
+ $number = "-1.2";
+
+ $wanted = "-1.2";
+ $this->assertEquals($wanted, $formatter->format($number));
+ }
+
+ public function testFormatWithAScientificPattern() {
+ $formatter = new NumberFormat();
+ $number = "10";
+ $expected = "10E";
+ $this->assertEquals('10E', $formatter->format($number, 'e'));
+ }
+
+}
+
+?> \ No newline at end of file