#include <cwchar> // for mbstate_t
#include <locale>
#include <testsuite_hooks.h>
static std::size_t counter;
class surf : public std::locale::facet
{
public:
static std::locale::id id;
surf(size_t refs = 0): std::locale::facet(refs) { ++counter; }
~surf() { --counter; }
};
std::locale::id surf::id;
typedef surf facet_type;
void test03()
{
using namespace std;
bool test __attribute__((unused)) = true;
string name;
locale global_orig;
{
{
{
VERIFY( counter == 0 );
{
locale loc01(locale::classic(), new facet_type);
VERIFY( counter == 1 );
global_orig = locale::global(loc01);
name = loc01.name();
}
VERIFY( counter == 1 );
locale loc02 = locale();
VERIFY( loc02.name() == name );
}
VERIFY( counter == 1 );
locale loc03 = locale::global(global_orig);
VERIFY( counter == 1 );
VERIFY( loc03.name() == name );
}
VERIFY( counter == 0 );
locale loc04 = locale();
VERIFY( loc04 == global_orig );
}
{
{
{
VERIFY( counter == 0 );
{
locale loc01(locale::classic(), new facet_type(1));
VERIFY( counter == 1 );
global_orig = locale::global(loc01);
name = loc01.name();
}
VERIFY( counter == 1 );
locale loc02 = locale();
VERIFY( loc02.name() == name );
}
VERIFY( counter == 1 );
locale loc03 = locale::global(global_orig);
VERIFY( counter == 1 );
VERIFY( loc03.name() == name );
}
VERIFY( counter == 1 );
locale loc04 = locale();
VERIFY( loc04 == global_orig );
}
VERIFY( counter == 1 );
locale::global(global_orig);
}
int main ()
{
test03();
return 0;
}