OSDN Git Service

- controller での smarty_xx_plugin で Smarty プラグインを指定する機能を削除 http://sourceforge.jp/ticke...
[ethna/ethna.git] / test / Plugin / Handle / Ethna_Plugin_Handle_I18n_Test.php
1 <?php
2 // vim: foldmethod=marker
3 /**
4  *  Ethna_Plugin_Handle_I18n_Test.php
5  *
6  *  @author     Yoshinari Takaoka <takaoka@beatcraft.com>
7  *  @version    $Id$
8  */
9
10 require_once ETHNA_BASE . '/test/Ethna_MockProject.php';
11
12 //{{{  Ethna_Plugin_Handle_I18n_Test
13 /**
14  *  Test Case For Ethna_Plugin_Handle_I18n_Test 
15  *
16  *  @access public
17  */
18 class Ethna_Plugin_Handle_I18n_Test extends Ethna_UnitTestBase 
19 {
20     var $proj;
21     var $mock_ctl;
22     var $msg_file;
23     var $i18n;
24
25     function setUp()
26     {
27         $this->proj = new Ethna_MockProject();
28         $r = $this->proj->create();
29         if (Ethna::isError($r)) {
30             $this->fail($r->getMessage());    
31         }
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 . '/'
36                         . $locale . '/'
37                         . 'LC_MESSAGES/'
38                         . "$locale.ini";
39         $this->i18n = $this->mock_ctl->getI18N();
40     }
41
42     function tearDown()
43     {
44         $this->proj->delete();
45     }
46
47     function test_Action()
48     {
49         $skel = ETHNA_TEST_SKELDIR . 'skel.action.i18ntest.php';   
50         $r = $this->proj->runCmd('add-action',
51                           array(
52                               '-s', $skel,
53                               'i18n', 
54                           ) 
55              );
56         if (Ethna::isError($r)) {
57             $this->fail($r->getMessage());
58         }
59         $this->run_i18n_cmd();
60         $catalog = $this->i18n->parseEthnaMsgCatalog($this->msg_file);
61
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']));
75         
76         $this->assertTrue(isset($catalog['actionform filter']));
77
78         //  assert Action
79         $this->assertTrue(isset($catalog['action prepare']));
80         $this->assertTrue(isset($catalog["action\nprepare\n multiple\n  line"]));
81         
82         $this->assertTrue(isset($catalog['action perform']));
83     } 
84
85     function test_View()
86     {
87         $skel = ETHNA_TEST_SKELDIR . 'skel.view.i18ntest.php';   
88         $r = $this->proj->runCmd('add-view',
89                           array(
90                               '-s', $skel,
91                               'i18n', 
92                           ) 
93              );
94         if (Ethna::isError($r)) {
95             $this->fail($r->getMessage());
96         }
97         $this->run_i18n_cmd();
98         $catalog = $this->i18n->parseEthnaMsgCatalog($this->msg_file);
99
100         //  assert view 
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"]));
104     } 
105
106     function test_Template()
107     {
108         $skel = ETHNA_TEST_SKELDIR . 'skel.template.i18ntest.tpl';   
109         $r = $this->proj->runCmd('add-template',
110                           array(
111                               '-s', $skel,
112                               'i18n', 
113                           ) 
114              );
115         if (Ethna::isError($r)) {
116             $this->fail($r->getMessage());
117         }
118         $this->run_i18n_cmd();
119         $catalog = $this->i18n->parseEthnaMsgCatalog($this->msg_file);
120
121         //  assert template 
122         $this->assertTrue(isset($catalog['template i18n']));
123         $this->assertTrue(isset($catalog['template i18n modifier']));
124         $this->assertTrue(isset($catalog['template i18n multiple modifier']));
125     } 
126
127     function test_cmd_option()
128     {
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());
133
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());
138
139         $r = $this->proj->runCmd('i18n', array('-l', 'ko_KR'));
140         $this->assertFalse(Ethna::isError($r));
141         
142         $r = $this->proj->runCmd('i18n', array('--locale'));
143         $this->assertTrue(Ethna::isError($r));
144         $this->assertEqual('option --locale requires an argument', $r->getMessage());
145
146         //    --gettext option only
147         $r = $this->proj->runCmd('i18n', array('-g'));
148         $this->assertFalse(Ethna::isError($r));
149
150         $r = $this->proj->runCmd('i18n', array('--gettext'));
151         $this->assertFalse(Ethna::isError($r));
152
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());
157
158         //    --locale and --gettext mixin
159         $r = $this->proj->runCmd('i18n', array('-g', '-l', 'ko_KR'));
160         $this->assertFalse(Ethna::isError($r));
161
162         $r = $this->proj->runCmd('i18n', array('--gettext', '--locale=ko_KR'));
163         $this->assertFalse(Ethna::isError($r));
164     }
165    
166     function run_i18n_cmd()
167     {
168         $r = $this->proj->runCmd('i18n');
169         if (Ethna::isError($r)) {
170             $this->fail($r->getMessage());
171             return;
172         }
173     } 
174
175
176 }
177 // }}}
178
179 ?>