1#!perl 2use strict; 3use warnings all => 'FATAL'; 4use FindBin '$Script'; 5use Test::More; 6use Test::Trap; 7 8BEGIN { 9 use Module::Runtime qw(use_module); 10 eval { use_module("MooX::Locale::TextDomain::OO"); } 11 or plan skip_all => "This test needs MooX::Locale::TextDomain::OO"; 12} 13 14{ 15 16 package t; 17 use strict; 18 use warnings; 19 use Moo; 20 use MooX::Options with_locale_textdomain_oo => 1; 21 22 option req => ( 23 is => 'ro', 24 documentation => 'this is mandatory', 25 format => 's', 26 required => 1, 27 ); 28 29 option neg => ( 30 is => 'ro', 31 negatable => 1, 32 documentation => 'this is negatable', 33 ); 34 35 option paths => ( 36 is => 'ro', 37 repeatable => 1, 38 format => 's', 39 documentation => 'list of some paths', 40 ); 41 42 1; 43} 44 45{ 46 use Locale::TextDomain::OO::Lexicon::Hash; 47 48 Locale::TextDomain::OO::Lexicon::Hash->new()->lexicon_ref( 49 { 'de:LC_MESSAGES:example' => [ 50 { msgid => "", 51 msgstr => "Language-Team: none\n" 52 . "Language: de\n" 53 . "MIME-Version: 1.0\n" 54 . "Content-Type: text/plain; charset=ISO-8859-15\n" 55 . "Content-Transfer-Encoding: 8bit\n" 56 . "Plural-Forms: nplurals=2; plural=(n != 1);\n" 57 }, 58 { msgid => "this is mandatory", 59 msgstr => "dies ist erforderlich" 60 }, 61 { msgid => "this is negatable", 62 msgstr => "dieser ist negierbar" 63 }, 64 { msgid => "show a short help message", 65 msgstr => "Zeigt eine kurze Hilfe" 66 }, 67 { msgid => "show a compact help message", 68 msgstr => "Zeigt eine kompakte Hilfe" 69 }, 70 { msgid => "show a long help message", 71 msgstr => "Zeigt eine ausführliche Hilfe" 72 }, 73 { msgid => "show the manual", 74 msgstr => "Zeigt die Anleitung" 75 }, 76 { msgid => "USAGE: %s %s", 77 msgstr => "AUFRUF: %s %s" 78 }, 79 { msgid => "String", 80 msgstr => "Zeichenkette" 81 }, 82 { msgid => "Int", 83 msgstr => "Ganzzahl" 84 }, 85 { msgid => "Ext. Int", 86 msgstr => "erw. Ganzzahl" 87 }, 88 { msgid => "Real", 89 msgstr => "reelle Zahl" 90 }, 91 { msgid => "[Strings]", 92 msgstr => "[Zeichenketten]" 93 }, 94 { msgid => "[Ints]", 95 msgstr => "[Ganzzahlen]" 96 }, 97 { msgid => "[Ext. Ints]", 98 msgstr => "[erw. Ganzzahlen]" 99 }, 100 { msgid => "[Reals]", 101 msgstr => "[reelle Zahlen]" 102 }, 103 { msgid => "Array of Strings", 104 msgstr => "Menge von Zeichenketten" 105 }, 106 { msgid => "Array of Integers", 107 msgstr => "Menge von ganzen Zahlen" 108 }, 109 { msgid => "Extended Integer", 110 msgstr => "erweiterte ganze Zahl" 111 }, 112 { msgid => "Array of extended integers", 113 msgstr => "Menge von erweiterten ganzen Zahlen" 114 }, 115 { msgid => "Real number", 116 msgstr => "reelle Zahl" 117 }, 118 { msgid => "Array of real numbers", 119 msgstr => "Menge von reellen Zahlen" 120 }, 121 { msgid => "SUB COMMANDS AVAILABLE: ", 122 msgstr => "Verfügbare Unterkommandos: " 123 }, 124 { msgid => "long options ...", 125 msgstr => "ausgedehnte Parameter ..." 126 }, 127 ] 128 } 129 ); 130} 131 132{ 133 local @ARGV = ('--help'); 134 my $opt = trap { t->new_with_options(); }; 135 like( $trap->stdout, 136 qr{USAGE:\s\Q$Script\E\s\[\-h\]\s\[long\soptions\s\.\.\.\]}x, 137 "Usage itself" ); 138 like( $trap->stdout, qr{this\sis\snegatable}x, "--neg usage" ); 139 like( $trap->stdout, qr{this\sis\smandatory}x, "--req usage" ); 140 like( $trap->stdout, qr{show\sa\sshort\shelp\smessage}x, 141 "--usage usage" ); 142 like( $trap->stdout, qr{show\sa\scompact\shelp\smessage}x, "-h usage" ); 143 like( $trap->stdout, qr{show\sa\slong\shelp\smessage}x, "--help usage" ); 144 like( $trap->stdout, qr{show\sthe\smanual}x, "--man usage" ); 145} 146 147Locale::TextDomain::OO->instance()->language("de"); 148Locale::TextDomain::OO->instance()->category("LC_MESSAGES"); 149Locale::TextDomain::OO->instance()->domain("example"); 150 151{ 152 local @ARGV = ('--help'); 153 my $opt = trap { t->new_with_options(); }; 154 like( $trap->stdout, 155 qr{AUFRUF:\s\Q$Script\E\s\[\-h\]\s\Q[ausgedehnte Parameter ...]\E}x, 156 "Usage itself" ); 157 like( $trap->stdout, qr{dieser\sist\snegierbar}x, "--neg aufruf" ); 158 like( $trap->stdout, qr{dies\sist\serforderlich}x, "--req aufruf" ); 159 like( $trap->stdout, qr{Zeigt\seine\skurze\sHilfe}x, "--usage aufruf" ); 160 like( $trap->stdout, qr{Zeigt\seine\skompakte\sHilfe}x, "-h aufruf" ); 161 like( 162 $trap->stdout, 163 qr{Zeigt\seine\sausführliche\sHilfe}x, 164 "--help aufruf" 165 ); 166 like( $trap->stdout, qr{Zeigt\sdie\sAnleitung}x, "--man aufruf" ); 167} 168 169done_testing; 170