LanguageTest.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. }
  62. /**
  63. * @return void
  64. */
  65. public function testParseLanguageListWithDupes() {
  66. $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';
  67. $res = Language::parseLanguageList($httpAcceptLanguages);
  68. $expected = [
  69. '1.0' => [
  70. 'de-at',
  71. 'se',
  72. ],
  73. '0.8' => [
  74. 'en',
  75. ],
  76. '0.7' => [
  77. 'de-at',
  78. ],
  79. '0.5' => [
  80. 'fr',
  81. ],
  82. '0.3' => [
  83. 'de',
  84. 'de-de',
  85. ],
  86. '0.1' => [
  87. 'en',
  88. ],
  89. ];
  90. $this->assertSame($expected, $res);
  91. }
  92. /**
  93. * @return void
  94. */
  95. public function testFindMatches() {
  96. $res = Language::findMatches([]);
  97. $this->assertSame([], $res);
  98. $res = Language::findMatches(['de', 'en']);
  99. $expected = [
  100. '1.0' => [
  101. 'de-de',
  102. ],
  103. '0.8' => [
  104. 'de',
  105. ],
  106. '0.6' => [
  107. 'en-us',
  108. ],
  109. '0.4' => [
  110. 'en',
  111. ],
  112. ];
  113. $this->assertSame($expected, $res);
  114. $res = Language::findMatches(['DE']);
  115. $expected = [
  116. '1.0' => [
  117. 'de-de',
  118. ],
  119. '0.8' => [
  120. 'de',
  121. ],
  122. ];
  123. $this->assertSame($expected, $res);
  124. $res = Language::findMatches(['cs', 'en']);
  125. $expected = [
  126. '0.6' => [
  127. 'en-us',
  128. ],
  129. '0.4' => [
  130. 'en',
  131. ],
  132. ];
  133. $this->assertSame($expected, $res);
  134. }
  135. }