The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use I22r::Translate;
use Test::More;
use lib 't';

$input = {
    foo => 'some {{protected}} text',
    bar => 'text with <a href="http://bar.com/">HTML</a> text',
    baz => 'phrase with <b>{{protected}}</b> text and HTML'
};


I22r::Translate->config(
    'Test::Backend::Reverser' => {
	ENABLED => 1,
	filter => [ 'Literal', 'HTML' ],
    }
);

my %r = I22r::Translate->translate_hash(
    src => 'en', dest => 'ko', text => $input );

ok( 0 != keys %r, 'translate_hash: got result' );
ok( $r{foo} =~ /txet .*protected.* emos/,
    'string with protected text' );
ok( $r{bar} =~ /txet.*bar.com.*LMTH.*htiw txet/,
    'string with HTML tags and attributes' );
ok( $r{bar} =~ m{<a href="http://bar.com/">},
    'HTML attributes preserved' );
ok( $r{baz} =~ /LMTH dna txet.*protected.*htiw esarhp/,
    'string with HTML and protected text' );
ok( $r{baz} =~ m{<b>.*protected.*</b>},
    'HTML tags preserved' );

##################################################################

%I22r::Translate::config = ();
$Test::Backend::Reverser::config = { };

I22r::Translate->config(
    filter => [ 'HTML', 'Literal' ],
    'Test::Backend::Reverser' => {
	ENABLED => 1,
    }
);

%r = I22r::Translate->translate_hash(
    src => 'en', dest => 'ko', text => $input );

ok( 0 != keys %r, 'translate_hash: got result' );
ok( $r{foo} =~ /txet .*protected.* emos/,
    'string with protected text' );
ok( $r{bar} =~ /txet.*bar.com.*LMTH.*htiw txet/,
    'string with HTML tags and attributes' );
ok( $r{bar} =~ m{<a href="http://bar.com/">},
    'HTML attributes preserved' );
ok( $r{baz} =~ /LMTH dna txet.*protected.*htiw esarhp/,
    'string with HTML and protected text' );
ok( $r{baz} =~ m{<b>.*protected.*</b>},
    'HTML tags preserved' );


##################################################################

%I22r::Translate::config = ();
$Test::Backend::Reverser::config = { };

I22r::Translate->config(
    filter => [ 'HTML' ],
    'Test::Backend::Reverser' => {
	ENABLED => 1,
	filter => [ 'Literal' ],
    }
);

%r = I22r::Translate->translate_hash(
    src => 'en', dest => 'ko', text => $input );

ok( 0 != keys %r, 'translate_hash: got result' );
ok( $r{foo} =~ /txet .*protected.* emos/,
    'string with protected text' );
ok( $r{bar} =~ /txet.*bar.com.*LMTH.*htiw txet/,
    'string with HTML tags and attributes' );
ok( $r{bar} =~ m{<a href="http://bar.com/">},
    'HTML attributes preserved' );
ok( $r{baz} =~ /LMTH dna txet.*protected.*htiw esarhp/,
    'string with HTML and protected text' );
ok( $r{baz} =~ m{<b>.*protected.*</b>},
    'HTML tags preserved' );


##################################################################

%I22r::Translate::config = ();
$Test::Backend::Reverser::config = { };

I22r::Translate->config(
    'Test::Backend::Reverser' => {
	ENABLED => 1,
	filter => [ 'Literal' ],
    }
);

%r = I22r::Translate->translate_hash(
    src => 'en', dest => 'ko', text => $input,
    filter => [ 'HTML' ] );

ok( 0 != keys %r, 'translate_hash: got result' );
ok( $r{foo} =~ /txet .*protected.* emos/,
    'string with protected text' );
ok( $r{bar} =~ /txet.*bar.com.*LMTH.*htiw txet/,
    'string with HTML tags and attributes' );
ok( $r{bar} =~ m{<a href="http://bar.com/">},
    'HTML attributes preserved' );
ok( $r{baz} =~ /LMTH dna txet.*protected.*htiw esarhp/,
    'string with HTML and protected text' );
ok( $r{baz} =~ m{<b>.*protected.*</b>},
    'HTML tags preserved' );


##################################################################

%I22r::Translate::config = ();
$Test::Backend::Reverser::config = { };

I22r::Translate->config(
    filter => [ 'Literal' ],
    'Test::Backend::Reverser' => {
	ENABLED => 1,
    }
);

%r = I22r::Translate->translate_hash(
    src => 'en', dest => 'ko', text => $input,
    filter => [ 'HTML' ] );

ok( 0 != keys %r, 'translate_hash: got result' );
ok( $r{foo} =~ /txet .*protected.* emos/,
    'string with protected text' );
ok( $r{bar} =~ /txet.*bar.com.*LMTH.*htiw txet/,
    'string with HTML tags and attributes' );
ok( $r{bar} =~ m{<a href="http://bar.com/">},
    'HTML attributes preserved' );
ok( $r{baz} =~ /LMTH dna txet.*protected.*htiw esarhp/,
    'string with HTML and protected text' );
ok( $r{baz} =~ m{<b>.*protected.*</b>},
    'HTML tags preserved' );



done_testing();