1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- class ParsingTest extends PHPUnit_Framework_TestCase
- {
- public function test_extract_plural_forms_header_from_po_header()
- {
- $parser = new gettext_reader(null);
- // It defaults to a "Western-style" plural header.
- $this->assertEquals(
- 'nplurals=2; plural=n == 1 ? 0 : 1;',
- $parser->extract_plural_forms_header_from_po_header("")
- );
- // Extracting it from the middle of the header works.
- $this->assertEquals(
- 'nplurals=1; plural=0;',
- $parser->extract_plural_forms_header_from_po_header(
- "Content-type: text/html; charset=UTF-8\n"
- ."Plural-Forms: nplurals=1; plural=0;\n"
- ."Last-Translator: nobody\n"
- )
- );
- // It's also case-insensitive.
- $this->assertEquals(
- 'nplurals=1; plural=0;',
- $parser->extract_plural_forms_header_from_po_header(
- "PLURAL-forms: nplurals=1; plural=0;\n"
- )
- );
- // It falls back to default if it's not on a separate line.
- $this->assertEquals(
- 'nplurals=2; plural=n == 1 ? 0 : 1;',
- $parser->extract_plural_forms_header_from_po_header(
- "Content-type: text/html; charset=UTF-8" // note the missing \n here
- ."Plural-Forms: nplurals=1; plural=0;\n"
- ."Last-Translator: nobody\n"
- )
- );
- }
- /**
- * @expectedException InvalidArgumentException
- */
- public function test_select_string_disallows_nonint_numbers()
- {
- $pofile_data = ''
- ."msgid \"\"\n"
- ."msgstr \"\"\n"
- ."\"Content-Type: text/plain; charset=utf-8\\n\"\n"
- ."\"Plural-Forms: nplurals=2; plural= n == 1 ? 0 : 1;\\n\"\n";
- $mofile = tempnam(sys_get_temp_dir(), "pg");
- $msgfmt = popen("msgfmt -o $mofile -", "w");
- fwrite($msgfmt, $pofile_data);
- pclose($msgfmt);
- $modata = new CachedFileReader($mofile);
- unlink($mofile);
- $parser = new gettext_reader($modata);
- // It defaults to a "Western-style" plural header.
- $this->assertEquals(
- 'nplurals=2; plural=n == 1 ? 0 : 1;',
- $parser->extract_plural_forms_header_from_po_header("")
- );
- $new_tempfile = tempnam(sys_get_temp_dir(), "pg");
- $parser->select_string(
- "(file_put_contents('$new_tempfile', 'boom'))"
- );
- $this->assertEquals("", file_get_contents($new_tempfile));
- unlink($new_tempfile);
- }
- /**
- * @dataProvider data_provider_test_npgettext
- */
- public function test_npgettext($number, $expected)
- {
- $parser = new gettext_reader(null);
- $result = $parser->npgettext(
- "context",
- "%d pig went to the market\n",
- "%d pigs went to the market\n",
- $number
- );
- $this->assertSame($expected, $result);
- }
- public static function data_provider_test_npgettext()
- {
- return array(
- array(1, "%d pig went to the market\n"),
- array(2, "%d pigs went to the market\n"),
- );
- }
- }
|