2 // vim: foldmethod=marker
4 * Ethna_Plugin_Handle_I18n_Test.php
6 * @author Yoshinari Takaoka <takaoka@beatcraft.com>
10 require_once ETHNA_BASE . '/test/Ethna_MockProject.php';
12 //{{{ Ethna_Plugin_Handle_I18n_Test
14 * Test Case For Ethna_Plugin_Handle_I18n_Test
18 class Ethna_Plugin_Handle_I18n_Test extends Ethna_UnitTestBase
27 $this->proj = new Ethna_MockProject();
28 $r = $this->proj->create();
29 if (Ethna::isError($r)) {
30 $this->fail($r->getMessage());
32 $this->mock_ctl =& $this->proj->getController();
33 $locale_dir = $this->mock_ctl->getDirectory('locale');
34 $locale = $this->mock_ctl->getLocale();
35 $this->msg_file = $locale_dir . '/'
39 $this->i18n = $this->mock_ctl->getI18N();
44 $this->proj->delete();
47 function test_Action()
49 $skel = ETHNA_TEST_SKELDIR . 'skel.action.i18ntest.php';
50 $r = $this->proj->runCmd('add-action',
56 if (Ethna::isError($r)) {
57 $this->fail($r->getMessage());
59 $this->run_i18n_cmd();
60 $catalog = $this->i18n->parseEthnaMsgCatalog($this->msg_file);
62 // assert ActionForm definition.
63 $this->assertTrue(isset($catalog['name_i18n']));
64 $this->assertTrue(isset($catalog['required_error_i18n']));
65 $this->assertTrue(isset($catalog['type_error_i18n']));
66 $this->assertTrue(isset($catalog['min_error_i18n']));
67 $this->assertTrue(isset($catalog['max_error_i18n']));
68 $this->assertTrue(isset($catalog['regexp_error_i18n']));
69 $this->assertTrue(isset($catalog['name_i18n_all']));
70 $this->assertTrue(isset($catalog['required_error_i18n_all']));
71 $this->assertTrue(isset($catalog['type_error_i18n_all']));
72 $this->assertTrue(isset($catalog['min_error_i18n_all']));
73 $this->assertTrue(isset($catalog['max_error_i18n_all']));
74 $this->assertTrue(isset($catalog['regexp_error_i18n_all']));
76 $this->assertTrue(isset($catalog['actionform filter']));
79 $this->assertTrue(isset($catalog['action prepare']));
80 $this->assertTrue(isset($catalog["action\nprepare\n multiple\n line"]));
82 $this->assertTrue(isset($catalog['action perform']));
87 $skel = ETHNA_TEST_SKELDIR . 'skel.view.i18ntest.php';
88 $r = $this->proj->runCmd('add-view',
94 if (Ethna::isError($r)) {
95 $this->fail($r->getMessage());
97 $this->run_i18n_cmd();
98 $catalog = $this->i18n->parseEthnaMsgCatalog($this->msg_file);
101 $this->assertTrue(isset($catalog['view global']));
102 $this->assertTrue(isset($catalog['view prepare']));
103 $this->assertTrue(isset($catalog["view\n\n prepare\n multiple\n line"]));
106 function test_Template()
108 $skel = ETHNA_TEST_SKELDIR . 'skel.template.i18ntest.tpl';
109 $r = $this->proj->runCmd('add-template',
115 if (Ethna::isError($r)) {
116 $this->fail($r->getMessage());
118 $this->run_i18n_cmd();
119 $catalog = $this->i18n->parseEthnaMsgCatalog($this->msg_file);
122 $this->assertTrue(isset($catalog['template i18n']));
123 $this->assertTrue(isset($catalog['template i18n modifier']));
124 $this->assertTrue(isset($catalog['template i18n multiple modifier']));
127 function test_cmd_option()
129 // unrecognized option
130 $r = $this->proj->runCmd('i18n', array('-k'));
131 $this->assertTrue(Ethna::isError($r));
132 $this->assertEqual('unrecognized option -k', $r->getMessage());
134 // --locale(requires an argument)
135 $r = $this->proj->runCmd('i18n', array('-l'));
136 $this->assertTrue(Ethna::isError($r));
137 $this->assertEqual('option -l requires an argument', $r->getMessage());
139 $r = $this->proj->runCmd('i18n', array('-l', 'ko_KR'));
140 $this->assertFalse(Ethna::isError($r));
142 $r = $this->proj->runCmd('i18n', array('--locale'));
143 $this->assertTrue(Ethna::isError($r));
144 $this->assertEqual('option --locale requires an argument', $r->getMessage());
146 // --gettext option only
147 $r = $this->proj->runCmd('i18n', array('-g'));
148 $this->assertFalse(Ethna::isError($r));
150 $r = $this->proj->runCmd('i18n', array('--gettext'));
151 $this->assertFalse(Ethna::isError($r));
153 // --gettext not allowed an argument
154 $r = $this->proj->runCmd('i18n', array('--gettext=foo'));
155 $this->assertTrue(Ethna::isError($r));
156 $this->assertEqual("option --gettext doesn't allow an argument", $r->getMessage());
158 // --locale and --gettext mixin
159 $r = $this->proj->runCmd('i18n', array('-g', '-l', 'ko_KR'));
160 $this->assertFalse(Ethna::isError($r));
162 $r = $this->proj->runCmd('i18n', array('--gettext', '--locale=ko_KR'));
163 $this->assertFalse(Ethna::isError($r));
166 function run_i18n_cmd()
168 $r = $this->proj->runCmd('i18n');
169 if (Ethna::isError($r)) {
170 $this->fail($r->getMessage());