Bladeren bron

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: -
Fabien Potencier 13 jaren geleden
bovenliggende
commit
8dc25abe1b

+ 11 - 0
src/Symfony/Component/Locale/Resources/stubs/functions.php

@@ -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);
+}

+ 14 - 0
src/Symfony/Component/Locale/Stub/StubIntl.php

@@ -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
      *

+ 49 - 0
tests/Symfony/Tests/Component/Locale/Stub/StubIntlTest.php

@@ -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));
+    }
+}