LanguageTest.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. namespace Tools\Test\TestCase\Utility;
  3. use Tools\TestSuite\TestCase;
  4. use Tools\Utility\Language;
  5. class LanguageTest extends TestCase {
  6. /**
  7. * @return void
  8. */
  9. public function setUp() {
  10. parent::setUp();
  11. $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4';
  12. }
  13. /**
  14. * LanguageTest::testAll()
  15. *
  16. * @return void
  17. */
  18. public function testParseLanguageListEmpty() {
  19. $_SERVER['HTTP_ACCEPT_LANGUAGE'] = '';
  20. $res = Language::parseLanguageList();
  21. $this->assertSame([], $res);
  22. }
  23. /**
  24. * LanguageTest::testParseLanguageList()
  25. *
  26. * @return void
  27. */
  28. public function testParseLanguageList() {
  29. $res = Language::parseLanguageList();
  30. $expected = [
  31. '1.0' => [
  32. 'de-de'
  33. ],
  34. '0.8' => [
  35. 'de'
  36. ],
  37. '0.6' => [
  38. 'en-us'
  39. ],
  40. '0.4' => [
  41. 'en'
  42. ]
  43. ];
  44. $this->assertSame($expected, $res);
  45. $res = Language::parseLanguageList('FI-FI,de-DE', ['forceLowerCase' => true]);
  46. $expected = [
  47. '1.0' => [
  48. 'fi-fi',
  49. 'de-de',
  50. ],
  51. ];
  52. $this->assertSame($expected, $res);
  53. $res = Language::parseLanguageList('fi-fi,DE-DE', ['forceLowerCase' => false]);
  54. $expected = [
  55. '1.0' => [
  56. 'fi-FI',
  57. 'de-DE'
  58. ],
  59. ];
  60. $this->assertSame($expected, $res);
  61. $res = Language::parseLanguageList('fi-fi,DE-DE', false);
  62. $expected = [
  63. '1.0' => [
  64. 'fi-FI',
  65. 'de-DE'
  66. ],
  67. ];
  68. $this->assertSame($expected, $res);
  69. }
  70. /**
  71. * LanguageTest::testParseLanguageListWithDupes()
  72. *
  73. * @return void
  74. */
  75. public function testParseLanguageListWithDupes() {
  76. $httpAcceptLanguages = 'en-US,en;q=0.1,de-AT;q=0.7,fr;q=0.5,de;q=0.3,DE-DE;q=0.3,en-US,en;q=0.8,de-AT;q=1.0,fr;q=0.5,de;q=0.3,de-DE;q=0.1,SE';
  77. $res = Language::parseLanguageList($httpAcceptLanguages);
  78. $expected = [
  79. '1.0' => [
  80. 'de-at',
  81. 'se',
  82. ],
  83. '0.8' => [
  84. 'en',
  85. ],
  86. '0.7' => [
  87. 'de-at',
  88. ],
  89. '0.5' => [
  90. 'fr',
  91. 'fr',
  92. ],
  93. '0.3' => [
  94. 'de',
  95. 'de-de',
  96. 'de',
  97. ],
  98. '0.1' => [
  99. 'en',
  100. 'de-de',
  101. ],
  102. ];
  103. $this->assertSame($expected, $res);
  104. $res = Language::parseLanguageList($httpAcceptLanguages, ['removeDuplicates' => true]);
  105. $expected = [
  106. '1.0' => [
  107. 'de-at',
  108. 'se',
  109. ],
  110. '0.8' => [
  111. 'en',
  112. ],
  113. '0.7' => [
  114. 'de-at',
  115. ],
  116. '0.5' => [
  117. 'fr',
  118. ],
  119. '0.3' => [
  120. 'de',
  121. 'de-de',
  122. ],
  123. '0.1' => [
  124. 'en',
  125. ],
  126. ];
  127. $this->assertSame($expected, $res);
  128. }
  129. /**
  130. * LanguageTest::testFindMatches()
  131. *
  132. * @return void
  133. */
  134. public function testFindMatches() {
  135. $res = Language::findMatches([]);
  136. $this->assertSame([], $res);
  137. $res = Language::findMatches(['de', 'en']);
  138. $expected = [
  139. '1.0' => [
  140. 'de-de'
  141. ],
  142. '0.8' => [
  143. 'de'
  144. ],
  145. '0.6' => [
  146. 'en-us'
  147. ],
  148. '0.4' => [
  149. 'en'
  150. ]
  151. ];
  152. $this->assertSame($expected, $res);
  153. $res = Language::findMatches(['DE']);
  154. $expected = [
  155. '1.0' => [
  156. 'de-de'
  157. ],
  158. '0.8' => [
  159. 'de'
  160. ]
  161. ];
  162. $this->assertSame($expected, $res);
  163. $res = Language::findMatches(['cs', 'en']);
  164. $expected = [
  165. '0.6' => [
  166. 'en-us'
  167. ],
  168. '0.4' => [
  169. 'en'
  170. ]
  171. ];
  172. $this->assertSame($expected, $res);
  173. }
  174. }