Classes List

Symfony\Component\Translation\Tests\MessageSelectorTest

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
 61 
 62 
 63 
 64 
 65 
 66 
 67 
 68 
 69 
 70 
 71 
 72 
 73 
 74 
 75 
 76 
 77 
 78 
 79 
 80 
 81 
 82 
 83 
 84 
 85 
 86 
 87 
 88 
 89 
 90 
 91 
 92 
 93 
 94 
 95 
 96 
 97 
 98 
 99 
 100 
 101 
 102 
 103 
 104 
 105 
 106 
 107 
 108 
 109 
 110 
 111 
 112 
 113 
 114 
 115 
 116 
 117 
 118 
 119 
 120 
 121 
 122 
 123 
 124 
 125 
 126 
 127 
 128 
 129 
 130 
 131 
 132 
 133 
 134 
 135 
 136 
 137 
 138 
<?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\Translation\Tests;

use PHPUnit\Framework\TestCase;
use Symfony\Component\Translation\MessageSelector;

class MessageSelectorTest extends TestCase
{
    /** * @dataProvider getChooseTests */
    public function testChoose($expected$id$number)
    {
        $selector = new MessageSelector();

        $this->assertEquals($expected$selector->choose($id$number'en'));
    }

    public function testReturnMessageIfExactlyOneStandardRuleIsGiven()
    {
        $selector = new MessageSelector();

        $this->assertEquals('There are two apples'$selector->choose('There are two apples'2'en'));
    }

    /** * @dataProvider getNonMatchingMessages * @expectedException \Symfony\Component\Translation\Exception\InvalidArgumentException */
    public function testThrowExceptionIfMatchingMessageCannotBeFound($id$number)
    {
        $selector = new MessageSelector();

        $selector->choose($id$number'en');
    }

    public function getNonMatchingMessages()
    {
        return array(
            array('{0} There are no apples|{1} There is one apple'2),
            array('{1} There is one apple|]1,Inf] There are %count% apples'0),
            array('{1} There is one apple|]2,Inf] There are %count% apples'2),
            array('{0} There are no apples|There is one apple'2),
        );
    }

    public function getChooseTests()
    {
        return array(
            array('There are no apples''{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples'0),
            array('There are no apples''{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples'0),
            array('There are no apples''{0}There are no apples|{1} There is one apple|]1,Inf] There are %count% apples'0),

            array('There is one apple''{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples'1),

            array('There are %count% apples''{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples'10),
            array('There are %count% apples''{0} There are no apples|{1} There is one apple|]1,Inf]There are %count% apples'10),
            array('There are %count% apples''{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples'10),

            array('There are %count% apples''There is one apple|There are %count% apples'0),
            array('There is one apple''There is one apple|There are %count% apples'1),
            array('There are %count% apples''There is one apple|There are %count% apples'10),

            array('There are %count% apples''one: There is one apple|more: There are %count% apples'0),
            array('There is one apple''one: There is one apple|more: There are %count% apples'1),
            array('There are %count% apples''one: There is one apple|more: There are %count% apples'10),

            array('There are no apples''{0} There are no apples|one: There is one apple|more: There are %count% apples'0),
            array('There is one apple''{0} There are no apples|one: There is one apple|more: There are %count% apples'1),
            array('There are %count% apples''{0} There are no apples|one: There is one apple|more: There are %count% apples'10),

            array('''{0}|{1} There is one apple|]1,Inf] There are %count% apples'0),
            array('''{0} There are no apples|{1}|]1,Inf] There are %count% apples'1),

            // Indexed only tests which are Gettext PoFile* compatible strings.
            array('There are %count% apples''There is one apple|There are %count% apples'0),
            array('There is one apple''There is one apple|There are %count% apples'1),
            array('There are %count% apples''There is one apple|There are %count% apples'2),

            // Tests for float numbers
            array('There is almost one apple''{0} There are no apples|]0,1[ There is almost one apple|{1} There is one apple|[1,Inf] There is more than one apple'0.7),
            array('There is one apple''{0} There are no apples|]0,1[There are %count% apples|{1} There is one apple|[1,Inf] There is more than one apple'1),
            array('There is more than one apple''{0} There are no apples|]0,1[There are %count% apples|{1} There is one apple|[1,Inf] There is more than one apple'1.7),
            array('There are no apples''{0} There are no apples|]0,1[There are %count% apples|{1} There is one apple|[1,Inf] There is more than one apple'0),
            array('There are no apples''{0} There are no apples|]0,1[There are %count% apples|{1} There is one apple|[1,Inf] There is more than one apple'0.0),
            array('There are no apples''{0.0} There are no apples|]0,1[There are %count% apples|{1} There is one apple|[1,Inf] There is more than one apple'0),

            // Test texts with new-lines
            // with double-quotes and \n in id & double-quotes and actual newlines in text
            array("This is a text with a\n new-line in it. Selector = 0."'{0}This is a text with a new-line in it. Selector = 0.|{1}This is a text with a new-line in it. Selector = 1.|[1,Inf]This is a text with a new-line in it. Selector > 1.'0),
            // with double-quotes and \n in id and single-quotes and actual newlines in text
            array("This is a text with a\n new-line in it. Selector = 1."'{0}This is a text with a new-line in it. Selector = 0.|{1}This is a text with a new-line in it. Selector = 1.|[1,Inf]This is a text with a new-line in it. Selector > 1.'1),
            array("This is a text with a\n new-line in it. Selector > 1."'{0}This is a text with a new-line in it. Selector = 0.|{1}This is a text with a new-line in it. Selector = 1.|[1,Inf]This is a text with a new-line in it. Selector > 1.'5),
            // with double-quotes and id split accros lines
            array('This is a text with a new-line in it. Selector = 1.''{0}This is a text with a new-line in it. Selector = 0.|{1}This is a text with a new-line in it. Selector = 1.|[1,Inf]This is a text with a new-line in it. Selector > 1.'1),
            // with single-quotes and id split accros lines
            array('This is a text with a new-line in it. Selector > 1.''{0}This is a text with a new-line in it. Selector = 0.|{1}This is a text with a new-line in it. Selector = 1.|[1,Inf]This is a text with a new-line in it. Selector > 1.'5),
            // with single-quotes and \n in text
            array('This is a text with a\nnew-line in it. Selector = 0.''{0}This is a text with a\nnew-line in it. Selector = 0.|{1}This is a text with a\nnew-line in it. Selector = 1.|[1,Inf]This is a text with a\nnew-line in it. Selector > 1.'0),
            // with double-quotes and id split accros lines
            array("This is a text with a\nnew-line in it. Selector = 1.""{0}This is a text with a\nnew-line in it. Selector = 0.|{1}This is a text with a\nnew-line in it. Selector = 1.|[1,Inf]This is a text with a\nnew-line in it. Selector > 1."1),
            // esacape pipe
            array('This is a text with | in it. Selector = 0.''{0}This is a text with || in it. Selector = 0.|{1}This is a text with || in it. Selector = 1.'0),
            // Empty plural set (2 plural forms) from a .PO file
            array('''|'1),
            // Empty plural set (3 plural forms) from a .PO file
            array('''||'1),
        );
    }
}