| [ Index ] |
PHP Cross Reference of GlotPress |
[Summary view] [Print] [Text view]
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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu May 24 03:59:35 2012 | Hosted by follow the white rabbit. |