<?php
// phpcs:set WordPress.Utils.I18nTextDomainFixer old_text_domain[] text-domain,other-text-domain,third-text-domain
// phpcs:set WordPress.Utils.I18nTextDomainFixer new_text_domain something-else

/*
 * The test cases in this file have a variety of whitespace for indentation and around
 * function call parameters to test that the whitespace is not unnecessarily affected
 * by the fixer.
 *
 * This test case file also tests passing several domains to the `old_text_domain` property.
 */

/*
 * Correct text domain, no replacement needed.
 */
load_textdomain( 'something-else', '/path/to/file.mo' );
load_plugin_textdomain( 'something-else', false, '/languages/' );
load_muplugin_textdomain( 'something-else', '/languages/' );
load_theme_textdomain( 'something-else', '/path/to/languages/' );
load_child_theme_textdomain( 'something-else', '/path/to/languages/' );
unload_textdomain( 'something-else' );

__( $text, 'something-else' );
_e( $text, 'something-else' );
_x( $text, $context, 'something-else' );
_ex( $text, $context, 'something-else' );
_n( $single, $plural, $number, 'something-else' );
_nx(
	$single,
	$plural,
	$number,
	$context,
	'something-else',
); // PHP 7.3 trailing comma in function call.
_n_noop( $singular, $plural, 'something-else' );
_nx_noop( $singular, $plural, $context, 'something-else' );
translate_nooped_plural( $nooped_plural, $count, 'something-else' );
_c( $text, 'something-else' );

esc_html__( $text, 'something-else' );
esc_html_e( $text, 'something-else' );
esc_html_x($text, $context, 'something-else');
esc_attr__  ( /* comment */ $text, 'something-else' );
esc_attr_e( $text, 'something-else' );
esc_attr_x( $text, $context, 'something-else' );

is_textdomain_loaded( "something-else" );
get_translations_for_domain( 'something-else' );

translate( $text, 'something-else' );
translate_with_gettext_context( $text, $context, 'something-else' );

_load_textdomain_just_in_time('something-else');
_get_path_to_translation_from_lang_dir( 'something-else' );
_get_path_to_translation( 'something-else', true );

/*
 * Situations which are not our concern and should be ignored.
 */
$this->translate( $text, 'third-text-domain' );
self::translate( $text, 'third-text-domain' );
MyNameSpace\Second\translate( $text, 'third-text-domain' );

__( $text, "a $interpolated string" );
_e( $text, 'concatenated' . 'string' );
_x( $text, $context, $variableTextdomain );
_ex( $text, $context, CONSTANT_TEXTDOMAIN );

/*
 * Text domains *not* in the whitelisted "old" domain list should be ignored.
 */
load_plugin_textdomain( 'tgmpa', false, '/languages/' );
_e( $text, 'default' );
is_textdomain_loaded( 'some-other-plugin' );

/*
 * Incorrect text domain, should be replaced.
 */
load_textdomain( 'something-else', '/path/to/file.mo' );
load_plugin_textdomain( 'something-else', false, '/languages/' );
load_muplugin_textdomain( 'something-else', '/languages/' );
load_theme_textdomain( 'something-else', '/path/to/languages/' );
load_child_theme_textdomain( 'something-else', '/path/to/languages/' );
unload_textdomain( 'something-else' );

__( $text, 'something-else' );
_e( $text, 'something-else' );
_x( $text, $context, 'something-else' );
_ex( $text, $context, 'something-else' );
_n($single,$plural,$number,'something-else');
_nx( $single, $plural, $number, $context, 'something-else' );
_n_noop( $singular, $plural, 'something-else' );
_nx_noop( $singular,
	$plural,
	$context, 'something-else' );
translate_nooped_plural( $nooped_plural, $count, "something-else" );
_c( $text, 'something-else' );

esc_html__( $text, 'something-else' );
esc_html_e( $text, 'something-else' );
esc_html_x($text, $context, 'something-else');
esc_attr__( $text, 'something-else' );
esc_attr_e( $text, 'something-else' );
esc_attr_x(
	$text,
	$context,
	'something-else'
);

is_textdomain_loaded( 'something-else' );
get_translations_for_domain( 'something-else' );

translate( $text, 'something-else' );
translate_with_gettext_context(
	$text,
	$context,
	'something-else',
);

_load_textdomain_just_in_time( 'something-else' );
_get_path_to_translation_from_lang_dir( 'something-else' );
_get_path_to_translation( 'something-else', true );

/*
 * Missing text domain, should be added.
 */
load_textdomain( 'something-else' );
load_plugin_textdomain( /* everything missing, but has a comment */ 'something-else' );
load_muplugin_textdomain( 'something-else' );
load_theme_textdomain( 'something-else' );
		load_child_theme_textdomain(
			'something-else'
		);
unload_textdomain( 'something-else' );

__( $text, 'something-else' );
_e( $text, 'something-else' );
_x( $text, $context, 'something-else', ); // PHP 7.3 trailing comma in function call.
_ex( $text, $context, 'something-else' );
_n( $single, $plural, $number, 'something-else' );
_nx( $single, $plural, $number, $context, 'something-else' );
_n_noop( $singular, $plural, 'something-else' );
_nx_noop( $singular, $plural, $context, 'something-else' );
translate_nooped_plural( $nooped_plural, $count, 'something-else' );
_c( $text, 'something-else' );

esc_html__($text, 'something-else');
esc_html_e( $text, 'something-else' );
esc_html_x(
    $text,
    $context,
    'something-else',
); // PHP 7.3 trailing comma in multi-line function call.
esc_attr__( $text, 'something-else');
esc_attr_e($text, 'something-else' );
esc_attr_x(
	$text,
	$context,
	'something-else' );

is_textdomain_loaded(
	'something-else'
);
get_translations_for_domain( 'something-else' );

translate( $text, 'something-else');
translate_with_gettext_context( $text, $context, 'something-else');

_load_textdomain_just_in_time( 'something-else' );
_get_path_to_translation_from_lang_dir( 'something-else' );
_get_path_to_translation( 'something-else' );

/*
 * Missing text domain and preceeding args, only throw warning.
 */
__();
_e(   /* comment */  );
_x(    );
_ex();
_n( $single, $plural );
_nx( $single, $plural );
_n_noop($singular);
_nx_noop(
);
translate_nooped_plural( $nooped_plural );
_c();

esc_html__();
esc_html_e(  );
esc_html_x(
    $text,
); // PHP 7.3 trailing comma in multi-line function call.
esc_attr__();
esc_attr_e();
esc_attr_x(
	$text,
);

translate();
translate_with_gettext_context( $text);

/*
 * Additional deprecated functions.
 */
_nc( $single, $plural ); // Warning.
__ngettext( $singular, $plural, $number, 'something-else' ); // Error.
__ngettext_noop( $singular, $plural, 'something-else' ); // Error.
translate_with_context( $text, 'something-else' ); // Error.

// phpcs:set WordPress.Utils.I18nTextDomainFixer old_text_domain[]
// phpcs:set WordPress.Utils.I18nTextDomainFixer new_text_domain false
