merged branch stealth35/locale_intl_error_name (PR #3959)

Commits
-------

5799d25 Add BOGUS UErrorCode test
6f9c05d [Locale] Complete Stub with intl_error_name

Discussion
----------

[Locale] Complete StubIntl with the missing intl_error_name

    Bug fix: yes
    Feature addition: no
    Backwards compatibility break: no
    Symfony2 tests pass: yes
    Fixes the following tickets: -
    Todo: -
This commit is contained in:
Fabien Potencier 2012-04-18 10:38:01 +02:00
commit 8dc25abe1b
3 changed files with 74 additions and 0 deletions

View File

@ -45,3 +45,14 @@ function intl_get_error_code() {
function intl_get_error_message() {
return StubIntl::getErrorMessage();
}
/**
* Stub implementation for the intl_error_name function of the intl extension
*
* @return String will be the same as the name of the error code constant
*
* @see Symfony\Component\Locale\Stub\StubIntl::getErrorName
*/
function intl_error_name($errorCode) {
return StubIntl::getErrorName($errorCode);
}

View File

@ -101,6 +101,20 @@ abstract class StubIntl
return self::$errorMessage;
}
/**
* Returns the symbolic name for a given error code
*
* @return string
*/
static public function getErrorName($code)
{
if (isset(self::$errorCodes[$code])) {
return self::$errorCodes[$code];
}
return '[BOGUS UErrorCode]';
}
/**
* Sets the current error
*

View File

@ -0,0 +1,49 @@
<?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\Tests\Component\Locale\Stub;
require_once __DIR__.'/../TestCase.php';
use Symfony\Component\Locale\Locale;
use Symfony\Component\Locale\Stub\StubIntl;
use Symfony\Tests\Component\Locale\TestCase as LocaleTestCase;
class StubIntlTest extends LocaleTestCase
{
public function codeProvider()
{
return array (
array(-129, '[BOGUS UErrorCode]'),
array(0, 'U_ZERO_ERROR'),
array(1, 'U_ILLEGAL_ARGUMENT_ERROR'),
array(9, 'U_PARSE_ERROR'),
array(129, '[BOGUS UErrorCode]'),
);
}
/**
* @dataProvider codeProvider
*/
public function testGetErrorName($code, $name)
{
$this->assertSame($name, StubIntl::getErrorName($code));
}
/**
* @dataProvider codeProvider
*/
public function testGetErrorNameWithIntl($code, $name)
{
$this->skipIfIntlExtensionIsNotLoaded();
$this->assertSame(intl_error_name($code), StubIntl::getErrorName($code));
}
}