From c1d936bb4552148f4019f8844e9aec8ca91a5145 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 19 Feb 2010 17:14:08 -0600 Subject: more tests --- t/002-create.t | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ t/data/002/en.po | 14 ++++++++++ 2 files changed, 95 insertions(+) create mode 100644 t/002-create.t create mode 100644 t/data/002/en.po diff --git a/t/002-create.t b/t/002-create.t new file mode 100644 index 0000000..13a6611 --- /dev/null +++ b/t/002-create.t @@ -0,0 +1,81 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use File::Temp; +use File::Copy; +use Path::Class; + +use Locale::POFileManager; + +{ + my $dir = File::Temp->newdir; + my $from_dir = dir('t/data/002'); + my $tmpdir = dir($dir->dirname); + for my $file ($from_dir->children) { + copy($file->stringify, $dir->dirname); + } + my $header = $tmpdir->file('en.po')->slurp; + $header =~ s/\n\n.*/\n\n/s; + + my $manager = Locale::POFileManager->new( + base_dir => $dir->dirname, + canonical_language => 'en', + ); + is_deeply([sort map { $_->basename } $tmpdir->children], + [qw(en.po)], + "correct initial directory contents"); + + $manager->add_language('ru'); + $manager->add_language('hi'); + + is_deeply([sort map { $_->basename } $tmpdir->children], + [qw(en.po hi.po ru.po)], + "correct directory contents after creation"); + + for my $lang (qw(ru hi)) { + is($tmpdir->file("$lang.po")->slurp, $header, + "got the right header in $lang.po"); + } + + $manager->language_file('ru')->add_entry( + msgid => 'baz', + msgstr => 'Zab', + ); + is_deeply([sort $manager->language_file('ru')->msgids], + ['', qw(baz)], + "created new entry successfully"); + is($manager->language_file('ru')->entry_for('baz')->msgstr, '"Zab"', + "correct entry created"); + + is_deeply([sort $manager->language_file('hi')->msgids], + [''], + "other language file untouched"); + + $manager->add_stubs; + + for my $lang (qw(ru hi)) { + is_deeply([sort $manager->language_file($lang)->msgids], + ['', qw(bar baz foo)], + "stubs for $lang created properly"); + } + + my %langs = ( + en => qq{msgid "foo"\nmsgstr "foo"\n\n} + . qq{msgid "bar"\nmsgstr "bar"\n\n} + . qq{msgid "baz"\nmsgstr "baz"\n\n}, + hi => qq{msgid "foo"\n\n} + . qq{msgid "bar"\n\n} + . qq{msgid "baz"\n\n}, + ru => qq{msgid "baz"\nmsgstr "Zab"\n\n} + . qq{msgid "foo"\n\n} + . qq{msgid "bar"\n\n}, + ); + + for my $lang (keys %langs) { + is($manager->language_file($lang)->file->slurp, $header . $langs{$lang}, + "files created properly"); + } +} + +done_testing; diff --git a/t/data/002/en.po b/t/data/002/en.po new file mode 100644 index 0000000..b8aa9a8 --- /dev/null +++ b/t/data/002/en.po @@ -0,0 +1,14 @@ +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +msgid "foo" +msgstr "foo" + +msgid "bar" +msgstr "bar" + +msgid "baz" +msgstr "baz" -- cgit v1.2.3-54-g00ecf