[Form] Improved tests to use the IntlTestHelper class

This commit is contained in:
Bernhard Schussek 2013-03-16 01:38:38 +01:00
parent 3dd75ff843
commit aceb20d610
18 changed files with 111 additions and 164 deletions

View File

@ -11,7 +11,7 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
abstract class DateTimeTestCase extends LocalizedTestCase
abstract class DateTimeTestCase extends \PHPUnit_Framework_TestCase
{
public static function assertDateTimeEquals(\DateTime $expected, \DateTime $actual)
{

View File

@ -12,6 +12,7 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer;
use Symfony\Component\Intl\Util\IntlTestHelper;
class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
{
@ -22,6 +23,9 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
{
parent::setUp();
// Since we test against "de_AT", we need the full implementation
IntlTestHelper::requireFullIntl($this);
\Locale::setDefault('de_AT');
$this->dateTime = new \DateTime('2010-02-03 04:05:06 UTC');
@ -57,15 +61,11 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
array(\IntlDateFormatter::FULL, \IntlDateFormatter::NONE, null, 'Mittwoch, 03. Februar 2010', '2010-02-03 00:00:00 UTC'),
array(null, \IntlDateFormatter::SHORT, null, '03.02.2010 04:05', '2010-02-03 04:05:00 UTC'),
array(null, \IntlDateFormatter::MEDIUM, null, '03.02.2010 04:05:06', '2010-02-03 04:05:06 UTC'),
array(null, \IntlDateFormatter::LONG, null,
'03.02.2010 04:05:06 GMT'.($this->isLowerThanIcuVersion('4.8') ? '+00:00' : ''),
'2010-02-03 04:05:06 UTC'),
array(null, \IntlDateFormatter::LONG, null, '03.02.2010 04:05:06 GMT', '2010-02-03 04:05:06 UTC'),
// see below for extra test case for time format FULL
array(\IntlDateFormatter::NONE, \IntlDateFormatter::SHORT, null, '04:05', '1970-01-01 04:05:00 UTC'),
array(\IntlDateFormatter::NONE, \IntlDateFormatter::MEDIUM, null, '04:05:06', '1970-01-01 04:05:06 UTC'),
array(\IntlDateFormatter::NONE, \IntlDateFormatter::LONG, null,
'04:05:06 GMT'.($this->isLowerThanIcuVersion('4.8') ? '+00:00' : ''),
'1970-01-01 04:05:06 UTC'),
array(\IntlDateFormatter::NONE, \IntlDateFormatter::LONG, null, '04:05:06 GMT', '1970-01-01 04:05:06 UTC'),
array(null, null, 'yyyy-MM-dd HH:mm:00', '2010-02-03 04:05:00', '2010-02-03 04:05:00 UTC'),
array(null, null, 'yyyy-MM-dd HH:mm', '2010-02-03 04:05', '2010-02-03 04:05:00 UTC'),
array(null, null, 'yyyy-MM-dd HH', '2010-02-03 04', '2010-02-03 04:00:00 UTC'),
@ -101,15 +101,9 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
public function testTransformFullTime()
{
if ($this->isLowerThanIcuVersion('4.0')) {
$this->markTestSkipped('Please upgrade ICU version to 4.0+');
}
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC', null, \IntlDateFormatter::FULL);
$expected = $this->isLowerThanIcuVersion('4.8') ? '03.02.2010 04:05:06 GMT+00:00' : '03.02.2010 04:05:06 GMT';
$this->assertEquals($expected, $transformer->transform($this->dateTime));
$this->assertEquals('03.02.2010 04:05:06 GMT', $transformer->transform($this->dateTime));
}
public function testTransformToDifferentLocale()
@ -118,7 +112,7 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC');
$this->assertEquals('Feb 3, 2010 4:05 AM', $transformer->transform($this->dateTime));
$this->assertEquals('Feb 3, 2010, 4:05 AM', $transformer->transform($this->dateTime));
}
public function testTransformEmpty()
@ -188,10 +182,6 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
public function testReverseTransformFullTime()
{
if ($this->isLowerThanIcuVersion('4.0')) {
$this->markTestSkipped('Please upgrade ICU version to 4.0+');
}
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC', null, \IntlDateFormatter::FULL);
$this->assertDateTimeEquals($this->dateTime, $transformer->reverseTransform('03.02.2010 04:05:06 GMT+00:00'));
@ -203,7 +193,7 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC');
$this->assertDateTimeEquals($this->dateTimeWithoutSeconds, $transformer->reverseTransform('Feb 3, 2010 04:05 AM'));
$this->assertDateTimeEquals($this->dateTimeWithoutSeconds, $transformer->reverseTransform('Feb 3, 2010, 04:05 AM'));
}
public function testReverseTransformWithDifferentTimezones()

View File

@ -12,13 +12,17 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\IntegerToLocalizedStringTransformer;
use Symfony\Component\Intl\Util\IntlTestHelper;
class IntegerToLocalizedStringTransformerTest extends LocalizedTestCase
class IntegerToLocalizedStringTransformerTest extends \PHPUnit_Framework_TestCase
{
protected function setUp()
{
parent::setUp();
// Since we test against "de_AT", we need the full implementation
IntlTestHelper::requireFullIntl($this);
\Locale::setDefault('de_AT');
}

View File

@ -1,70 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
abstract class LocalizedTestCase extends \PHPUnit_Framework_TestCase
{
protected static $icuVersion = null;
protected function setUp()
{
parent::setUp();
if (!$this->isIntlExtensionLoaded()) {
$this->markTestSkipped('The "intl" extension is not available');
}
}
protected function isIntlExtensionLoaded()
{
return extension_loaded('intl');
}
protected function isLowerThanIcuVersion($version)
{
$version = $this->normalizeIcuVersion($version);
$icuVersion = $this->normalizeIcuVersion($this->getIntlExtensionIcuVersion());
return $icuVersion < $version;
}
protected function normalizeIcuVersion($version)
{
return ((float) $version) * 100;
}
protected function getIntlExtensionIcuVersion()
{
if (isset(self::$icuVersion)) {
return self::$icuVersion;
}
if (!$this->isIntlExtensionLoaded()) {
throw new \RuntimeException('The intl extension is not available');
}
if (defined('INTL_ICU_VERSION')) {
return INTL_ICU_VERSION;
}
$reflector = new \ReflectionExtension('intl');
ob_start();
$reflector->info();
$output = ob_get_clean();
preg_match('/^ICU version => (.*)$/m', $output, $matches);
self::$icuVersion = $matches[1];
return self::$icuVersion;
}
}

View File

@ -12,13 +12,17 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\MoneyToLocalizedStringTransformer;
use Symfony\Component\Intl\Util\IntlTestHelper;
class MoneyToLocalizedStringTransformerTest extends LocalizedTestCase
class MoneyToLocalizedStringTransformerTest extends \PHPUnit_Framework_TestCase
{
protected function setUp()
{
parent::setUp();
// Since we test against "de_AT", we need the full implementation
IntlTestHelper::requireFullIntl($this);
\Locale::setDefault('de_AT');
}

View File

@ -12,13 +12,17 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\NumberToLocalizedStringTransformer;
use Symfony\Component\Intl\Util\IntlTestHelper;
class NumberToLocalizedStringTransformerTest extends LocalizedTestCase
class NumberToLocalizedStringTransformerTest extends \PHPUnit_Framework_TestCase
{
protected function setUp()
{
parent::setUp();
// Since we test against "de_AT", we need the full implementation
IntlTestHelper::requireFullIntl($this);
\Locale::setDefault('de_AT');
}
@ -96,10 +100,6 @@ class NumberToLocalizedStringTransformerTest extends LocalizedTestCase
public function testDecimalSeparatorMayBeDotIfGroupingSeparatorIsNotDot()
{
if ($this->isLowerThanIcuVersion('4.7')) {
$this->markTestSkipped('Please upgrade ICU version to 4.7+');
}
\Locale::setDefault('fr');
$transformer = new NumberToLocalizedStringTransformer(null, true);
@ -117,10 +117,6 @@ class NumberToLocalizedStringTransformerTest extends LocalizedTestCase
*/
public function testDecimalSeparatorMayNotBeDotIfGroupingSeparatorIsDot()
{
if ($this->isLowerThanIcuVersion('4.7')) {
$this->markTestSkipped('Please upgrade ICU version to 4.7+');
}
$transformer = new NumberToLocalizedStringTransformer(null, true);
$transformer->reverseTransform('1.234.5');
@ -131,10 +127,6 @@ class NumberToLocalizedStringTransformerTest extends LocalizedTestCase
*/
public function testDecimalSeparatorMayNotBeDotIfGroupingSeparatorIsDotWithNoGroupSep()
{
if ($this->isLowerThanIcuVersion('4.7')) {
$this->markTestSkipped('Please upgrade ICU version to 4.7+');
}
$transformer = new NumberToLocalizedStringTransformer(null, true);
$transformer->reverseTransform('1234.5');
@ -151,11 +143,7 @@ class NumberToLocalizedStringTransformerTest extends LocalizedTestCase
public function testDecimalSeparatorMayBeCommaIfGroupingSeparatorIsNotComma()
{
if ($this->isLowerThanIcuVersion('4.7')) {
$this->markTestSkipped('Please upgrade ICU version to 4.7+');
}
\Locale::setDefault('ak');
\Locale::setDefault('bg');
$transformer = new NumberToLocalizedStringTransformer(null, true);
// completely valid format
@ -172,10 +160,6 @@ class NumberToLocalizedStringTransformerTest extends LocalizedTestCase
*/
public function testDecimalSeparatorMayNotBeCommaIfGroupingSeparatorIsComma()
{
if ($this->isLowerThanIcuVersion('4.7')) {
$this->markTestSkipped('Please upgrade ICU version to 4.7+');
}
\Locale::setDefault('en');
$transformer = new NumberToLocalizedStringTransformer(null, true);
@ -187,10 +171,6 @@ class NumberToLocalizedStringTransformerTest extends LocalizedTestCase
*/
public function testDecimalSeparatorMayNotBeCommaIfGroupingSeparatorIsCommaWithNoGroupSep()
{
if ($this->isLowerThanIcuVersion('4.7')) {
$this->markTestSkipped('Please upgrade ICU version to 4.7+');
}
\Locale::setDefault('en');
$transformer = new NumberToLocalizedStringTransformer(null, true);

View File

@ -12,13 +12,17 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\PercentToLocalizedStringTransformer;
use Symfony\Component\Intl\Util\IntlTestHelper;
class PercentToLocalizedStringTransformerTest extends LocalizedTestCase
class PercentToLocalizedStringTransformerTest extends \PHPUnit_Framework_TestCase
{
protected function setUp()
{
parent::setUp();
// Since we test against "de_AT", we need the full implementation
IntlTestHelper::requireFullIntl($this);
\Locale::setDefault('de_AT');
}

View File

@ -12,9 +12,17 @@
namespace Symfony\Component\Form\Tests\Extension\Core\Type;
use Symfony\Component\Form\Extension\Core\View\ChoiceView;
use Symfony\Component\Intl\Util\IntlTestHelper;
class CountryTypeTest extends LocalizedTestCase
class CountryTypeTest extends TypeTestCase
{
protected function setUp()
{
IntlTestHelper::requireIntl($this);
parent::setUp();
}
public function testCountriesAreSelectable()
{
$form = $this->factory->create('country');

View File

@ -12,9 +12,17 @@
namespace Symfony\Component\Form\Tests\Extension\Core\Type;
use Symfony\Component\Form\FormError;
use Symfony\Component\Intl\Util\IntlTestHelper;
class DateTimeTypeTest extends LocalizedTestCase
class DateTimeTypeTest extends TypeTestCase
{
protected function setUp()
{
IntlTestHelper::requireIntl($this);
parent::setUp();
}
public function testSubmitDateTime()
{
$form = $this->factory->create('datetime', null, array(

View File

@ -13,13 +13,17 @@ namespace Symfony\Component\Form\Tests\Extension\Core\Type;
use Symfony\Component\Form\Extension\Core\View\ChoiceView;
use Symfony\Component\Form\FormError;
use Symfony\Component\Intl\Util\IntlTestHelper;
class DateTypeTest extends LocalizedTestCase
class DateTypeTest extends TypeTestCase
{
protected function setUp()
{
parent::setUp();
// we test against "de_AT", so we need the full implementation
IntlTestHelper::requireFullIntl($this);
\Locale::setDefault('de_AT');
}
@ -385,7 +389,7 @@ class DateTypeTest extends LocalizedTestCase
$this->assertEquals(array(
new ChoiceView('1', '1', 'Jän'),
new ChoiceView('4', '4', 'Apr')
new ChoiceView('4', '4', 'Apr.')
), $view['month']->vars['choices']);
}

View File

@ -11,8 +11,17 @@
namespace Symfony\Component\Form\Tests\Extension\Core\Type;
class IntegerTypeTest extends LocalizedTestCase
use Symfony\Component\Intl\Util\IntlTestHelper;
class IntegerTypeTest extends TypeTestCase
{
protected function setUp()
{
IntlTestHelper::requireIntl($this);
parent::setUp();
}
public function testSubmitCastsToInteger()
{
$form = $this->factory->create('integer');

View File

@ -12,9 +12,17 @@
namespace Symfony\Component\Form\Tests\Extension\Core\Type;
use Symfony\Component\Form\Extension\Core\View\ChoiceView;
use Symfony\Component\Intl\Util\IntlTestHelper;
class LanguageTypeTest extends LocalizedTestCase
class LanguageTypeTest extends TypeTestCase
{
protected function setUp()
{
IntlTestHelper::requireIntl($this);
parent::setUp();
}
public function testCountriesAreSelectable()
{
$form = $this->factory->create('language');

View File

@ -12,9 +12,17 @@
namespace Symfony\Component\Form\Tests\Extension\Core\Type;
use Symfony\Component\Form\Extension\Core\View\ChoiceView;
use Symfony\Component\Intl\Util\IntlTestHelper;
class LocaleTypeTest extends LocalizedTestCase
class LocaleTypeTest extends TypeTestCase
{
protected function setUp()
{
IntlTestHelper::requireIntl($this);
parent::setUp();
}
public function testLocalesAreSelectable()
{
$form = $this->factory->create('locale');

View File

@ -1,34 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\Tests\Extension\Core\Type;
use Symfony\Component\Intl\Intl;
abstract class LocalizedTestCase extends TypeTestCase
{
protected function setUp()
{
parent::setUp();
if (!class_exists('Symfony\Component\Intl\Intl')) {
$this->markTestSkipped('The "Intl" component is not available');
}
if (!Intl::isExtensionLoaded()) {
$this->markTestSkipped('The "intl" extension is not available');
}
Intl::setDataSource(Intl::STUB);
\Locale::setDefault('en');
}
}

View File

@ -11,8 +11,19 @@
namespace Symfony\Component\Form\Tests\Extension\Core\Type;
class MoneyTypeTest extends LocalizedTestCase
use Symfony\Component\Intl\Util\IntlTestHelper;
class MoneyTypeTest extends TypeTestCase
{
protected function setUp()
{
// we test against different locales, so we need the full
// implementation
IntlTestHelper::requireFullIntl($this);
parent::setUp();
}
public function testPassMoneyPatternToView()
{
\Locale::setDefault('de_DE');

View File

@ -11,12 +11,17 @@
namespace Symfony\Component\Form\Tests\Extension\Core\Type;
class NumberTypeTest extends LocalizedTestCase
use Symfony\Component\Intl\Util\IntlTestHelper;
class NumberTypeTest extends TypeTestCase
{
protected function setUp()
{
parent::setUp();
// we test against "de_DE", so we need the full implementation
IntlTestHelper::requireFullIntl($this);
\Locale::setDefault('de_DE');
}

View File

@ -13,9 +13,17 @@ namespace Symfony\Component\Form\Tests\Extension\Core\Type;
use Symfony\Component\Form\Extension\Core\View\ChoiceView;
use Symfony\Component\Form\FormError;
use Symfony\Component\Intl\Util\IntlTestHelper;
class TimeTypeTest extends LocalizedTestCase
class TimeTypeTest extends TypeTestCase
{
protected function setUp()
{
IntlTestHelper::requireIntl($this);
parent::setUp();
}
public function testSubmitDateTime()
{
$form = $this->factory->create('time', null, array(

View File

@ -11,7 +11,7 @@
namespace Symfony\Component\Form\Tests\Extension\Core\Type;
class UrlTypeTest extends LocalizedTestCase
class UrlTypeTest extends TypeTestCase
{
public function testSubmitAddsDefaultProtocolIfNoneIsIncluded()
{