messages_members_char.cc [plain text]
#include <locale>
#include <testsuite_hooks.h>
void test01()
{
using namespace std;
typedef std::messages<char>::catalog catalog;
typedef std::messages<char>::string_type string_type;
bool test = true;
const char* dir = LOCALEDIR;
locale loc_c = locale::classic();
locale loc_us("en_US");
locale loc_fr("fr_FR");
locale loc_de("de_DE");
VERIFY( loc_c != loc_de );
VERIFY( loc_us != loc_fr );
VERIFY( loc_us != loc_de );
VERIFY( loc_de != loc_fr );
const messages<char>& mssg_c = use_facet<messages<char> >(loc_c);
const messages<char>& mssg_us = use_facet<messages<char> >(loc_us);
const messages<char>& mssg_fr = use_facet<messages<char> >(loc_fr);
const messages<char>& mssg_de = use_facet<messages<char> >(loc_de);
catalog cat_de = mssg_de.open("libstdc++", loc_c, dir);
string s01 = mssg_de.get(cat_de, 0, 0, "please");
string s02 = mssg_de.get(cat_de, 0, 0, "thank you");
VERIFY ( s01 == "bitte" );
VERIFY ( s02 == "danke" );
mssg_de.close(cat_de);
catalog cat_fr = mssg_fr.open("libstdc++", loc_c, dir);
s01 = mssg_fr.get(cat_fr, 0, 0, "please");
s02 = mssg_fr.get(cat_fr, 0, 0, "thank you");
VERIFY ( s01 == "s'il vous plaît" );
VERIFY ( s02 == "merci" );
mssg_fr.close(cat_fr);
catalog cat_us = mssg_fr.open("libstdc++", loc_c, dir);
s01 = mssg_us.get(cat_us, 0, 0, "please");
s02 = mssg_us.get(cat_us, 0, 0, "thank you");
VERIFY ( s01 == "please" );
VERIFY ( s02 == "thank you" );
mssg_us.close(cat_us);
}
void test02()
{
#ifdef _GLIBCPP_HAVE_SETENV
std::locale loc_de("de_DE");
std::locale::global(loc_de);
const char* oldLANG = getenv("LANG");
if (!setenv("LANG", "de_DE", 1))
{
test01();
setenv("LANG", oldLANG ? oldLANG : "", 1);
}
#endif
}
int main()
{
test01();
test02();
return 0;
}