Changeset 42343 for trunk/tests/phpunit/tests/pomo/mo.php
- Timestamp:
- 11/30/2017 11:09:33 PM (8 years ago)
- File:
-
- 1 edited
-
trunk/tests/phpunit/tests/pomo/mo.php (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/pomo/mo.php
r41722 r42343 8 8 function test_mo_simple() { 9 9 $mo = new MO(); 10 $mo->import_from_file(DIR_TESTDATA . '/pomo/simple.mo'); 11 $this->assertEquals(array('Project-Id-Version' => 'WordPress 2.6-bleeding', 'Report-Msgid-Bugs-To' => 'wp-polyglots@lists.automattic.com'), $mo->headers); 12 $this->assertEquals(2, count($mo->entries)); 13 $this->assertEquals(array('dyado'), $mo->entries['baba']->translations); 14 $this->assertEquals(array('yes'), $mo->entries["kuku\nruku"]->translations); 10 $mo->import_from_file( DIR_TESTDATA . '/pomo/simple.mo' ); 11 $this->assertEquals( 12 array( 13 'Project-Id-Version' => 'WordPress 2.6-bleeding', 14 'Report-Msgid-Bugs-To' => 'wp-polyglots@lists.automattic.com', 15 ), $mo->headers 16 ); 17 $this->assertEquals( 2, count( $mo->entries ) ); 18 $this->assertEquals( array( 'dyado' ), $mo->entries['baba']->translations ); 19 $this->assertEquals( array( 'yes' ), $mo->entries["kuku\nruku"]->translations ); 15 20 } 16 21 17 22 function test_mo_plural() { 18 23 $mo = new MO(); 19 $mo->import_from_file( DIR_TESTDATA . '/pomo/plural.mo');20 $this->assertEquals( 1, count($mo->entries));21 $this->assertEquals( array("oney dragoney", "twoey dragoney", "manyey dragoney", "manyeyey dragoney", "manyeyeyey dragoney"), $mo->entries["one dragon"]->translations);24 $mo->import_from_file( DIR_TESTDATA . '/pomo/plural.mo' ); 25 $this->assertEquals( 1, count( $mo->entries ) ); 26 $this->assertEquals( array( 'oney dragoney', 'twoey dragoney', 'manyey dragoney', 'manyeyey dragoney', 'manyeyeyey dragoney' ), $mo->entries['one dragon']->translations ); 22 27 23 $this->assertEquals( 'oney dragoney', $mo->translate_plural('one dragon', '%d dragons', 1));24 $this->assertEquals( 'twoey dragoney', $mo->translate_plural('one dragon', '%d dragons', 2));25 $this->assertEquals( 'twoey dragoney', $mo->translate_plural('one dragon', '%d dragons', -8));28 $this->assertEquals( 'oney dragoney', $mo->translate_plural( 'one dragon', '%d dragons', 1 ) ); 29 $this->assertEquals( 'twoey dragoney', $mo->translate_plural( 'one dragon', '%d dragons', 2 ) ); 30 $this->assertEquals( 'twoey dragoney', $mo->translate_plural( 'one dragon', '%d dragons', -8 ) ); 26 31 32 $mo->set_header( 'Plural-Forms', 'nplurals=5; plural=0' ); 33 $this->assertEquals( 'oney dragoney', $mo->translate_plural( 'one dragon', '%d dragons', 1 ) ); 34 $this->assertEquals( 'oney dragoney', $mo->translate_plural( 'one dragon', '%d dragons', 2 ) ); 35 $this->assertEquals( 'oney dragoney', $mo->translate_plural( 'one dragon', '%d dragons', -8 ) ); 27 36 28 $mo->set_header( 'Plural-Forms', 'nplurals=5; plural=0');29 $this->assertEquals( 'oney dragoney', $mo->translate_plural('one dragon', '%d dragons', 1));30 $this->assertEquals( 'oney dragoney', $mo->translate_plural('one dragon', '%d dragons', 2));31 $this->assertEquals( 'oney dragoney', $mo->translate_plural('one dragon', '%d dragons', -8));37 $mo->set_header( 'Plural-Forms', 'nplurals=5; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;' ); 38 $this->assertEquals( 'oney dragoney', $mo->translate_plural( 'one dragon', '%d dragons', 1 ) ); 39 $this->assertEquals( 'manyey dragoney', $mo->translate_plural( 'one dragon', '%d dragons', 11 ) ); 40 $this->assertEquals( 'twoey dragoney', $mo->translate_plural( 'one dragon', '%d dragons', 3 ) ); 32 41 33 $mo->set_header('Plural-Forms', 'nplurals=5; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;'); 34 $this->assertEquals('oney dragoney', $mo->translate_plural('one dragon', '%d dragons', 1)); 35 $this->assertEquals('manyey dragoney', $mo->translate_plural('one dragon', '%d dragons', 11)); 36 $this->assertEquals('twoey dragoney', $mo->translate_plural('one dragon', '%d dragons', 3)); 37 38 $mo->set_header('Plural-Forms', 'nplurals=2; plural=n !=1;'); 39 $this->assertEquals('oney dragoney', $mo->translate_plural('one dragon', '%d dragons', 1)); 40 $this->assertEquals('twoey dragoney', $mo->translate_plural('one dragon', '%d dragons', 2)); 41 $this->assertEquals('twoey dragoney', $mo->translate_plural('one dragon', '%d dragons', -8)); 42 $mo->set_header( 'Plural-Forms', 'nplurals=2; plural=n !=1;' ); 43 $this->assertEquals( 'oney dragoney', $mo->translate_plural( 'one dragon', '%d dragons', 1 ) ); 44 $this->assertEquals( 'twoey dragoney', $mo->translate_plural( 'one dragon', '%d dragons', 2 ) ); 45 $this->assertEquals( 'twoey dragoney', $mo->translate_plural( 'one dragon', '%d dragons', -8 ) ); 42 46 } 43 47 44 48 function test_mo_context() { 45 49 $mo = new MO(); 46 $mo->import_from_file(DIR_TESTDATA . '/pomo/context.mo'); 47 $this->assertEquals(2, count($mo->entries)); 48 $plural_entry = new Translation_Entry(array('singular' => 'one dragon', 'plural' => '%d dragons', 'translations' => array("oney dragoney", "twoey dragoney","manyey dragoney"), 'context' => 'dragonland')); 49 $this->assertEquals($plural_entry, $mo->entries[$plural_entry->key()]); 50 $this->assertEquals("dragonland", $mo->entries[$plural_entry->key()]->context); 50 $mo->import_from_file( DIR_TESTDATA . '/pomo/context.mo' ); 51 $this->assertEquals( 2, count( $mo->entries ) ); 52 $plural_entry = new Translation_Entry( 53 array( 54 'singular' => 'one dragon', 55 'plural' => '%d dragons', 56 'translations' => array( 'oney dragoney', 'twoey dragoney', 'manyey dragoney' ), 57 'context' => 'dragonland', 58 ) 59 ); 60 $this->assertEquals( $plural_entry, $mo->entries[ $plural_entry->key() ] ); 61 $this->assertEquals( 'dragonland', $mo->entries[ $plural_entry->key() ]->context ); 51 62 52 $single_entry = new Translation_Entry(array('singular' => 'one dragon', 'translations' => array("oney dragoney"), 'context' => 'not so dragon')); 53 $this->assertEquals($single_entry, $mo->entries[$single_entry->key()]); 54 $this->assertEquals("not so dragon", $mo->entries[$single_entry->key()]->context); 63 $single_entry = new Translation_Entry( 64 array( 65 'singular' => 'one dragon', 66 'translations' => array( 'oney dragoney' ), 67 'context' => 'not so dragon', 68 ) 69 ); 70 $this->assertEquals( $single_entry, $mo->entries[ $single_entry->key() ] ); 71 $this->assertEquals( 'not so dragon', $mo->entries[ $single_entry->key() ]->context ); 55 72 56 73 } … … 58 75 function test_translations_merge() { 59 76 $host = new Translations(); 60 $host->add_entry( new Translation_Entry(array('singular' => 'pink',)));61 $host->add_entry( new Translation_Entry(array('singular' => 'green',)));77 $host->add_entry( new Translation_Entry( array( 'singular' => 'pink' ) ) ); 78 $host->add_entry( new Translation_Entry( array( 'singular' => 'green' ) ) ); 62 79 $guest = new Translations(); 63 $guest->add_entry( new Translation_Entry(array('singular' => 'green',)));64 $guest->add_entry( new Translation_Entry(array('singular' => 'red',)));65 $host->merge_with( $guest);66 $this->assertEquals( 3, count($host->entries));67 $this->assertEquals( array(), array_diff(array('pink', 'green', 'red'), array_keys($host->entries)));80 $guest->add_entry( new Translation_Entry( array( 'singular' => 'green' ) ) ); 81 $guest->add_entry( new Translation_Entry( array( 'singular' => 'red' ) ) ); 82 $host->merge_with( $guest ); 83 $this->assertEquals( 3, count( $host->entries ) ); 84 $this->assertEquals( array(), array_diff( array( 'pink', 'green', 'red' ), array_keys( $host->entries ) ) ); 68 85 } 69 86 70 87 function test_export_mo_file() { 71 $entries = array(); 72 $entries[] = new Translation_Entry(array('singular' => 'pink', 73 'translations' => array('розов'))); 74 $no_translation_entry = new Translation_Entry(array('singular' => 'grey')); 75 $entries[] = new Translation_Entry(array('singular' => 'green', 'plural' => 'greens', 76 'translations' => array('зелен', 'зелени'))); 77 $entries[] = new Translation_Entry(array('singular' => 'red', 'context' => 'color', 78 'translations' => array('червен'))); 79 $entries[] = new Translation_Entry(array('singular' => 'red', 'context' => 'bull', 80 'translations' => array('бик'))); 81 $entries[] = new Translation_Entry(array('singular' => 'maroon', 'plural' => 'maroons', 'context' => 'context', 82 'translations' => array('пурпурен', 'пурпурни'))); 88 $entries = array(); 89 $entries[] = new Translation_Entry( 90 array( 91 'singular' => 'pink', 92 'translations' => array( 'розов' ), 93 ) 94 ); 95 $no_translation_entry = new Translation_Entry( array( 'singular' => 'grey' ) ); 96 $entries[] = new Translation_Entry( 97 array( 98 'singular' => 'green', 99 'plural' => 'greens', 100 'translations' => array( 'зелен', 'зелени' ), 101 ) 102 ); 103 $entries[] = new Translation_Entry( 104 array( 105 'singular' => 'red', 106 'context' => 'color', 107 'translations' => array( 'червен' ), 108 ) 109 ); 110 $entries[] = new Translation_Entry( 111 array( 112 'singular' => 'red', 113 'context' => 'bull', 114 'translations' => array( 'бик' ), 115 ) 116 ); 117 $entries[] = new Translation_Entry( 118 array( 119 'singular' => 'maroon', 120 'plural' => 'maroons', 121 'context' => 'context', 122 'translations' => array( 'пурпурен', 'пурпурни' ), 123 ) 124 ); 83 125 84 126 $mo = new MO(); 85 $mo->set_header( 'Project-Id-Version', 'Baba Project 1.0');86 foreach ($entries as $entry) {87 $mo->add_entry( $entry);127 $mo->set_header( 'Project-Id-Version', 'Baba Project 1.0' ); 128 foreach ( $entries as $entry ) { 129 $mo->add_entry( $entry ); 88 130 } 89 $mo->add_entry($no_translation_entry); 90 91 $temp_fn = $this->temp_filename(); 92 $mo->export_to_file($temp_fn); 93 94 $again = new MO(); 95 $again->import_from_file($temp_fn); 96 97 $this->assertEquals(count($entries), count($again->entries)); 98 foreach($entries as $entry) { 99 $this->assertEquals($entry, $again->entries[$entry->key()]); 100 } 101 } 102 103 function test_export_should_not_include_empty_translations() { 104 $entries = array( ); 105 $mo = new MO; 106 $mo->add_entry( array( 'singular' => 'baba', 'translations' => array( '', '' ) ) ); 131 $mo->add_entry( $no_translation_entry ); 107 132 108 133 $temp_fn = $this->temp_filename(); … … 110 135 111 136 $again = new MO(); 112 $again->import_from_file($temp_fn); 137 $again->import_from_file( $temp_fn ); 138 139 $this->assertEquals( count( $entries ), count( $again->entries ) ); 140 foreach ( $entries as $entry ) { 141 $this->assertEquals( $entry, $again->entries[ $entry->key() ] ); 142 } 143 } 144 145 function test_export_should_not_include_empty_translations() { 146 $entries = array(); 147 $mo = new MO; 148 $mo->add_entry( 149 array( 150 'singular' => 'baba', 151 'translations' => array( '', '' ), 152 ) 153 ); 154 155 $temp_fn = $this->temp_filename(); 156 $mo->export_to_file( $temp_fn ); 157 158 $again = new MO(); 159 $again->import_from_file( $temp_fn ); 113 160 114 161 $this->assertEquals( 0, count( $again->entries ) ); … … 117 164 function test_nplurals_with_backslashn() { 118 165 $mo = new MO(); 119 $mo->import_from_file( DIR_TESTDATA . '/pomo/bad_nplurals.mo');120 $this->assertEquals( '%d foro', $mo->translate_plural('%d forum', '%d forums', 1));121 $this->assertEquals( '%d foros', $mo->translate_plural('%d forum', '%d forums', 2));122 $this->assertEquals( '%d foros', $mo->translate_plural('%d forum', '%d forums', -1));166 $mo->import_from_file( DIR_TESTDATA . '/pomo/bad_nplurals.mo' ); 167 $this->assertEquals( '%d foro', $mo->translate_plural( '%d forum', '%d forums', 1 ) ); 168 $this->assertEquals( '%d foros', $mo->translate_plural( '%d forum', '%d forums', 2 ) ); 169 $this->assertEquals( '%d foros', $mo->translate_plural( '%d forum', '%d forums', -1 ) ); 123 170 } 124 171 125 172 function disabled_test_performance() { 126 $start = microtime( true);127 $mo = new MO();128 $mo->import_from_file( DIR_TESTDATA . '/pomo/de_DE-2.8.mo');173 $start = microtime( true ); 174 $mo = new MO(); 175 $mo->import_from_file( DIR_TESTDATA . '/pomo/de_DE-2.8.mo' ); 129 176 // echo "\nPerformance: ".(microtime(true) - $start)."\n"; 130 177 } 131 178 132 179 function test_overloaded_mb_functions() { 133 if ( (ini_get("mbstring.func_overload") & 2) == 0) {180 if ( ( ini_get( 'mbstring.func_overload' ) & 2 ) == 0 ) { 134 181 $this->markTestSkipped( __METHOD__ . ' only runs when mbstring.func_overload is enabled.' ); 135 182 } 136 183 137 184 $mo = new MO(); 138 $mo->import_from_file( DIR_TESTDATA . '/pomo/overload.mo');139 $this->assertEquals( array('Табло'), $mo->entries['Dashboard']->translations);185 $mo->import_from_file( DIR_TESTDATA . '/pomo/overload.mo' ); 186 $this->assertEquals( array( 'Табло' ), $mo->entries['Dashboard']->translations ); 140 187 } 141 188 142 189 function test_load_pot_file() { 143 190 $mo = new MO(); 144 $this->assertEquals( false, $mo->import_from_file( DIR_TESTDATA . '/pomo/mo.pot') );191 $this->assertEquals( false, $mo->import_from_file( DIR_TESTDATA . '/pomo/mo.pot' ) ); 145 192 } 146 193 }
Note: See TracChangeset
for help on using the changeset viewer.