[ Index ]

PHP Cross Reference of GlotPress

title

Body

[close]

/t/ -> test_po.php (source)

   1  <?php
   2  require_once ('init.php');
   3  
   4  class GP_Test_PO extends GP_UnitTestCase {
   5      function GP_Test_PO() {
   6          // not so random wordpress.pot string -- multiple lines
   7          $this->mail = "Your new WordPress blog has been successfully set up at:
   8  
   9  %1\$s
  10  
  11  You can log in to the administrator account with the following information:
  12  
  13  Username: %2\$s
  14  Password: %3\$s
  15  
  16  We hope you enjoy your new blog. Thanks!
  17  
  18  --The WordPress Team
  19  http://wordpress.org/
  20  ";
  21      $this->po_mail = '""
  22  "Your new WordPress blog has been successfully set up at:\n"
  23  "\n"
  24  "%1$s\n"
  25  "\n"
  26  "You can log in to the administrator account with the following information:\n"
  27  "\n"
  28  "Username: %2$s\n"
  29  "Password: %3$s\n"
  30  "\n"
  31  "We hope you enjoy your new blog. Thanks!\n"
  32  "\n"
  33  "--The WordPress Team\n"
  34  "http://wordpress.org/\n"';
  35          $this->a90 = str_repeat("a", 90);
  36          $this->po_a90 = "\"$this->a90\"";
  37      }
  38  
  39  	function test_prepend_each_line() {
  40          $this->assertEquals('baba_', PO::prepend_each_line('', 'baba_'));
  41          $this->assertEquals('baba_dyado', PO::prepend_each_line('dyado', 'baba_'));
  42          $this->assertEquals("# baba\n# dyado\n# \n", PO::prepend_each_line("baba\ndyado\n\n", '# '));
  43      }
  44  
  45  	function test_poify() {
  46          //simple
  47          $this->assertEquals('"baba"', PO::poify('baba'));
  48          //long word        
  49          $this->assertEquals($this->po_a90, PO::poify($this->a90));
  50          // tab
  51          $this->assertEquals('"ba\tba"', PO::poify("ba\tba"));
  52          // do not add leading empty string of one-line string ending on a newline
  53          $this->assertEquals('"\\\\a\\\\n\\n"', PO::poify("\a\\n\n"));
  54          // backslash
  55          $this->assertEquals('"ba\\\\ba"', PO::poify('ba\\ba'));
  56          // random wordpress.pot string
  57          $src = 'Categories can be selectively converted to tags using the <a href="%s">category to tag converter</a>.';
  58          $this->assertEquals("\"Categories can be selectively converted to tags using the <a href=\\\"%s\\\">category to tag converter</a>.\"", PO::poify($src));
  59  
  60          $this->assertEquals($this->po_mail, PO::poify($this->mail));
  61      }
  62      
  63  	function test_unpoify() {
  64          $this->assertEquals('baba', PO::unpoify('"baba"'));
  65          $this->assertEquals("baba\ngugu", PO::unpoify('"baba\n"'."\t\t\t\n".'"gugu"'));
  66          $this->assertEquals($this->a90, PO::unpoify($this->po_a90));
  67          $this->assertEquals('\\t\\n', PO::unpoify('"\\\\t\\\\n"'));
  68          // wordwrapped
  69          $this->assertEquals('babadyado', PO::unpoify("\"\"\n\"baba\"\n\"dyado\""));
  70          $this->assertEquals($this->mail, PO::unpoify($this->po_mail));
  71      }
  72  
  73  	function test_export_entry() {
  74          $entry = new Translation_Entry(array('singular' => 'baba'));
  75          $this->assertEquals("msgid \"baba\"\nmsgstr \"\"", PO::export_entry($entry));
  76          // plural
  77          $entry = new Translation_Entry(array('singular' => 'baba', 'plural' => 'babas'));
  78          $this->assertEquals('msgid "baba"
  79  msgid_plural "babas"
  80  msgstr[0] ""
  81  msgstr[1] ""', PO::export_entry($entry));
  82          $entry = new Translation_Entry(array('singular' => 'baba', 'translator_comments' => "baba\ndyado"));
  83          $this->assertEquals('#  baba
  84  #  dyado
  85  msgid "baba"
  86  msgstr ""', PO::export_entry($entry));
  87          $entry = new Translation_Entry(array('singular' => 'baba', 'extracted_comments' => "baba"));
  88          $this->assertEquals('#. baba
  89  msgid "baba"
  90  msgstr ""', PO::export_entry($entry));
  91          $entry = new Translation_Entry(array(
  92              'singular' => 'baba',
  93              'extracted_comments' => "baba",
  94              'references' => range(1, 29)));
  95          $this->assertEquals('#. baba
  96  #: 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
  97  #: 29
  98  msgid "baba"
  99  msgstr ""', PO::export_entry($entry));
 100          $entry = new Translation_Entry(array('singular' => 'baba', 'translations' => array()));
 101          $this->assertEquals("msgid \"baba\"\nmsgstr \"\"", PO::export_entry($entry));
 102  
 103          $entry = new Translation_Entry(array('singular' => 'baba', 'translations' => array('куку', 'буку')));
 104          $this->assertEquals("msgid \"baba\"\nmsgstr \"куку\"", PO::export_entry($entry));
 105  
 106          $entry = new Translation_Entry(array('singular' => 'baba', 'plural' => 'babas', 'translations' => array('кукубуку')));
 107          $this->assertEquals('msgid "baba"
 108  msgid_plural "babas"
 109  msgstr[0] "кукубуку"', PO::export_entry($entry));
 110  
 111          $entry = new Translation_Entry(array('singular' => 'baba', 'plural' => 'babas', 'translations' => array('кукубуку', 'кукуруку', 'бабаяга')));
 112          $this->assertEquals('msgid "baba"
 113  msgid_plural "babas"
 114  msgstr[0] "кукубуку"
 115  msgstr[1] "кукуруку"
 116  msgstr[2] "бабаяга"', PO::export_entry($entry));
 117          // context
 118          $entry = new Translation_Entry(array('context' => 'ctxt', 'singular' => 'baba', 'plural' => 'babas', 'translations' => array('кукубуку', 'кукуруку', 'бабаяга'), 'flags' => array('fuzzy', 'php-format')));
 119          $this->assertEquals('#, fuzzy, php-format
 120  msgctxt "ctxt"
 121  msgid "baba"
 122  msgid_plural "babas"
 123  msgstr[0] "кукубуку"
 124  msgstr[1] "кукуруку"
 125  msgstr[2] "бабаяга"', PO::export_entry($entry));
 126      }
 127  
 128  	function test_export_entries() {
 129          $entry = new Translation_Entry(array('singular' => 'baba',));
 130          $entry2 = new Translation_Entry(array('singular' => 'dyado',));
 131          $po = new PO();
 132          $po->add_entry($entry);
 133          $po->add_entry($entry2);
 134          $this->assertEquals("msgid \"baba\"\nmsgstr \"\"\n\nmsgid \"dyado\"\nmsgstr \"\"", $po->export_entries());
 135      }
 136  
 137  	function test_export_headers() {
 138          $po = new PO();
 139          $po->set_header('Project-Id-Version', 'WordPress 2.6-bleeding');
 140          $po->set_header('POT-Creation-Date', '2008-04-08 18:00+0000');
 141          $this->assertEquals("msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: WordPress 2.6-bleeding\\n\"\n\"POT-Creation-Date: 2008-04-08 18:00+0000\\n\"", $po->export_headers());
 142      }
 143  
 144  	function test_export() {
 145          $po = new PO();
 146          $entry = new Translation_Entry(array('singular' => 'baba',));
 147          $entry2 = new Translation_Entry(array('singular' => 'dyado',));
 148          $po->set_header('Project-Id-Version', 'WordPress 2.6-bleeding');
 149          $po->set_header('POT-Creation-Date', '2008-04-08 18:00+0000');
 150          $po->add_entry($entry);
 151          $po->add_entry($entry2);
 152          $this->assertEquals("msgid \"baba\"\nmsgstr \"\"\n\nmsgid \"dyado\"\nmsgstr \"\"", $po->export(false));
 153          $this->assertEquals("msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: WordPress 2.6-bleeding\\n\"\n\"POT-Creation-Date: 2008-04-08 18:00+0000\\n\"\n\nmsgid \"baba\"\nmsgstr \"\"\n\nmsgid \"dyado\"\nmsgstr \"\"", $po->export());
 154      }
 155  
 156  
 157  	function test_export_to_file() {
 158          $po = new PO();
 159          $entry = new Translation_Entry(array('singular' => 'baba',));
 160          $entry2 = new Translation_Entry(array('singular' => 'dyado',));
 161          $po->set_header('Project-Id-Version', 'WordPress 2.6-bleeding');
 162          $po->set_header('POT-Creation-Date', '2008-04-08 18:00+0000');
 163          $po->add_entry($entry);
 164          $po->add_entry($entry2);
 165  
 166          $temp_fn = $this->temp_filename();
 167          $po->export_to_file($temp_fn, false);
 168          $this->assertEquals($po->export(false), file_get_contents($temp_fn));
 169  
 170          $temp_fn2 = $this->temp_filename();
 171          $po->export_to_file($temp_fn2);
 172          $this->assertEquals($po->export(), file_get_contents($temp_fn2));
 173      }
 174      
 175  	function test_import_from_file() {
 176          $po = new PO();
 177          $res = $po->import_from_file('data/simple.po');
 178          $this->assertEquals(true, $res);
 179  
 180          $this->assertEquals(array('Project-Id-Version' => 'WordPress 2.6-bleeding', 'Plural-Forms' => 'nplurals=2; plural=n != 1;'), $po->headers);
 181          
 182          $simple_entry = new Translation_Entry(array('singular' => 'moon',));
 183          $this->assertEquals($simple_entry, $po->entries[$simple_entry->key()]);
 184          
 185          $all_types_entry = new Translation_Entry(array('singular' => 'strut', 'plural' => 'struts', 'context' => 'brum',
 186              'translations' => array('ztrut0', 'ztrut1', 'ztrut2')));
 187          $this->assertEquals($all_types_entry, $po->entries[$all_types_entry->key()]);
 188          
 189          $multiple_line_entry = new Translation_Entry(array('singular' => 'The first thing you need to do is tell Blogger to let WordPress access your account. You will be sent back here after providing authorization.', 'translations' => array("baba\ndyadogugu")));
 190          $this->assertEquals($multiple_line_entry, $po->entries[$multiple_line_entry->key()]);
 191          
 192          $multiple_line_all_types_entry = new Translation_Entry(array('context' => 'context', 'singular' => 'singular',
 193              'plural' => 'plural', 'translations' => array('translation0', 'translation1', 'translation2')));
 194          $this->assertEquals($multiple_line_all_types_entry, $po->entries[$multiple_line_all_types_entry->key()]);
 195          
 196          $comments_entry = new Translation_Entry(array('singular' => 'a', 'translator_comments' => "baba\nbrubru",
 197              'references' => array('wp-admin/x.php:111', 'baba:333', 'baba'), 'extracted_comments' => "translators: buuu",
 198              'flags' => array('fuzzy')));
 199          $this->assertEquals($comments_entry, $po->entries[$comments_entry->key()]);
 200              
 201          $end_quote_entry = new Translation_Entry(array('singular' => 'a"'));
 202          $this->assertEquals($end_quote_entry, $po->entries[$end_quote_entry->key()]);
 203      }
 204      
 205  	function test_import_from_entry_file_should_give_false() {
 206          $po = new PO();
 207          $this->assertFalse( $po->import_from_file( 'data/empty.po' ) );
 208      }
 209      
 210      function test_import_from_file_with_windows_line_endings_should_work_as_with_unix_line_endings() {
 211          $po = new PO();
 212          $this->assertTrue( $po->import_from_file( 'data/windows-line-endings.po' ) );
 213          $this->assertEquals( 1, count( $po->entries ) );
 214      }
 215      
 216      //TODO: add tests for bad files
 217  }
 218  ?>


Generated: Thu May 24 03:59:35 2012 Hosted by follow the white rabbit.