assertNotEmpty( $nooped_plural['domain'] ); $this->assertEquals( '%s posts', translate_nooped_plural( $nooped_plural, 0, $text_domain ) ); $this->assertEquals( '%s post', translate_nooped_plural( $nooped_plural, 1, $text_domain ) ); $this->assertEquals( '%s posts', translate_nooped_plural( $nooped_plural, 2, $text_domain ) ); } /** * @ticket 35961 */ function test_nx_noop() { $text_domain = 'text-domain'; $nooped_plural = _nx_noop( '%s post', '%s posts', 'my-context', $text_domain ); $this->assertNotEmpty( $nooped_plural['domain'] ); $this->assertNotEmpty( $nooped_plural['context'] ); $this->assertEquals( '%s posts', translate_nooped_plural( $nooped_plural, 0, $text_domain ) ); $this->assertEquals( '%s post', translate_nooped_plural( $nooped_plural, 1, $text_domain ) ); $this->assertEquals( '%s posts', translate_nooped_plural( $nooped_plural, 2, $text_domain ) ); } function test_load_unload_textdomain() { $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) ); $this->assertFalse( unload_textdomain( 'wp-tests-domain' ) ); $file = DIR_TESTDATA . '/pomo/simple.mo'; $this->assertTrue( load_textdomain( 'wp-tests-domain', $file ) ); $this->assertTrue( is_textdomain_loaded( 'wp-tests-domain' ) ); $this->assertTrue( unload_textdomain( 'wp-tests-domain' ) ); $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) ); } /** * @ticket 35073 */ function test_before_last_bar() { $this->assertEquals( 'no-bar-at-all', before_last_bar( 'no-bar-at-all' ) ); $this->assertEquals( 'before-last-bar', before_last_bar( 'before-last-bar|after-bar' ) ); $this->assertEquals( 'first-before-bar|second-before-bar', before_last_bar( 'first-before-bar|second-before-bar|after-last-bar' ) ); } /** * @ticket 21319 */ function test_is_textdomain_loaded_for_no_translations() { $this->assertFalse( load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/non-existent-file' ) ); $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) ); $this->assertInstanceOf( 'NOOP_Translations', get_translations_for_domain( 'wp-tests-domain' ) ); // Ensure that we don't confuse NOOP_Translations to be a loaded text domain. $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) ); $this->assertFalse( unload_textdomain( 'wp-tests-domain' ) ); } /** * @ticket 21319 */ function test_is_textdomain_is_not_loaded_after_gettext_call_with_no_translations() { $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) ); __( 'just some string', 'wp-tests-domain' ); $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) ); } /** * @ticket 35950 */ function test_get_available_languages() { $array = get_available_languages(); $this->assertInternalType( 'array', $array ); $array = get_available_languages( '.' ); $this->assertEmpty( $array ); $array = get_available_languages( DIR_TESTDATA . '/languages/' ); $this->assertEquals( array( 'en_GB', 'es_ES' ), $array ); } /** * @ticket 35284 */ function test_wp_get_installed_translations_for_core() { $installed_translations = wp_get_installed_translations( 'core' ); $this->assertInternalType( 'array', $installed_translations ); $textdomains_expected = array( 'admin', 'admin-network', 'continents-cities', 'default' ); $this->assertEqualSets( $textdomains_expected, array_keys( $installed_translations ) ); $this->assertNotEmpty( $installed_translations['default']['en_GB'] ); $data_en_GB = $installed_translations['default']['en_GB']; $this->assertEquals( '2016-01-14 21:14:29+0000', $data_en_GB['PO-Revision-Date'] ); $this->assertEquals( 'Development (4.4.x)', $data_en_GB['Project-Id-Version'] ); $this->assertEquals( 'GlotPress/1.0-alpha-1100', $data_en_GB['X-Generator'] ); $this->assertNotEmpty( $installed_translations['admin']['es_ES'] ); $data_es_ES = $installed_translations['admin']['es_ES']; $this->assertEquals( '2015-12-22 20:26:46+0000', $data_es_ES['PO-Revision-Date'] ); $this->assertEquals( 'Administration', $data_es_ES['Project-Id-Version'] ); $this->assertEquals( 'GlotPress/1.0-alpha-1100', $data_es_ES['X-Generator'] ); } /** * @ticket 35294 */ function test_wp_dropdown_languages() { $args = array( 'id' => 'foo', 'name' => 'bar', 'languages' => array( 'de_DE' ), 'translations' => $this->wp_dropdown_languages_filter(), 'selected' => 'de_DE', 'echo' => false, ); $actual = wp_dropdown_languages( $args ); $this->assertContains( 'id="foo"', $actual ); $this->assertContains( 'name="bar"', $actual ); $this->assertContains( '', $actual ); $this->assertContains( '', $actual ); $this->assertContains( '', $actual ); } /** * We don't want to call the API when testing. * * @return array */ function wp_dropdown_languages_filter() { return array( 'de_DE' => array( 'language' => 'de_DE', 'native_name' => 'Deutsch', 'iso' => array( 'de' ), ), 'it_IT' => array( 'language' => 'it_IT', 'native_name' => 'Italiano', 'iso' => array( 'it', 'ita' ), ), ); } /** * @ticket 35284 */ function test_wp_get_pomo_file_data() { $file = DIR_TESTDATA . '/pomo/empty.po'; $array = wp_get_pomo_file_data( $file ); $this->assertArrayHasKey( 'POT-Creation-Date', $array ); $this->assertArrayHasKey( 'PO-Revision-Date', $array ); $this->assertArrayHasKey( 'Project-Id-Version', $array ); $this->assertArrayHasKey( 'X-Generator', $array ); $file = DIR_TESTDATA . '/pomo/mo.pot'; $array = wp_get_pomo_file_data( $file ); $this->assertNotEmpty( $array['POT-Creation-Date'] ); $this->assertNotEmpty( $array['PO-Revision-Date'] ); $this->assertNotEmpty( $array['Project-Id-Version'] ); $this->assertArrayHasKey( 'X-Generator', $array ); $file = DIR_TESTDATA . '/languages/es_ES.po'; $array = wp_get_pomo_file_data( $file ); $this->assertArrayHasKey( 'POT-Creation-Date', $array ); $this->assertNotEmpty( $array['PO-Revision-Date'] ); $this->assertNotEmpty( $array['Project-Id-Version'] ); $this->assertNotEmpty( $array['X-Generator'] ); } }