Make WordPress Core

Changeset 37716


Ignore:
Timestamp:
06/15/2016 05:40:23 PM (10 years ago)
Author:
SergeyBiryukov
Message:

I18N: Add a unit test for wp_maybe_decline_date().

See #36790.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/functions.php

    r37705 r37716  
    832832
    833833        /**
     834         * @ticket 36790
     835         * @dataProvider data_wp_maybe_decline_date
     836         */
     837        function test_wp_maybe_decline_date( $test_locale, $input, $output ) {
     838                global $locale, $wp_locale;
     839
     840                $locale_original    = $locale;
     841                $wp_locale_original = $wp_locale;
     842
     843                add_filter( 'gettext_with_context', array( $this, '_enable_months_names_declension' ), 10, 4 );
     844
     845                $month_names = $this->_get_months_names( $test_locale );
     846
     847                $locale                    = $test_locale;
     848                $wp_locale->month          = $month_names['month'];
     849                $wp_locale->month_genitive = $month_names['month_genitive'];
     850
     851                $this->assertEquals( $output, wp_maybe_decline_date( $input ) );
     852
     853                remove_filter( 'gettext_with_context', array( $this, '_enable_months_names_declension' ), 10, 4 );
     854
     855                $locale    = $locale_original;
     856                $wp_locale = $wp_locale_original;
     857        }
     858
     859        function _enable_months_names_declension( $translation, $text, $context, $domain ) {
     860                if ( 'decline months names: on or off' === $context ) {
     861                        $translation = 'on';
     862                }
     863
     864                return $translation;
     865        }
     866
     867        function _get_months_names( $locale ) {
     868                switch ( $locale ) {
     869                        case 'ru_RU':
     870                                $months = array(
     871                                        'month' => array( 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' ),
     872                                        'month_genitive' => array( 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря' ),
     873                                );
     874                                break;
     875
     876                        case 'pl_PL':
     877                                $months = array(
     878                                        'month' => array( 'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień' ),
     879                                        'month_genitive' => array( 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia' ),
     880                                );
     881                                break;
     882
     883                        case 'hr':
     884                                $months = array(
     885                                        'month' => array( 'Siječanj', 'Veljača', 'Ožujak', 'Travanj', 'Svibanj', 'Lipanj', 'Srpanj', 'Kolovoz', 'Rujan', 'Listopad', 'Studeni', 'Prosinac' ),
     886                                        'month_genitive' => array( 'siječnja', 'veljače', 'ožujka', 'ožujka', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', 'rujna', 'listopada', 'studenoga', 'prosinca' ),
     887                                );
     888                                break;
     889
     890                        case 'ca':
     891                                $months = array(
     892                                        'month' => array( 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', 'novembre', 'desembre' ),
     893                                        'month_genitive' => array( 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', 'novembre', 'desembre' ),
     894                                );
     895                                break;
     896
     897                        case 'cs_CZ':
     898                                $months = array(
     899                                        'month' => array( 'Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec' ),
     900                                        'month_genitive' => array( 'ledna', 'února', 'března', 'dubna', 'května', 'června', 'července', 'srpna', 'září', 'října', 'listopadu', 'prosince' ),
     901                                );
     902                                break;
     903
     904                        default:
     905                                $months = array(
     906                                        'month' => array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ),
     907                                        'month_genitive' => array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' )
     908                                );
     909                }
     910
     911                return $months;
     912        }
     913
     914        function data_wp_maybe_decline_date() {
     915                return array(
     916                        array( 'ru_RU', '21 Июнь',       '21 июня' ),
     917                        array( 'ru_RU', '1 Январь 2016', '1 января 2016' ),
     918                        array( 'pl_PL', '1 Styczeń',     '1 stycznia' ),
     919                        array( 'hr',    '1. Siječanj',   '1. siječnja' ),
     920                        array( 'ca',    '1 de abril',    "1 d'abril" ),
     921                        array( 'cs_CZ', '1. Červen',     '1. června' ),
     922                        array( 'cs_CZ', '1. Červenec',   '1. července' ),
     923                );
     924        }
     925
     926        /**
    834927         * @ticket 36054
    835928         * @dataProvider datetime_provider
Note: See TracChangeset for help on using the changeset viewer.