mirror of
https://github.com/kiwix/libkiwix.git
synced 2025-06-26 10:11:30 +00:00
Properly implemented parseUserLanguagePreferences()
This commit is contained in:
committed by
Matthieu Gautier
parent
634f3fcf14
commit
28e9fb48b6
@ -20,6 +20,7 @@
|
||||
#include "gtest/gtest.h"
|
||||
#include "../src/tools/otherTools.h"
|
||||
#include "zim/suggestion_iterator.h"
|
||||
#include "../src/server/i18n.h"
|
||||
|
||||
#include <regex>
|
||||
|
||||
@ -172,3 +173,63 @@ R"EXPECTEDJSON([
|
||||
)EXPECTEDJSON"
|
||||
);
|
||||
}
|
||||
|
||||
std::string toString(const kiwix::LangPreference& x)
|
||||
{
|
||||
std::ostringstream oss;
|
||||
oss << "{" << x.lang << ", " << x.preference << "}";
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
std::string toString(const kiwix::UserLangPreferences& prefs) {
|
||||
std::ostringstream oss;
|
||||
for ( const auto& x : prefs )
|
||||
oss << toString(x);
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
TEST(I18n, parseUserLanguagePreferences)
|
||||
{
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("")),
|
||||
""
|
||||
);
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("*")),
|
||||
"{*, 1}"
|
||||
);
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("fr")),
|
||||
"{fr, 1}"
|
||||
);
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("fr-CH")),
|
||||
"{fr-CH, 1}"
|
||||
);
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("fr, en-US")),
|
||||
"{fr, 1}{en-US, 1}"
|
||||
);
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("ru;q=0.5")),
|
||||
"{ru, 0.5}"
|
||||
);
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("fr-CH,ru;q=0.5")),
|
||||
"{fr-CH, 1}{ru, 0.5}"
|
||||
);
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("ru;q=0.5, *;q=0.1")),
|
||||
"{ru, 0.5}{*, 0.1}"
|
||||
);
|
||||
|
||||
// rejected input
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("ru;")),
|
||||
""
|
||||
);
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("ru;q")),
|
||||
""
|
||||
);
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("ru;q=")),
|
||||
""
|
||||
);
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("ru;0.8")),
|
||||
""
|
||||
);
|
||||
|
||||
EXPECT_EQ(toString(kiwix::parseUserLanguagePreferences("fr,ru;0.8,en;q=0.5")),
|
||||
"{fr, 1}{en, 0.5}"
|
||||
);
|
||||
}
|
||||
|
@ -1113,8 +1113,8 @@ TEST_F(ServerTest, UserLanguageControl)
|
||||
/*url*/ "/ROOT/content/zimfile/invalid-article",
|
||||
/*Accept-Language:*/ "test;q=0.9, en;q=0.2",
|
||||
/*Request Cookie:*/ NO_COOKIE,
|
||||
/*Response Set-Cookie:*/ "userlang=en",
|
||||
/* expected <h1> */ "Not Found"
|
||||
/*Response Set-Cookie:*/ "userlang=test",
|
||||
/* expected <h1> */ "[I18N TESTING] Content not found, but at least the server is alive"
|
||||
},
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user