LanguageTest.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4. * This file is part of the Carbon package.
  5. *
  6. * (c) Brian Nesbitt <brian@nesbot.com>
  7. *
  8. * For the full copyright and license information, please view the LICENSE
  9. * file that was distributed with this source code.
  10. */
  11. namespace Tests\Language;
  12. use Carbon\Language;
  13. use Tests\AbstractTestCase;
  14. class LanguageTest extends AbstractTestCase
  15. {
  16. public function testAll()
  17. {
  18. $all = Language::all();
  19. $this->assertIsArray($all);
  20. $this->assertArrayHasKey('en', $all);
  21. $this->assertIsArray($all['en']);
  22. $this->assertArrayHasKey('isoName', $all['en']);
  23. $this->assertSame('English', $all['en']['isoName']);
  24. }
  25. public function testRegions()
  26. {
  27. $regions = Language::regions();
  28. $this->assertIsArray($regions);
  29. $this->assertArrayHasKey('US', $regions);
  30. $this->assertSame('United States of America', $regions['US']);
  31. }
  32. public function testGetNames()
  33. {
  34. $ar = new Language('ar');
  35. $this->assertSame([
  36. 'isoName' => 'Arabic',
  37. 'nativeName' => 'العربية',
  38. ], $ar->getNames());
  39. }
  40. public function testGetId()
  41. {
  42. $ar = new Language('ar');
  43. $this->assertSame('ar', $ar->getId());
  44. $ar = new Language('ar_DZ');
  45. $this->assertSame('ar_DZ', $ar->getId());
  46. $ar = new Language('ar_Shakl');
  47. $this->assertSame('ar_Shakl', $ar->getId());
  48. }
  49. public function testGetCode()
  50. {
  51. $ar = new Language('ar');
  52. $this->assertSame('ar', $ar->getCode());
  53. $ar = new Language('ar_DZ');
  54. $this->assertSame('ar', $ar->getCode());
  55. $ar = new Language('ar_Shakl');
  56. $this->assertSame('ar', $ar->getCode());
  57. $sr = new Language('sr_Cyrl_ME');
  58. $this->assertSame('sr', $sr->getCode());
  59. }
  60. public function testGetVariant()
  61. {
  62. $ar = new Language('ar');
  63. $this->assertNull($ar->getVariant());
  64. $ar = new Language('ar_DZ');
  65. $this->assertNull($ar->getVariant());
  66. $ar = new Language('ar_Shakl');
  67. $this->assertSame('Shakl', $ar->getVariant());
  68. $sr = new Language('sr_Cyrl_ME');
  69. $this->assertSame('Cyrl', $sr->getVariant());
  70. }
  71. public function testGetRegion()
  72. {
  73. $ar = new Language('ar');
  74. $this->assertNull($ar->getRegion());
  75. $ar = new Language('ar_DZ');
  76. $this->assertSame('DZ', $ar->getRegion());
  77. $ar = new Language('ar_Shakl');
  78. $this->assertNull($ar->getRegion());
  79. $sr = new Language('sr_Cyrl_ME');
  80. $this->assertSame('ME', $sr->getRegion());
  81. }
  82. public function testGetRegionName()
  83. {
  84. $ar = new Language('ar');
  85. $this->assertNull($ar->getRegionName());
  86. $ar = new Language('ar_DZ');
  87. $this->assertSame('Algeria', $ar->getRegionName());
  88. $ar = new Language('ar_Shakl');
  89. $this->assertNull($ar->getRegionName());
  90. $sr = new Language('sr_Cyrl_ME');
  91. $this->assertSame('Montenegro', $sr->getRegionName());
  92. }
  93. public function testGetFullIsoName()
  94. {
  95. $ar = new Language('ca');
  96. $this->assertSame('Catalan, Valencian', $ar->getFullIsoName());
  97. $this->assertSame('Catalan, Valencian', $ar->getFullIsoName());
  98. $ar = new Language('ar_DZ');
  99. $this->assertSame('Arabic', $ar->getFullIsoName());
  100. $gom = new Language('gom_Latn');
  101. $this->assertSame('Konkani, Goan', $gom->getFullIsoName());
  102. $foo = new Language('foo_Latn');
  103. $this->assertSame('foo', $foo->getFullIsoName());
  104. $sr = new Language('sr_Cyrl_ME');
  105. $this->assertSame('Serbian', $sr->getFullIsoName());
  106. }
  107. public function testGetFullNativeName()
  108. {
  109. $ar = new Language('ca');
  110. $this->assertSame('català, valencià', $ar->getFullNativeName());
  111. $this->assertSame('català, valencià', $ar->getFullNativeName());
  112. $ar = new Language('ar_DZ');
  113. $this->assertSame('العربية', $ar->getFullNativeName());
  114. $gom = new Language('gom_Latn');
  115. $this->assertSame('ಕೊಂಕಣಿ', $gom->getFullNativeName());
  116. $foo = new Language('foo_Latn');
  117. $this->assertSame('foo', $foo->getFullNativeName());
  118. $sr = new Language('sr_Cyrl_ME');
  119. $this->assertSame('српски језик', $sr->getFullNativeName());
  120. }
  121. public function testGetIsoName()
  122. {
  123. $ar = new Language('ca');
  124. $this->assertSame('Catalan', $ar->getIsoName());
  125. $this->assertSame('Catalan', $ar->getIsoName());
  126. $ar = new Language('ar_DZ');
  127. $this->assertSame('Arabic', $ar->getIsoName());
  128. $gom = new Language('gom_Latn');
  129. $this->assertSame('Konkani', $gom->getIsoName());
  130. $foo = new Language('foo_Latn');
  131. $this->assertSame('foo', $foo->getIsoName());
  132. $sr = new Language('sr_Cyrl_ME');
  133. $this->assertSame('Serbian', $sr->getIsoName());
  134. }
  135. public function testGetNativeName()
  136. {
  137. $ar = new Language('ca');
  138. $this->assertSame('català', $ar->getNativeName());
  139. $this->assertSame('català', $ar->getNativeName());
  140. $ar = new Language('ar_DZ');
  141. $this->assertSame('العربية', $ar->getNativeName());
  142. $gom = new Language('gom_Latn');
  143. $this->assertSame('ಕೊಂಕಣಿ', $gom->getNativeName());
  144. $foo = new Language('foo_Latn');
  145. $this->assertSame('foo', $foo->getNativeName());
  146. $sr = new Language('sr_Cyrl_ME');
  147. $this->assertSame('српски језик', $sr->getNativeName());
  148. }
  149. public function testGetIsoDescription()
  150. {
  151. $ar = new Language('ca');
  152. $this->assertSame('Catalan', $ar->getIsoDescription());
  153. $this->assertSame('Catalan', $ar->getIsoDescription());
  154. $ar = new Language('ar_DZ');
  155. $this->assertSame('Arabic (Algeria)', $ar->getIsoDescription());
  156. $gom = new Language('gom_Latn');
  157. $this->assertSame('Konkani (Latin)', $gom->getIsoDescription());
  158. $foo = new Language('foo_Latn');
  159. $this->assertSame('foo (Latin)', $foo->getIsoDescription());
  160. $foo->setNativeName('Foobar, Barbiz');
  161. $this->assertSame('foo (Latin)', $foo->getIsoDescription());
  162. $foo->setIsoName('Foobar, Barbiz');
  163. $this->assertSame('Foobar (Latin)', $foo->getIsoDescription());
  164. $sr = new Language('sr_Cyrl_ME');
  165. $this->assertSame('Serbian (Montenegro) (Cyrillic)', $sr->getIsoDescription());
  166. }
  167. public function testGetNativeDescription()
  168. {
  169. $ar = new Language('ca');
  170. $this->assertSame('català', $ar->getNativeDescription());
  171. $this->assertSame('català', $ar->getNativeDescription());
  172. $ar = new Language('ar_DZ');
  173. $this->assertSame('العربية (Algeria)', $ar->getNativeDescription());
  174. $gom = new Language('gom_Latn');
  175. $this->assertSame('ಕೊಂಕಣಿ (Latin)', $gom->getNativeDescription());
  176. $foo = new Language('foo_Latn');
  177. $this->assertSame('foo (Latin)', $foo->getNativeDescription());
  178. $foo->setIsoName('Foobar, Barbiz');
  179. $this->assertSame('foo (Latin)', $foo->getNativeDescription());
  180. $foo->setNativeName('Foobar, Barbiz');
  181. $this->assertSame('Foobar (Latin)', $foo->getNativeDescription());
  182. $sr = new Language('sr_Cyrl_ME');
  183. $this->assertSame('српски језик (Montenegro) (Cyrillic)', $sr->getNativeDescription());
  184. }
  185. public function testGetFullIsoDescription()
  186. {
  187. $ar = new Language('ca');
  188. $this->assertSame('Catalan, Valencian', $ar->getFullIsoDescription());
  189. $this->assertSame('Catalan, Valencian', $ar->getFullIsoDescription());
  190. $ar = new Language('ar_DZ');
  191. $this->assertSame('Arabic (Algeria)', $ar->getFullIsoDescription());
  192. $gom = new Language('gom_Latn');
  193. $this->assertSame('Konkani, Goan (Latin)', $gom->getFullIsoDescription());
  194. $foo = new Language('foo_Latn');
  195. $this->assertSame('foo (Latin)', $foo->getFullIsoDescription());
  196. $foo->setNativeName('Foobar, Barbiz');
  197. $this->assertSame('foo (Latin)', $foo->getFullIsoDescription());
  198. $foo->setIsoName('Foobar, Barbiz');
  199. $this->assertSame('Foobar, Barbiz (Latin)', $foo->getFullIsoDescription());
  200. $sr = new Language('sr_Cyrl_ME');
  201. $this->assertSame('Serbian (Montenegro) (Cyrillic)', $sr->getFullIsoDescription());
  202. }
  203. public function testGetFullNativeDescription()
  204. {
  205. $ar = new Language('ca');
  206. $this->assertSame('català, valencià', $ar->getFullNativeDescription());
  207. $this->assertSame('català, valencià', $ar->getFullNativeDescription());
  208. $ar = new Language('ar_DZ');
  209. $this->assertSame('العربية (Algeria)', $ar->getFullNativeDescription());
  210. $gom = new Language('gom_Latn');
  211. $this->assertSame('ಕೊಂಕಣಿ (Latin)', $gom->getFullNativeDescription());
  212. $foo = new Language('foo_Latn');
  213. $this->assertSame('foo (Latin)', $foo->getFullNativeDescription());
  214. $foo->setIsoName('Foobar, Barbiz');
  215. $this->assertSame('foo (Latin)', $foo->getFullNativeDescription());
  216. $foo->setNativeName('Foobar, Barbiz');
  217. $this->assertSame('Foobar, Barbiz (Latin)', $foo->getFullNativeDescription());
  218. $sr = new Language('sr_Cyrl_ME');
  219. $this->assertSame('српски језик (Montenegro) (Cyrillic)', $sr->getFullNativeDescription());
  220. }
  221. public function testToString()
  222. {
  223. $ar = new Language('ar');
  224. $this->assertSame('ar', (string) $ar);
  225. $ar = new Language('ar_DZ');
  226. $this->assertSame('ar_DZ', (string) $ar);
  227. $ar = new Language('ar_Shakl');
  228. $this->assertSame('ar_Shakl', (string) $ar);
  229. }
  230. public function testToJson()
  231. {
  232. $ar = new Language('ca');
  233. $this->assertSame('"Catalan"', json_encode($ar));
  234. $this->assertSame('"Catalan"', json_encode($ar));
  235. $ar = new Language('ar_DZ');
  236. $this->assertSame('"Arabic (Algeria)"', json_encode($ar));
  237. $gom = new Language('gom_Latn');
  238. $this->assertSame('"Konkani (Latin)"', json_encode($gom));
  239. $foo = new Language('foo_Latn');
  240. $this->assertSame('"foo (Latin)"', json_encode($foo));
  241. $foo->setNativeName('Foobar, Barbiz');
  242. $this->assertSame('"foo (Latin)"', json_encode($foo));
  243. $foo->setIsoName('Foobar, Barbiz');
  244. $this->assertSame('"Foobar (Latin)"', json_encode($foo));
  245. $sr = new Language('sr_Cyrl_ME');
  246. $this->assertSame('"Serbian (Montenegro) (Cyrillic)"', json_encode($sr));
  247. }
  248. }