diff options
| author | Martin Reddy <lynx@lindenlab.com> | 2009-09-09 23:58:26 +0000 | 
|---|---|---|
| committer | Martin Reddy <lynx@lindenlab.com> | 2009-09-09 23:58:26 +0000 | 
| commit | bbf497469c4d71d5308421f1ef06d0a2098772c8 (patch) | |
| tree | a372212d56b6a6a95a76fc6ce6d188996b79b4e7 /indra/test | |
| parent | 7e43203558ef85c62f73008d20b408e0ca906904 (diff) | |
DEV-39537: Moved the toHTTPDateString tests into llhttpdate_tut.cpp,
as a more appropriate home. Also made use of the skip() method rather
than use printf() - thanks to tofu for the suggestion.
Diffstat (limited to 'indra/test')
| -rw-r--r-- | indra/test/llhttpdate_tut.cpp | 69 | 
1 files changed, 69 insertions, 0 deletions
| diff --git a/indra/test/llhttpdate_tut.cpp b/indra/test/llhttpdate_tut.cpp index b9733dc030..8762938186 100644 --- a/indra/test/llhttpdate_tut.cpp +++ b/indra/test/llhttpdate_tut.cpp @@ -37,6 +37,9 @@  #include "lldate.h"  #include "llframetimer.h" +#include <time.h> +#include <locale.h> +  namespace tut  {      struct httpdate_data @@ -94,4 +97,70 @@ namespace tut          // probably not a good idea to use strcmp but this is just a unit test          ensure("Current time in RFC 1123", (strcmp(expected, actual.c_str()) == 0));      } + +	void test_date_string(const std::string &locale, struct tm *t, +						  const std::string &fmt, const std::string &expected) +	{ +		std::string result = LLDate::toHTTPDateString(t, fmt); +		LLStringUtil::toLower(result); +		std::string label = std::string("toHTTPDateString - ") + locale; +		ensure_equals(label.c_str(), result, expected); +	} + +	template<> template<> +	void httpdate_object::test<4>() +	{ +		// test localization of http dates +#if LL_WINDOWS +		const char *en_locale = "english"; +		const char *fr_locale = "french"; +#else +		const char *en_locale = "en_GB.UTF-8"; +		const char *fr_locale = "fr_FR.UTF-8"; +#endif + +		std::string prev_locale = LLStringUtil::getLocale(); +		std::string prev_clocale = std::string(setlocale(LC_TIME, NULL)); +		time_t test_time = 1252374030;  // 8 Sep 2009 01:40:01 +		struct tm *t = gmtime(&test_time); + +		setlocale(LC_TIME, en_locale); +		if (strcmp(setlocale(LC_TIME, NULL), en_locale) != 0) +		{ +			setlocale(LC_TIME, prev_clocale.c_str()); +			skip("Cannot set English locale"); +		} + +		LLStringUtil::setLocale(en_locale); +		test_date_string(en_locale, t, "%d %B %Y - %H:%M", "08 september 2009 - 01:40"); +		test_date_string(en_locale, t, "%H", "01"); +		test_date_string(en_locale, t, "%M", "40"); +		test_date_string(en_locale, t, "%I", "01"); +		test_date_string(en_locale, t, "%d", "08"); +		test_date_string(en_locale, t, "%Y", "2009"); +		test_date_string(en_locale, t, "%p", "am"); +		test_date_string(en_locale, t, "%A", "tuesday"); +		test_date_string(en_locale, t, "%B", "september"); + +		setlocale(LC_TIME, fr_locale); +		if (strcmp(setlocale(LC_TIME, NULL), fr_locale) != 0) +		{ +			LLStringUtil::setLocale(prev_locale); +			setlocale(LC_TIME, prev_clocale.c_str()); +			skip("Cannot set French locale"); +		} + +		LLStringUtil::setLocale(fr_locale); +		test_date_string(fr_locale, t, "%d %B %Y - %H:%M", "08 septembre 2009 - 01:40"); +		test_date_string(fr_locale, t, "%H", "01"); +		test_date_string(fr_locale, t, "%M", "40"); +		test_date_string(fr_locale, t, "%I", "01"); +		test_date_string(fr_locale, t, "%d", "08"); +		test_date_string(fr_locale, t, "%Y", "2009"); +		test_date_string(fr_locale, t, "%A", "mardi"); +		test_date_string(fr_locale, t, "%B", "septembre"); + +		LLStringUtil::setLocale(prev_locale); +		setlocale(LC_TIME, prev_clocale.c_str()); +	}  } | 
