LanguageTest.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?php
  2. namespace Tools\Test\TestCase\Utility;
  3. use Shim\TestSuite\TestCase;
  4. use Tools\Utility\Language;
  5. class LanguageTest extends TestCase {
  6. /**
  7. * @return void
  8. */
  9. public function setUp(): void {
  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. * @return void
  72. */
  73. public function testParseLanguageListWithDupes() {
  74. $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';
  75. $res = Language::parseLanguageList($httpAcceptLanguages);
  76. $expected = [
  77. '1.0' => [
  78. 'de-at',
  79. 'se',
  80. ],
  81. '0.8' => [
  82. 'en',
  83. ],
  84. '0.7' => [
  85. 'de-at',
  86. ],
  87. '0.5' => [
  88. 'fr',
  89. ],
  90. '0.3' => [
  91. 'de',
  92. 'de-de',
  93. ],
  94. '0.1' => [
  95. 'en',
  96. ],
  97. ];
  98. $this->assertSame($expected, $res);
  99. }
  100. /**
  101. * @return void
  102. */
  103. public function testFindMatches() {
  104. $res = Language::findMatches([]);
  105. $this->assertSame([], $res);
  106. $res = Language::findMatches(['de', 'en']);
  107. $expected = [
  108. '1.0' => [
  109. 'de-de',
  110. ],
  111. '0.8' => [
  112. 'de',
  113. ],
  114. '0.6' => [
  115. 'en-us',
  116. ],
  117. '0.4' => [
  118. 'en',
  119. ],
  120. ];
  121. $this->assertSame($expected, $res);
  122. $res = Language::findMatches(['DE']);
  123. $expected = [
  124. '1.0' => [
  125. 'de-de',
  126. ],
  127. '0.8' => [
  128. 'de',
  129. ],
  130. ];
  131. $this->assertSame($expected, $res);
  132. $res = Language::findMatches(['cs', 'en']);
  133. $expected = [
  134. '0.6' => [
  135. 'en-us',
  136. ],
  137. '0.4' => [
  138. 'en',
  139. ],
  140. ];
  141. $this->assertSame($expected, $res);
  142. }
  143. }