The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
# Try Lexicon POTcompact
# Structure of parsed result has also been checked manually, using
# Data::Dumper (MO 2007/05/11)

use warnings;
use strict;
use lib 'lib', '../lib';
use utf8;

use Test::More tests => 21;

use File::Basename        qw/dirname/;
use File::Spec::Functions qw/catfile/;

use_ok('Log::Report::Lexicon::POTcompact');

my $sl_po = catfile(dirname(__FILE__), 'hello-world-slovak.po');

#
# Try reading complex example
# slightly modified from gettext examples in slovak
#

my $pot = Log::Report::Lexicon::POTcompact->read($sl_po,
  charset => 'utf-8');

ok(defined $pot, "read pot file");
isa_ok($pot, 'Log::Report::Lexicon::POTcompact');

#
# header
#

is($pot->header('mime-version'), '1.0', 'access to header');

#
# extended single case
#

my $po = $pot->msgid('Hello, world!');
ok(defined $po, "got greeting");
ok(!ref $po, "one translation only");
is($po, "Pozdravljen, svet!");

is($pot->msgstr("Hello, world!"), "Pozdravljen, svet!");
is($pot->msgstr("Hello, world!", 0), "Pozdravljen, svet!");
is($pot->msgstr("Hello, world!", 5), "Pozdravljen, svet!");

#
# with plurals
#

is($pot->msgstr('Aap', 0), 'A', 'msgstr by plural');
is($pot->msgstr('Aap', 1), 'B');
is($pot->msgstr('Aap', 2), 'C');
is($pot->msgstr('Aap', 3), 'D');
is($pot->msgstr('Aap', 4), 'D');
is($pot->msgstr('Aap', 5), 'A');
is($pot->msgstr('Aap', 6), 'A');
is($pot->msgstr('Aap', 100), 'A');
is($pot->msgstr('Aap', 101), 'B');

#
# with multi-lines and utf
#

my $po2 = $pot->msgid("This program is running as process number {pid}.multi-line\n");
ok(defined $po2, 'test multi');
is($po2, "Ta program teče kot proces številka {pid}.multi\tline\n");