PageRenderTime 418ms CodeModel.GetById 24ms RepoModel.GetById 2ms app.codeStats 0ms

/lithium/libraries/lithium/tests/cases/g11n/catalog/adapter/CodeTest.php

https://github.com/brtriver/sukonv
PHP | 238 lines | 174 code | 58 blank | 6 comment | 0 complexity | 36e6f0a5cbca7c07650e1ae3d0ab817c MD5 | raw file
  1. <?php
  2. /**
  3. * Lithium: the most rad php framework
  4. *
  5. * @copyright Copyright 2010, Union of RAD (http://union-of-rad.org)
  6. * @license http://opensource.org/licenses/bsd-license.php The BSD License
  7. */
  8. namespace lithium\tests\cases\g11n\catalog\adapter;
  9. use \Exception;
  10. use lithium\g11n\catalog\adapter\Code;
  11. class CodeTest extends \lithium\test\Unit {
  12. public $adapter;
  13. protected $_path;
  14. public function setUp() {
  15. $this->_path = $path = LITHIUM_APP_PATH . '/resources/tmp/tests';
  16. $this->skipIf(!is_writable($this->_path), "{$this->_path} is not writable.");
  17. $this->adapter = new Code(compact('path'));
  18. $file = "{$this->_path}/a.php";
  19. $data = <<<'EOD'
  20. <?php
  21. $t('simple 1');
  22. $t('options 1', null, array('locale' => 'en'));
  23. $t('replace 1 {:a}', array('a' => 'b'));
  24. $t($test['invalid']);
  25. $t(32203);
  26. $t('invalid 1', $test['invalid']);
  27. $t('invalid 2', 32203);
  28. $t('invalid 3', 'invalid 3b');
  29. $t('escaping\n1');
  30. $t("escaping\n2");
  31. $t("escaping\r\n3");
  32. $t('escaping
  33. 4');
  34. $tn('singular simple 1', 'plural simple 1', 3);
  35. $tn('singular simple 2', 'plural simple 2');
  36. $t('mixed 1');
  37. $tn('mixed 1', 'plural mixed 1', 3);
  38. $t('mixed 2');
  39. $tn('mixed 2', 'plural mixed 2', 3);
  40. $t('mixed 2');
  41. $t('plural mixed 2');
  42. ?>
  43. EOD;
  44. file_put_contents($file, $data);
  45. $file = "{$this->_path}/a.html.php";
  46. $data = <<<'EOD'
  47. <?=$t('simple 1 short'); ?>
  48. <?=$tn('singular simple 1 short', 'plural simple 1 short', 3); ?>
  49. EOD;
  50. file_put_contents($file, $data);
  51. }
  52. public function tearDown() {
  53. $this->_cleanUp();
  54. }
  55. public function testPathMustExist() {
  56. $path = LITHIUM_APP_PATH . '/resources/tmp/tests';
  57. try {
  58. new Code(array('path' => $this->_path));
  59. $result = true;
  60. } catch (Exception $e) {
  61. $result = false;
  62. }
  63. $this->assert($result);
  64. try {
  65. new Code(array('path' => "{$path}/i_do_not_exist"));
  66. $result = false;
  67. } catch (Exception $e) {
  68. $result = true;
  69. }
  70. $this->assert($result);
  71. }
  72. public function testReadMessageTemplateTSimple() {
  73. $results = $this->adapter->read('messageTemplate', 'root', null);
  74. $expected = array('singular' => 'simple 1');
  75. $result = $results['simple 1']['ids'];
  76. $this->assertEqual($expected, $result);
  77. }
  78. public function testReadMessageTemplateTSimpleShort() {
  79. $results = $this->adapter->read('messageTemplate', 'root', null);
  80. $expected = array('singular' => 'simple 1 short');
  81. $result = $results['simple 1 short']['ids'];
  82. $this->assertEqual($expected, $result);
  83. }
  84. public function testReadMessageTemplateTOptions() {
  85. $results = $this->adapter->read('messageTemplate', 'root', null);
  86. $expected = array('singular' => 'options 1');
  87. $result = $results['options 1']['ids'];
  88. $this->assertEqual($expected, $result);
  89. }
  90. public function testReadMessageTemplateTReplace() {
  91. $results = $this->adapter->read('messageTemplate', 'root', null);
  92. $expected = array('singular' => 'replace 1 {:a}');
  93. $result = $results['replace 1 {:a}']['ids'];
  94. $this->assertEqual($expected, $result);
  95. }
  96. public function testReadMessageTemplateTInvalid() {
  97. $results = $this->adapter->read('messageTemplate', 'root', null);
  98. $result = isset($results['32203']);
  99. $this->assertFalse($result);
  100. $result = isset($results[32203]);
  101. $this->assertFalse($result);
  102. $expected = array('singular' => 'invalid 1');
  103. $result = $results['invalid 1']['ids'];
  104. $this->assertEqual($expected, $result);
  105. $expected = array('singular' => 'invalid 2');
  106. $result = $results['invalid 2']['ids'];
  107. $this->assertEqual($expected, $result);
  108. $expected = array('singular' => 'invalid 3');
  109. $result = $results['invalid 3']['ids'];
  110. $this->assertEqual($expected, $result);
  111. }
  112. public function testReadMessageTemplateTNoEscaping() {
  113. $results = $this->adapter->read('messageTemplate', 'root', null);
  114. $expected = 'escaping\n1';
  115. $result = $results['escaping\n1']['ids']['singular'];
  116. $this->assertEqual($expected, $result);
  117. $expected = 'escaping\n2';
  118. $result = $results['escaping\n2']['ids']['singular'];
  119. $this->assertEqual($expected, $result);
  120. $expected = 'escaping\r\n3';
  121. $result = $results['escaping\r\n3']['ids']['singular'];
  122. $this->assertEqual($expected, $result);
  123. $expected = "escaping\n\t4";
  124. $result = $results["escaping\n\t4"]['ids']['singular'];
  125. $this->assertEqual($expected, $result);
  126. }
  127. public function testReadMessageTemplateTnSimple() {
  128. $results = $this->adapter->read('messageTemplate', 'root', null);
  129. $expected = 'singular simple 1';
  130. $result = $results['singular simple 1']['ids']['singular'];
  131. $this->assertEqual($expected, $result);
  132. $expected = 'plural simple 1';
  133. $result = $results['singular simple 1']['ids']['plural'];
  134. $this->assertEqual($expected, $result);
  135. $expected = 'singular simple 2';
  136. $result = $results['singular simple 2']['ids']['singular'];
  137. $this->assertEqual($expected, $result);
  138. $expected = 'plural simple 2';
  139. $result = $results['singular simple 2']['ids']['plural'];
  140. $this->assertEqual($expected, $result);
  141. }
  142. public function testReadMessageTemplateTnSimpleShort() {
  143. $results = $this->adapter->read('messageTemplate', 'root', null);
  144. $expected = 'singular simple 1 short';
  145. $result = $results['singular simple 1 short']['ids']['singular'];
  146. $this->assertEqual($expected, $result);
  147. $expected = 'plural simple 1 short';
  148. $result = $results['singular simple 1 short']['ids']['plural'];
  149. $this->assertEqual($expected, $result);
  150. }
  151. public function testReadMessageTemplateTnT() {
  152. $results = $this->adapter->read('messageTemplate', 'root', null);
  153. $expected = 'mixed 1';
  154. $result = $results['mixed 1']['ids']['singular'];
  155. $this->assertEqual($expected, $result);
  156. $expected = 'plural mixed 1';
  157. $result = $results['mixed 1']['ids']['plural'];
  158. $this->assertEqual($expected, $result);
  159. $expected = 'mixed 2';
  160. $result = $results['mixed 2']['ids']['singular'];
  161. $this->assertEqual($expected, $result);
  162. $expected = 'plural mixed 2';
  163. $result = $results['mixed 2']['ids']['plural'];
  164. $this->assertEqual($expected, $result);
  165. }
  166. public function testReadWithScope() {
  167. $this->adapter = new Code(array('path' => $this->_path, 'scope' => 'li3_bot'));
  168. $results = $this->adapter->read('messageTemplate', 'root', null);
  169. $this->assertFalse($results);
  170. $results = $this->adapter->read('messageTemplate', 'root', 'li3_bot');
  171. $expected = array('singular' => 'simple 1');
  172. $result = $results['simple 1']['ids'];
  173. $this->assertEqual($expected, $result);
  174. }
  175. public function testNoReadSupportForOtherCategories() {
  176. $result = $this->adapter->read('message', 'de', null);
  177. $this->assertFalse($result);
  178. }
  179. }
  180. ?>