getlanguages_test.cc 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. #include <apt-pkg/aptconfiguration.h>
  2. #include <apt-pkg/configuration.h>
  3. #include "assert.h"
  4. #include <string>
  5. #include <vector>
  6. #include <iostream>
  7. // simple helper to quickly output a vector of strings
  8. void dumpVector(std::vector<std::string> vec) {
  9. for (std::vector<std::string>::const_iterator v = vec.begin();
  10. v != vec.end(); v++)
  11. std::cout << *v << std::endl;
  12. }
  13. int main(int argc,char *argv[])
  14. {
  15. if (argc != 2) {
  16. std::cout << "One parameter expected - given " << argc << std::endl;
  17. return 100;
  18. }
  19. char const* env[2];
  20. env[0] = "de_DE.UTF-8";
  21. env[1] = "";
  22. std::vector<std::string> vec = APT::Configuration::getLanguages(false, false, env);
  23. equals(vec.size(), 2);
  24. equals(vec[0], "de");
  25. equals(vec[1], "en");
  26. // Special: Check if the cache is actually in use
  27. env[0] = "en_GB.UTF-8";
  28. vec = APT::Configuration::getLanguages(false, true, env);
  29. equals(vec.size(), 2);
  30. equals(vec[0], "de");
  31. equals(vec[1], "en");
  32. env[0] = "en_GB.UTF-8";
  33. vec = APT::Configuration::getLanguages(false, false, env);
  34. equals(vec.size(), 2);
  35. equals(vec[0], "en_GB");
  36. equals(vec[1], "en");
  37. // esperanto
  38. env[0] = "eo.UTF-8";
  39. vec = APT::Configuration::getLanguages(false, false, env);
  40. equals(vec.size(), 2);
  41. equals(vec[0], "eo");
  42. equals(vec[1], "en");
  43. env[0] = "tr_DE@euro";
  44. vec = APT::Configuration::getLanguages(false, false, env);
  45. equals(vec.size(), 2);
  46. equals(vec[0], "tr");
  47. equals(vec[1], "en");
  48. env[0] = "de_NO";
  49. env[1] = "se_NO:en_GB:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en";
  50. vec = APT::Configuration::getLanguages(false, false, env);
  51. equals(vec.size(), 5);
  52. equals(vec[0], "de");
  53. equals(vec[1], "en_GB");
  54. equals(vec[2], "nb");
  55. equals(vec[3], "no");
  56. equals(vec[4], "en");
  57. env[0] = "pt_PR.UTF-8";
  58. env[1] = "";
  59. vec = APT::Configuration::getLanguages(false, false, env);
  60. equals(vec.size(), 3);
  61. equals(vec[0], "pt_PR");
  62. equals(vec[1], "pt");
  63. equals(vec[2], "en");
  64. env[0] = "ast_DE.UTF-8";
  65. vec = APT::Configuration::getLanguages(false, false, env); // bogus, but syntactical correct
  66. equals(vec.size(), 2);
  67. equals(vec[0], "ast");
  68. equals(vec[1], "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", "");
  93. _config->Set("Acquire::Languages::1", "environment");
  94. _config->Set("Acquire::Languages::2", "en");
  95. env[0] = "de_DE.UTF-8";
  96. vec = APT::Configuration::getLanguages(false, false, env);
  97. equals(vec.size(), 2);
  98. equals(vec[0], "de");
  99. equals(vec[1], "en");
  100. _config->Set("Acquire::Languages::3", "de");
  101. env[0] = "de_DE.UTF-8";
  102. vec = APT::Configuration::getLanguages(false, false, env);
  103. equals(vec.size(), 2);
  104. equals(vec[0], "de");
  105. equals(vec[1], "en");
  106. _config->Set("Dir::State::lists", argv[1]);
  107. vec = APT::Configuration::getLanguages(true, false, env);
  108. equals(vec.size(), 5);
  109. equals(vec[0], "de");
  110. equals(vec[1], "en");
  111. equals(vec[2], "none");
  112. equals(vec[3], "pt");
  113. equals(vec[4], "tr");
  114. _config->Set("Dir::State::lists", "/non-existing-dir");
  115. _config->Set("Acquire::Languages::1", "none");
  116. env[0] = "de_DE.UTF-8";
  117. vec = APT::Configuration::getLanguages(false, false, env);
  118. equals(vec.size(), 0);
  119. env[0] = "de_DE.UTF-8";
  120. vec = APT::Configuration::getLanguages(true, false, env);
  121. equals(vec[0], "en");
  122. equals(vec[1], "de");
  123. _config->Set("Acquire::Languages::1", "fr");
  124. _config->Set("Acquire::Languages", "de_DE");
  125. env[0] = "de_DE.UTF-8";
  126. vec = APT::Configuration::getLanguages(false, false, env);
  127. equals(vec.size(), 1);
  128. equals(vec[0], "de_DE");
  129. _config->Set("Acquire::Languages", "none");
  130. env[0] = "de_DE.UTF-8";
  131. vec = APT::Configuration::getLanguages(true, false, env);
  132. equals(vec.size(), 0);
  133. _config->Set("Acquire::Languages", "");
  134. //FIXME: Remove support for this deprecated setting
  135. _config->Set("APT::Acquire::Translation", "ast_DE");
  136. env[0] = "de_DE.UTF-8";
  137. vec = APT::Configuration::getLanguages(true, false, env);
  138. equals(vec.size(), 2);
  139. equals(vec[0], "ast_DE");
  140. equals(vec[1], "en");
  141. _config->Set("APT::Acquire::Translation", "none");
  142. env[0] = "de_DE.UTF-8";
  143. vec = APT::Configuration::getLanguages(true, false, env);
  144. equals(vec.size(), 1);
  145. equals(vec[0], "en");
  146. return 0;
  147. }