summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2010-02-19 17:14:08 -0600
committerJesse Luehrs <doy@tozt.net>2010-02-19 17:14:08 -0600
commitc1d936bb4552148f4019f8844e9aec8ca91a5145 (patch)
tree613915942361813cee5caa5e9904ec7f459cf068
parentc0f3e6ac4d3b810dc2b6c92a80a74d8a6b04ce9b (diff)
downloadlocale-pofilemanager-c1d936bb4552148f4019f8844e9aec8ca91a5145.tar.gz
locale-pofilemanager-c1d936bb4552148f4019f8844e9aec8ca91a5145.zip
more tests
-rw-r--r--t/002-create.t81
-rw-r--r--t/data/002/en.po14
2 files changed, 95 insertions, 0 deletions
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"