getlanguages_test.cc 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. #include <config.h>
  2. #include <apt-pkg/aptconfiguration.h>
  3. #include <apt-pkg/configuration.h>
  4. #include "assert.h"
  5. #include <string>
  6. #include <vector>
  7. #include <iostream>
  8. int main(int argc,char *argv[])
  9. {
  10. if (argc != 2) {
  11. std::cout << "One parameter expected - given " << argc << std::endl;
  12. return 100;
  13. }
  14. char const* env[2];
  15. env[0] = "de_DE.UTF-8";
  16. env[1] = "";
  17. std::vector<std::string> vec = APT::Configuration::getLanguages(false, false, env);
  18. equals(vec.size(), 3);
  19. equals(vec[0], "de_DE");
  20. equals(vec[1], "de");
  21. equals(vec[2], "en");
  22. // Special: Check if the cache is actually in use
  23. env[0] = "en_GB.UTF-8";
  24. vec = APT::Configuration::getLanguages(false, true, env);
  25. equals(vec.size(), 3);
  26. equals(vec[0], "de_DE");
  27. equals(vec[1], "de");
  28. equals(vec[2], "en");
  29. env[0] = "en_GB.UTF-8";
  30. vec = APT::Configuration::getLanguages(false, false, env);
  31. equals(vec.size(), 2);
  32. equals(vec[0], "en_GB");
  33. equals(vec[1], "en");
  34. // esperanto
  35. env[0] = "eo.UTF-8";
  36. vec = APT::Configuration::getLanguages(false, false, env);
  37. equals(vec.size(), 2);
  38. equals(vec[0], "eo");
  39. equals(vec[1], "en");
  40. env[0] = "tr_DE@euro";
  41. vec = APT::Configuration::getLanguages(false, false, env);
  42. equals(vec.size(), 3);
  43. equals(vec[0], "tr_DE");
  44. equals(vec[1], "tr");
  45. equals(vec[2], "en");
  46. env[0] = "de_NO";
  47. env[1] = "de_NO:en_GB:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en";
  48. vec = APT::Configuration::getLanguages(false, false, env);
  49. equals(vec.size(), 6);
  50. equals(vec[0], "de_NO");
  51. equals(vec[1], "de");
  52. equals(vec[2], "en_GB");
  53. equals(vec[3], "nb_NO");
  54. equals(vec[4], "nb");
  55. equals(vec[5], "en");
  56. env[0] = "pt_PR.UTF-8";
  57. env[1] = "";
  58. vec = APT::Configuration::getLanguages(false, false, env);
  59. equals(vec.size(), 3);
  60. equals(vec[0], "pt_PR");
  61. equals(vec[1], "pt");
  62. equals(vec[2], "en");
  63. env[0] = "ast_DE.UTF-8";
  64. vec = APT::Configuration::getLanguages(false, false, env); // bogus, but syntactical correct
  65. equals(vec.size(), 3);
  66. equals(vec[0], "ast_DE");
  67. equals(vec[1], "ast");
  68. equals(vec[2], "en");
  69. env[0] = "C";
  70. vec = APT::Configuration::getLanguages(false, false, env);
  71. equals(vec.size(), 1);
  72. equals(vec[0], "en");
  73. _config->Set("Acquire::Languages", "none");
  74. env[0] = "C";
  75. vec = APT::Configuration::getLanguages(false, false, env);
  76. equals(vec.size(), 0);
  77. _config->Set("Acquire::Languages", "environment");
  78. env[0] = "C";
  79. vec = APT::Configuration::getLanguages(false, false, env);
  80. equals(vec.size(), 1);
  81. equals(vec[0], "en");
  82. _config->Set("Acquire::Languages", "de");
  83. env[0] = "C";
  84. vec = APT::Configuration::getLanguages(false, false, env);
  85. equals(vec.size(), 1);
  86. equals(vec[0], "de");
  87. _config->Set("Acquire::Languages", "fr");
  88. env[0] = "ast_DE.UTF-8";
  89. vec = APT::Configuration::getLanguages(false, false, env);
  90. equals(vec.size(), 1);
  91. equals(vec[0], "fr");
  92. _config->Set("Acquire::Languages", "environment,en");
  93. env[0] = "de_DE.UTF-8";
  94. vec = APT::Configuration::getLanguages(false, false, env);
  95. equals(vec.size(), 3);
  96. equals(vec[0], "de_DE");
  97. equals(vec[1], "de");
  98. equals(vec[2], "en");
  99. _config->Set("Acquire::Languages", "");
  100. _config->Set("Acquire::Languages::1", "environment");
  101. _config->Set("Acquire::Languages::2", "en");
  102. env[0] = "de_DE.UTF-8";
  103. vec = APT::Configuration::getLanguages(false, false, env);
  104. equals(vec.size(), 3);
  105. equals(vec[0], "de_DE");
  106. equals(vec[1], "de");
  107. equals(vec[2], "en");
  108. _config->Set("Acquire::Languages::3", "de");
  109. env[0] = "de_DE.UTF-8";
  110. vec = APT::Configuration::getLanguages(false, false, env);
  111. equals(vec.size(), 3);
  112. equals(vec[0], "de_DE");
  113. equals(vec[1], "de");
  114. equals(vec[2], "en");
  115. _config->Set("Dir::State::lists", argv[1]);
  116. vec = APT::Configuration::getLanguages(true, false, env);
  117. equals(vec.size(), 8);
  118. equals(vec[0], "de_DE");
  119. equals(vec[1], "de");
  120. equals(vec[2], "en");
  121. equals(vec[3], "none");
  122. equalsOr4(vec[4], "pt", "tr", "ast_DE", "tlh_DE");
  123. equalsOr4(vec[5], "tr", "pt", "ast_DE", "tlh_DE");
  124. equalsOr4(vec[6], "tr", "pt", "ast_DE", "tlh_DE");
  125. equalsOr4(vec[7], "tr", "pt", "ast_DE", "tlh_DE");
  126. equalsNot(vec[4], vec[5]);
  127. equalsNot(vec[4], vec[6]);
  128. equalsNot(vec[4], vec[7]);
  129. equalsNot(vec[5], vec[6]);
  130. equalsNot(vec[5], vec[7]);
  131. equalsNot(vec[6], vec[7]);
  132. _config->Set("Acquire::Languages", "none");
  133. vec = APT::Configuration::getLanguages(true, false, env);
  134. equals(vec.size(), 1);
  135. equals(vec[0], "none");
  136. _config->Set("Acquire::Languages", "");
  137. _config->Set("Dir::State::lists", "/non-existing-dir");
  138. _config->Set("Acquire::Languages::1", "none");
  139. env[0] = "de_DE.UTF-8";
  140. vec = APT::Configuration::getLanguages(false, false, env);
  141. equals(vec.size(), 0);
  142. env[0] = "de_DE.UTF-8";
  143. vec = APT::Configuration::getLanguages(true, false, env);
  144. equals(vec.size(), 2);
  145. equals(vec[0], "en");
  146. equals(vec[1], "de");
  147. _config->Set("Acquire::Languages::1", "fr");
  148. _config->Set("Acquire::Languages", "de_DE");
  149. env[0] = "de_DE.UTF-8";
  150. vec = APT::Configuration::getLanguages(false, false, env);
  151. equals(vec.size(), 1);
  152. equals(vec[0], "de_DE");
  153. _config->Set("Acquire::Languages", "none");
  154. env[0] = "de_DE.UTF-8";
  155. vec = APT::Configuration::getLanguages(true, false, env);
  156. equals(vec.size(), 1);
  157. equals(vec[0], "none");
  158. _config->Set("Acquire::Languages", "");
  159. //FIXME: Remove support for this deprecated setting
  160. _config->Set("APT::Acquire::Translation", "ast_DE");
  161. env[0] = "de_DE.UTF-8";
  162. vec = APT::Configuration::getLanguages(true, false, env);
  163. equals(vec.size(), 2);
  164. equals(vec[0], "ast_DE");
  165. equals(vec[1], "en");
  166. _config->Set("APT::Acquire::Translation", "none");
  167. env[0] = "de_DE.UTF-8";
  168. vec = APT::Configuration::getLanguages(true, false, env);
  169. equals(vec.size(), 1);
  170. equals(vec[0], "en");
  171. return 0;
  172. }