X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/549edd163e34a50091623b47881f2eefbdc53aca..2a49601f69e08f06fb2727d869d420daacdd09d5:/test/libapt/getlanguages_test.cc

diff --git a/test/libapt/getlanguages_test.cc b/test/libapt/getlanguages_test.cc
index 9a8910b58..cef89bde6 100644
--- a/test/libapt/getlanguages_test.cc
+++ b/test/libapt/getlanguages_test.cc
@@ -7,13 +7,6 @@
 
 #include <iostream>
 
-// simple helper to quickly output a vector of strings
-void dumpVector(std::vector<std::string> vec) {
-	for (std::vector<std::string>::const_iterator v = vec.begin();
-	     v != vec.end(); v++)
-		std::cout << *v << std::endl;
-}
-
 int main(int argc,char *argv[])
 {
 	if (argc != 2) {
@@ -26,16 +19,18 @@ int main(int argc,char *argv[])
 	env[1] = "";
 
 	std::vector<std::string> vec = APT::Configuration::getLanguages(false, false, env);
-	equals(vec.size(), 2);
-	equals(vec[0], "de");
-	equals(vec[1], "en");
+	equals(vec.size(), 3);
+	equals(vec[0], "de_DE");
+	equals(vec[1], "de");
+	equals(vec[2], "en");
 
 	// Special: Check if the cache is actually in use
 		env[0] = "en_GB.UTF-8";
 		vec = APT::Configuration::getLanguages(false, true, env);
-		equals(vec.size(), 2);
-		equals(vec[0], "de");
-		equals(vec[1], "en");
+		equals(vec.size(), 3);
+		equals(vec[0], "de_DE");
+		equals(vec[1], "de");
+		equals(vec[2], "en");
 
 	env[0] = "en_GB.UTF-8";
 	vec = APT::Configuration::getLanguages(false, false, env);
@@ -52,19 +47,21 @@ int main(int argc,char *argv[])
 
 	env[0] = "tr_DE@euro";
 	vec = APT::Configuration::getLanguages(false, false, env);
-	equals(vec.size(), 2);
-	equals(vec[0], "tr");
-	equals(vec[1], "en");
+	equals(vec.size(), 3);
+	equals(vec[0], "tr_DE");
+	equals(vec[1], "tr");
+	equals(vec[2], "en");
 
 	env[0] = "de_NO";
-	env[1] = "se_NO:en_GB:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en";
+	env[1] = "de_NO:en_GB:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en";
 	vec = APT::Configuration::getLanguages(false, false, env);
-	equals(vec.size(), 5);
-	equals(vec[0], "de");
-	equals(vec[1], "en_GB");
-	equals(vec[2], "nb");
-	equals(vec[3], "no");
-	equals(vec[4], "en");
+	equals(vec.size(), 6);
+	equals(vec[0], "de_NO");
+	equals(vec[1], "de");
+	equals(vec[2], "en_GB");
+	equals(vec[3], "nb_NO");
+	equals(vec[4], "nb");
+	equals(vec[5], "en");
 
 	env[0] = "pt_PR.UTF-8";
 	env[1] = "";
@@ -76,38 +73,80 @@ int main(int argc,char *argv[])
 
 	env[0] = "ast_DE.UTF-8";
 	vec = APT::Configuration::getLanguages(false, false, env); // bogus, but syntactical correct
-	equals(vec.size(), 2);
-	equals(vec[0], "ast");
-	equals(vec[1], "en");
+	equals(vec.size(), 3);
+	equals(vec[0], "ast_DE");
+	equals(vec[1], "ast");
+	equals(vec[2], "en");
 
 	env[0] = "C";
 	vec = APT::Configuration::getLanguages(false, false, env);
 	equals(vec.size(), 1);
 	equals(vec[0], "en");
 
+	_config->Set("Acquire::Languages", "none");
+	env[0] = "C";
+	vec = APT::Configuration::getLanguages(false, false, env);
+	equals(vec.size(), 0);
+
+	_config->Set("Acquire::Languages", "environment");
+	env[0] = "C";
+	vec = APT::Configuration::getLanguages(false, false, env);
+	equals(vec.size(), 1);
+	equals(vec[0], "en");
+
+	_config->Set("Acquire::Languages", "de");
+	env[0] = "C";
+	vec = APT::Configuration::getLanguages(false, false, env);
+	equals(vec.size(), 1);
+	equals(vec[0], "de");
+
+	_config->Set("Acquire::Languages", "fr");
+	env[0] = "ast_DE.UTF-8";
+	vec = APT::Configuration::getLanguages(false, false, env);
+	equals(vec.size(), 1);
+	equals(vec[0], "fr");
+	_config->Set("Acquire::Languages", "");
+
 	_config->Set("Acquire::Languages::1", "environment");
 	_config->Set("Acquire::Languages::2", "en");
 	env[0] = "de_DE.UTF-8";
 	vec = APT::Configuration::getLanguages(false, false, env);
-	equals(vec.size(), 2);
-	equals(vec[0], "de");
-	equals(vec[1], "en");
+	equals(vec.size(), 3);
+	equals(vec[0], "de_DE");
+	equals(vec[1], "de");
+	equals(vec[2], "en");
 
 	_config->Set("Acquire::Languages::3", "de");
 	env[0] = "de_DE.UTF-8";
 	vec = APT::Configuration::getLanguages(false, false, env);
-	equals(vec.size(), 2);
-	equals(vec[0], "de");
-	equals(vec[1], "en");
+	equals(vec.size(), 3);
+	equals(vec[0], "de_DE");
+	equals(vec[1], "de");
+	equals(vec[2], "en");
 
 	_config->Set("Dir::State::lists", argv[1]);
 	vec = APT::Configuration::getLanguages(true, false, env);
-	equals(vec.size(), 5);
-	equals(vec[0], "de");
-	equals(vec[1], "en");
-	equals(vec[2], "none");
-	equals(vec[3], "pt");
-	equals(vec[4], "tr");
+	equals(vec.size(), 8);
+	equals(vec[0], "de_DE");
+	equals(vec[1], "de");
+	equals(vec[2], "en");
+	equals(vec[3], "none");
+	equalsOr4(vec[4], "pt", "tr", "ast_DE", "tlh_DE");
+	equalsOr4(vec[5], "tr", "pt", "ast_DE", "tlh_DE");
+	equalsOr4(vec[6], "tr", "pt", "ast_DE", "tlh_DE");
+	equalsOr4(vec[7], "tr", "pt", "ast_DE", "tlh_DE");
+	equalsNot(vec[4], vec[5]);
+	equalsNot(vec[4], vec[6]);
+	equalsNot(vec[4], vec[7]);
+	equalsNot(vec[5], vec[6]);
+	equalsNot(vec[5], vec[7]);
+	equalsNot(vec[6], vec[7]);
+
+	_config->Set("Acquire::Languages", "none");
+	vec = APT::Configuration::getLanguages(true, false, env);
+	equals(vec.size(), 1);
+	equals(vec[0], "none");
+	_config->Set("Acquire::Languages", "");
 
 	_config->Set("Dir::State::lists", "/non-existing-dir");
 	_config->Set("Acquire::Languages::1", "none");
@@ -116,6 +155,7 @@ int main(int argc,char *argv[])
 	equals(vec.size(), 0);
 	env[0] = "de_DE.UTF-8";
 	vec = APT::Configuration::getLanguages(true, false, env);
+	equals(vec.size(), 2);
 	equals(vec[0], "en");
 	equals(vec[1], "de");
 
@@ -129,7 +169,8 @@ int main(int argc,char *argv[])
 	_config->Set("Acquire::Languages", "none");
 	env[0] = "de_DE.UTF-8";
 	vec = APT::Configuration::getLanguages(true, false, env);
-	equals(vec.size(), 0);
+	equals(vec.size(), 1);
+	equals(vec[0], "none");
 
 	_config->Set("Acquire::Languages", "");
 	//FIXME: Remove support for this deprecated setting