You are here

class MessageSelectorTest in Plug 7

Hierarchy

  • class \Symfony\Component\Translation\Tests\MessageSelectorTest extends \Symfony\Component\Translation\Tests\PHPUnit_Framework_TestCase

Expanded class hierarchy of MessageSelectorTest

File

lib/Symfony/translation/Tests/MessageSelectorTest.php, line 16

Namespace

Symfony\Component\Translation\Tests
View source
class MessageSelectorTest extends \PHPUnit_Framework_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 \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,
      ),
    );
  }

}

Members

Namesort descending Modifiers Type Description Overrides
MessageSelectorTest::getChooseTests public function
MessageSelectorTest::getNonMatchingMessages public function
MessageSelectorTest::testChoose public function @dataProvider getChooseTests
MessageSelectorTest::testReturnMessageIfExactlyOneStandardRuleIsGiven public function
MessageSelectorTest::testThrowExceptionIfMatchingMessageCannotBeFound public function @dataProvider getNonMatchingMessages @expectedException \InvalidArgumentException