getlanguages_test.cc 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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. char const* env[2];
  16. env[0] = "de_DE.UTF-8";
  17. env[1] = "";
  18. std::vector<std::string> vec = APT::Configuration::getLanguages(false, false, env);
  19. equals(vec.size(), 2);
  20. equals(vec[0], "de");
  21. equals(vec[1], "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(), 2);
  26. equals(vec[0], "de");
  27. equals(vec[1], "en");
  28. env[0] = "en_GB.UTF-8";
  29. vec = APT::Configuration::getLanguages(false, false, env);
  30. equals(vec.size(), 2);
  31. equals(vec[0], "en_GB");
  32. equals(vec[1], "en");
  33. env[0] = "tr_DE@euro";
  34. vec = APT::Configuration::getLanguages(false, false, env);
  35. equals(vec.size(), 2);
  36. equals(vec[0], "tr");
  37. equals(vec[1], "en");
  38. env[0] = "de_NO";
  39. env[1] = "se_NO:en_GB:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en";
  40. vec = APT::Configuration::getLanguages(false, false, env);
  41. equals(vec.size(), 5);
  42. equals(vec[0], "de");
  43. equals(vec[1], "en_GB");
  44. equals(vec[2], "nb");
  45. equals(vec[3], "no");
  46. equals(vec[4], "en");
  47. env[0] = "pt_PR.UTF-8";
  48. env[1] = "";
  49. vec = APT::Configuration::getLanguages(false, false, env);
  50. equals(vec.size(), 3);
  51. equals(vec[0], "pt_PR");
  52. equals(vec[1], "pt");
  53. equals(vec[2], "en");
  54. env[0] = "ast_DE.UTF-8";
  55. vec = APT::Configuration::getLanguages(false, false, env); // bogus, but syntactical correct
  56. equals(vec.size(), 2);
  57. equals(vec[0], "ast");
  58. equals(vec[1], "en");
  59. env[0] = "C";
  60. vec = APT::Configuration::getLanguages(false, false, env);
  61. equals(vec.size(), 1);
  62. equals(vec[0], "en");
  63. _config->Set("Acquire::Languages::1", "environment");
  64. _config->Set("Acquire::Languages::2", "en");
  65. env[0] = "de_DE.UTF-8";
  66. vec = APT::Configuration::getLanguages(false, false, env);
  67. equals(vec.size(), 2);
  68. equals(vec[0], "de");
  69. equals(vec[1], "en");
  70. _config->Set("Acquire::Languages::3", "de");
  71. env[0] = "de_DE.UTF-8";
  72. vec = APT::Configuration::getLanguages(false, false, env);
  73. equals(vec.size(), 2);
  74. equals(vec[0], "de");
  75. equals(vec[1], "en");
  76. _config->Set("Acquire::Languages::1", "none");
  77. env[0] = "de_DE.UTF-8";
  78. vec = APT::Configuration::getLanguages(false, false, env);
  79. equals(vec.size(), 0);
  80. env[0] = "de_DE.UTF-8";
  81. vec = APT::Configuration::getLanguages(true, false, env);
  82. equals(vec[0], "en");
  83. equals(vec[1], "de");
  84. _config->Set("Acquire::Languages::1", "fr");
  85. _config->Set("Acquire::Languages", "de_DE");
  86. env[0] = "de_DE.UTF-8";
  87. vec = APT::Configuration::getLanguages(false, false, env);
  88. equals(vec.size(), 1);
  89. equals(vec[0], "de_DE");
  90. _config->Set("Acquire::Languages", "none");
  91. env[0] = "de_DE.UTF-8";
  92. vec = APT::Configuration::getLanguages(true, false, env);
  93. equals(vec.size(), 0);
  94. _config->Set("Acquire::Languages", "");
  95. //FIXME: Remove support for this deprecated setting
  96. _config->Set("APT::Acquire::Translation", "ast_DE");
  97. env[0] = "de_DE.UTF-8";
  98. vec = APT::Configuration::getLanguages(true, false, env);
  99. equals(vec.size(), 1);
  100. equals(vec[0], "ast_DE");
  101. _config->Set("APT::Acquire::Translation", "none");
  102. env[0] = "de_DE.UTF-8";
  103. vec = APT::Configuration::getLanguages(true, false, env);
  104. equals(vec.size(), 0);
  105. return 0;
  106. }