summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/locale/test/test_config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/locale/test/test_config.cpp')
-rw-r--r--src/boost/libs/locale/test/test_config.cpp133
1 files changed, 133 insertions, 0 deletions
diff --git a/src/boost/libs/locale/test/test_config.cpp b/src/boost/libs/locale/test/test_config.cpp
new file mode 100644
index 000000000..2205a8659
--- /dev/null
+++ b/src/boost/libs/locale/test/test_config.cpp
@@ -0,0 +1,133 @@
+//
+// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <iostream>
+#include <iomanip>
+#include <stdlib.h>
+#include <locale.h>
+#include <locale>
+#include <time.h>
+#include <stdexcept>
+
+#include <boost/locale.hpp>
+#ifdef BOOST_LOCALE_WITH_ICU
+#include <unicode/uversion.h>
+#endif
+
+#include "test_locale_tools.hpp"
+
+
+char const *env(char const *s)
+{
+ char const *r=getenv(s);
+ if(r)
+ return r;
+ return "";
+}
+
+void check_locale(char const **names)
+{
+ std::cout << " " << std::setw(32) << "locale" << std::setw(4) << "C" << std::setw(4) << "C++" << std::endl;
+ while(*names) {
+ char const *name = *names;
+ std::cout << " " << std::setw(32) << name << std::setw(4);
+ if(setlocale(LC_ALL,name)!=0)
+ std::cout << "Yes";
+ else
+ std::cout << "No";
+ std::cout << std::setw(4);
+ try {
+ std::locale l(name);
+ std::cout << "Yes";
+ }
+ catch(std::exception const &) {
+ std::cout << "No";
+ }
+ std::cout << std::endl;
+ names++;
+ }
+}
+
+int main()
+{
+ std::cout << "- Backends: ";
+ #ifdef BOOST_LOCALE_WITH_ICU
+ std::cout << "icu:" << U_ICU_VERSION << " ";
+ #endif
+ #ifndef BOOST_LOCALE_NO_STD_BACKEND
+ std::cout << "std ";
+ #endif
+ #ifndef BOOST_LOCALE_NO_POSIX_BACKEND
+ std::cout << "posix ";
+ #endif
+ #ifndef BOOST_LOCALE_NO_WINAPI_BACKEND
+ std::cout << "winapi";
+ #endif
+ std::cout << std::endl;
+ #ifdef BOOST_LOCALE_WITH_ICONV
+ std::cout << "- With iconv" << std::endl;
+ #else
+ std::cout << "- Without iconv" << std::endl;
+ #endif
+ std::cout << "- Environment " << std::endl;
+ std::cout << " LANG="<< env("LANG") << std::endl;
+ std::cout << " LC_ALL="<< env("LC_ALL") << std::endl;
+ std::cout << " LC_CTYPE="<< env("LC_CTYPE") << std::endl;
+ std::cout << " TZ="<< env("TZ") << std::endl;
+
+ char const *clocale=setlocale(LC_ALL,"");
+ if(!clocale)
+ clocale= "undetected";
+ std::cout <<"- C locale: " << clocale << std::endl;
+
+ try {
+ std::locale loc("");
+ std::cout << "- C++ locale: " << loc.name() << std::endl;
+ }
+ catch(std::exception const &) {
+ std::cout << "- C++ locale: is not supported" << std::endl;
+ }
+
+ char const *locales_to_check[] = {
+ "en_US.UTF-8", "en_US.ISO8859-1", "English_United States.1252",
+ "he_IL.UTF-8", "he_IL.ISO8859-8", "Hebrew_Israel.1255",
+ "ru_RU.UTF-8", "Russian_Russia.1251",
+ "tr_TR.UTF-8", "Turkish_Turkey.1254",
+ "ja_JP.UTF-8", "ja_JP.SJIS", "Japanese_Japan.932",
+ 0
+ };
+ std::cout << "- Testing locales availability on the operation system:" << std::endl;
+ check_locale(locales_to_check);
+ std::cout << "--- Testing Japanese_Japan.932 is working: " << test_std_supports_SJIS_codecvt("Japanese_Japan.932") << std::endl;
+
+ std::cout << "- Testing timezone and time " << std::endl;
+ {
+ setlocale(LC_ALL,"C");
+ time_t now = time(0);
+ char buf[1024];
+ strftime(buf,sizeof(buf),"%%c=%c; %%Z=%Z; %%z=%z",localtime(&now));
+ std::cout << " Local Time :" << buf << std::endl;
+ strftime(buf,sizeof(buf),"%%c=%c; %%Z=%Z; %%z=%z",gmtime(&now));
+ std::cout << " Universal Time:" << buf << std::endl;
+ }
+ std::cout << "- Boost.Locale's locale: ";
+ try {
+ boost::locale::generator gen;
+ std::locale l = gen("");
+ std::cout << std::use_facet<boost::locale::info>(l).name() << std::endl;
+ }
+ catch(std::exception const &) {
+ std::cout << " undetected" << std::endl;
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+
+}
+
+// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
+// boostinspect:noascii