diff options
-rw-r--r-- | .gitattributes | 14 | ||||
-rw-r--r-- | build.xml | 162 | ||||
-rw-r--r-- | buildscripts/phing/style/coverage-frames.xsl (renamed from etc/style/coverage-frames.xsl) | 0 | ||||
-rw-r--r-- | buildscripts/phing/style/log.xsl (renamed from etc/style/log.xsl) | 0 | ||||
-rw-r--r-- | buildscripts/phing/style/phpunit2-frames.xsl (renamed from etc/style/phpunit2-frames.xsl) | 0 | ||||
-rw-r--r-- | buildscripts/phing/style/phpunit2-noframes.xsl (renamed from etc/style/phpunit2-noframes.xsl) | 0 | ||||
-rw-r--r-- | buildscripts/phing/style/str.replace.function.xsl (renamed from etc/style/str.replace.function.xsl) | 0 | ||||
-rw-r--r-- | tests/unit/I18N/core/CultureInfoTest.php | 81 | ||||
-rw-r--r-- | tests/unit/I18N/core/NumberFormatInfoTest.php | 88 | ||||
-rw-r--r-- | tests/unit/I18N/core/NumberFormatTest.php (renamed from tests/unit/I18N/TNumberFormatTest.php) | 16 |
10 files changed, 333 insertions, 28 deletions
diff --git a/.gitattributes b/.gitattributes index 8af5493f..426151cd 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7,6 +7,11 @@ buildscripts/.htaccess -text buildscripts/jsbuilder/build.php -text buildscripts/jsbuilder/custom_rhino.jar -text buildscripts/jsbuilder/packer.js -text +buildscripts/phing/style/coverage-frames.xsl -text +buildscripts/phing/style/log.xsl -text +buildscripts/phing/style/phpunit2-frames.xsl -text +buildscripts/phing/style/phpunit2-noframes.xsl -text +buildscripts/phing/style/str.replace.function.xsl -text buildscripts/phpbuilder/build.php -text buildscripts/phpbuilder/files.txt -text buildscripts/texbuilder/build.php -text @@ -201,11 +206,6 @@ demos/quickstart/themes/Simple/style.css -text docs/application.xml -text docs/conceptual-structure.vsd -text docs/request-sequence.vsd -text -etc/style/coverage-frames.xsl -text -etc/style/log.xsl -text -etc/style/phpunit2-frames.xsl -text -etc/style/phpunit2-noframes.xsl -text -etc/style/str.replace.function.xsl -text framework/.htaccess -text framework/3rdParty/SafeHtml/HTMLSax3.php -text framework/3rdParty/SafeHtml/HTMLSax3/Decorators.php -text @@ -964,6 +964,8 @@ tests/UnitTests/simpletest/web_tester.php -text tests/UnitTests/simpletest/xml.php -text tests/unit/Collections/TListTest.php -text tests/unit/Collections/TMapTest.php -text -tests/unit/I18N/TNumberFormatTest.php -text +tests/unit/I18N/core/CultureInfoTest.php -text +tests/unit/I18N/core/NumberFormatInfoTest.php -text +tests/unit/I18N/core/NumberFormatTest.php -text tests/unit/TComponentTest.php -text tests/unit/phpunit2.php -text @@ -7,26 +7,54 @@ Phing > 2.1.1 (currently cvs HEAD needed) xdebug >= 2.0.0beta4 PhpDocumentor >= 1.3.0RC5 - + PEAR >= 1.4.4 + PEAR_PackageFileManager >= 1.6.0a4 --> <project name="prado" basedir="." default="usage"> - <property name="version" value="3.0"/> + <property name="version" value="3.0.0"/> + <property name="state" value="stable"/> <property name="pkgname" value="${phing.project.name}-${version}"/> + <property name="pkgname.pear" value="${pkgname}-pear"/> <property name="src.dir" value="framework"/> - <property name="doc.dir" value="docs/api"/> + <property name="doc.dir" value="docs"/> + <property name="doc.api.dir" value="${doc.dir}/api"/> <property name="build.base.dir" value="build"/> <property name="build.src.dir" value="${build.base.dir}/${pkgname}"/> + <property name="build.pear.dir" value="${build.base.dir}/${pkgname.pear}"/> + <property name="dist.base.dir" value="dist"/> + <property name="dist.zipfile" value="${dist.base.dir}/${pkgname}.zip"/> + <property name="dist.tarfile" value="${dist.base.dir}/${pkgname}.tar.gz"/> + <property name="dist.pearfile" value="${dist.base.dir}/${pkgname.pear}.tgz"/> <property name="tests.dir" value="tests/unit"/> <property name="reports.dir" value="reports"/> <property name="reports.unit.dir" value="${reports.dir}/unit"/> <property name="reports.codecoverage.dir" value="${reports.dir}/codecoverage"/> - <property name="reports.style.dir" value="etc/style"/> - <property name="reports.geshi.dir" value="framework/3rdParty/geshi"/> + <property name="reports.style.dir" value="buildscripts/phing/style"/> + <property name="reports.geshi.dir" value="${src.dir}/3rdParty/geshi"/> + + <fileset dir="." id="src"> + <exclude name="${src.dir}/**/.svn"/> + <include name="${src.dir}/**/*.php"/> + </fileset> + + <fileset dir="." id="misc"> + <include name="COPYRIGHT"/> + <include name="HISTORY"/> + <include name="UPGRADE"/> + <include name="index.html"/> + <exclude name="requirements/.svn"/> + <include name="requirements/*"/> + </fileset> + + <fileset dir="." id="docs"> + <exclude name="${doc.dir}/**/.svn"/> + <include name="${doc.dir}/**/*"/> + </fileset> - <fileset dir="${src.dir}" id="source"> - <exclude name="**/.svn"/> - <include name="**/*.php"/> + <fileset dir="." id="demos"> + <exclude name="demos/**/.svn"/> + <include name="demos/**/*"/> </fileset> <target name="usage"> @@ -40,10 +68,26 @@ <echo message="clean --> Clean up the mess"/> </target> - <target name="doc"> - <echo>Generating API documentation</echo> - <delete dir="${doc.dir}"/> - <phpdoc title="PRADO ${version} documentation" destdir="${doc.dir}" sourcepath="${src.dir}" output="HTML:Smarty:PHP"/> + <target name="versioncheck" unless="version"> + <echo message="====================================================="/> + <echo message="Version not specified. You must enter a version. In"/> + <echo message="the future you can add this to build.properties or"/> + <echo message="enter it on the command line: "/> + <echo message=" "/> + <echo message="-Dversion=3.0"/> + <echo message="====================================================="/> + <input propertyname="version" promptChar=":">PRADO version for package</input> + + <property name="pkgname" value="${phing.project.name}-${version}" override="true"/> + <property name="build.src.dir" value="${build.base.dir}/${pkgname}" override="true"/> + <property name="dist.zipfile" value="${build.base.dir}/${pkgname}.zip" override="true"/> + <property name="dist.tarfile" value="${build.base.dir}/${pkgname}.tar.gz" override="true"/> + <property name="dist.pearfile" value="${build.base.dir}/${pkgname}-pear.tgz" override="true"/> + </target> + + <target name="doc" description="Generating API documentation"> + <delete dir="${doc.api.dir}"/> + <phpdoc title="PRADO ${version} API Documentation" destdir="${doc.api.dir}" sourcepath="${src.dir}" output="HTML:Smarty:PHP"/> </target> <target name="test"> @@ -92,17 +136,99 @@ </coverage-report> </target> - <target name="dist"> - <echo>TBD</echo> + <target name="build" depends="versioncheck,doc" description="Creating the main PRADO build"> + <echo>Cleaning up after last build</echo> + <delete dir="${build.base.dir}"/> + <echo>Creating directory layout...</echo> + <copy todir="${build.src.dir}"> + <fileset refid="src"/> + <fileset refid="docs"/> + <fileset refid="misc"/> + <fileset refid="demos"/> + </copy> </target> + <target name="dist" depends="build" description="Creating the main PRADO distributions"> + <delete dir="${dist.base.dir}"/> + <mkdir dir="${dist.base.dir}"/> + <tar compression="gzip" destFile="${dist.tarfile}" basedir="${build.base.dir}" /> + <zip destfile="${dist.zipfile}" basedir="${build.base.dir}"/> + </target> + + <target name="build-pear" depends="versioncheck"> + <echo>Creating directory layout...</echo> + <delete dir="${build.base.dir}"/> + <copy todir="${build.pear.dir}"> + <fileset refid="src"/> + </copy> + </target> + + <target name="dist-pear" depends="build-pear"> + <echo>Creating PEAR package.xml...</echo> + <pearpkg name="${phing.project.name}" dir="${build.pear.dir}" destFile="${build.pear.dir}/package.xml"> + <fileset refid="src"/> + <fileset refid="docs"/> + + <option name="notes">Release notes</option> + + <!-- Set the simple options --> + <option name="summary">PRADO is a component-based and event-driven framework for rapid Web programming in PHP 5.</option> + <option name="description">test</option> + <option name="version" value="${version}"/> + <option name="extends" value="prado"/> + <option name="state" value="${state}"/> + <option name="license" value="BSD"/> + + <!-- Set the complex options --> + <mapping name="maintainers"> + <element> + <element key="handle" value="xue"/> + <element key="name" value="Qiang Xue"/> + <element key="email" value="qiang.xue@gmail.com"/> + <element key="role" value="lead"/> + </element> + <element> + <element key="handle" value="wei"/> + <element key="name" value="Xiang Wei Zhuo"/> + <element key="email" value="weizhuo@gmail.com"/> + <element key="role" value="lead"/> + </element> + </mapping> + + <mapping name="deps"> + <element> + <element key="type" value="php"/> + <element key="version" value="5.0.3"/> + <element key="rel" value="ge"/> + </element> + </mapping> + + <mapping name="dir_roles"> + <element key="docs" value="doc"/> + </mapping> + + <mapping name="exceptions"> + <element key="HISTORY" value="doc"/> + </mapping> + </pearpkg> + + <echo>Validating package.xml</echo> + <exec command="pear package-validate package.xml" dir="${build.base.dir}" passthru="true"/> + + <!--<echo>Converting package.xml from v1 to v2</echo> + <exec command="pear convert" dir="${build.base.dir}" passthru="true"/>--> + + <echo>Creating tar.gz package...</echo> + <mkdir dir="${dist.base.dir}"/> + <tar compression="gzip" destFile="${dist.pearfile}" basedir="${build.base.dir}"/> + </target> <target name="clean"> <echo>Cleaning up the mess</echo> - <delete dir="${build.dir}"/> - <delete dir="${doc.dir}"/> - <delete dir="${reports.unit.dir}"/> - <delete dir="${reports.codecoverage.dir}"/> + <delete dir="${build.base.dir}"/> + <delete dir="${dist.base.dir}"/> + <delete dir="${doc.api.dir}"/> + <delete dir="${reports.dir}"/> </target> </project>
\ No newline at end of file diff --git a/etc/style/coverage-frames.xsl b/buildscripts/phing/style/coverage-frames.xsl index edfcf298..edfcf298 100644 --- a/etc/style/coverage-frames.xsl +++ b/buildscripts/phing/style/coverage-frames.xsl diff --git a/etc/style/log.xsl b/buildscripts/phing/style/log.xsl index a460b667..a460b667 100644 --- a/etc/style/log.xsl +++ b/buildscripts/phing/style/log.xsl diff --git a/etc/style/phpunit2-frames.xsl b/buildscripts/phing/style/phpunit2-frames.xsl index 7ccc4f33..7ccc4f33 100644 --- a/etc/style/phpunit2-frames.xsl +++ b/buildscripts/phing/style/phpunit2-frames.xsl diff --git a/etc/style/phpunit2-noframes.xsl b/buildscripts/phing/style/phpunit2-noframes.xsl index d2c772da..d2c772da 100644 --- a/etc/style/phpunit2-noframes.xsl +++ b/buildscripts/phing/style/phpunit2-noframes.xsl diff --git a/etc/style/str.replace.function.xsl b/buildscripts/phing/style/str.replace.function.xsl index 5d74e86c..5d74e86c 100644 --- a/etc/style/str.replace.function.xsl +++ b/buildscripts/phing/style/str.replace.function.xsl 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/TNumberFormatTest.php b/tests/unit/I18N/core/NumberFormatTest.php index 18e5f3ff..af6a06ca 100644 --- a/tests/unit/I18N/TNumberFormatTest.php +++ b/tests/unit/I18N/core/NumberFormatTest.php @@ -1,13 +1,13 @@ <?php -require_once dirname(__FILE__).'/../phpunit2.php'; +require_once dirname(__FILE__).'/../../phpunit2.php'; //NOTE: This page require UTF-8 aware editors Prado::using('System.I18N.core.NumberFormat'); /** - * @package System.I18N + * @package System.I18N.core */ -class TNumberFormatTest extends PHPUnit2_Framework_TestCase { +class NumberFormatTest extends PHPUnit2_Framework_TestCase { function testDefaultFormats() { $formatter = new NumberFormat(); $number = '123456789.125156'; @@ -91,13 +91,21 @@ class TNumberFormatTest extends PHPUnit2_Framework_TestCase { $this->assertNotEquals($wanted, $formatter->format($number, $pattern)); } - function testNegativeValue() { + 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 |