2008-02-10 12:03:23 -05:00
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// Name: tests/xlocale/xlocale.cpp
|
|
|
|
|
// Purpose: wxXLocale & related unit test
|
|
|
|
|
// Author: Brian Vanderburg II, Vadim Zeitlin
|
|
|
|
|
// Created: 2008-01-16
|
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
|
// Copyright: (c) 2008 Brian Vanderburg II
|
|
|
|
|
// 2008 Vadim Zeitlin <vadim@wxwidgets.org>
|
|
|
|
|
// Licence: wxWindows licence
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
// headers
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
#include "testprec.h"
|
|
|
|
|
|
|
|
|
|
#ifdef __BORLANDC__
|
|
|
|
|
#pragma hdrstop
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if wxUSE_XLOCALE
|
|
|
|
|
|
|
|
|
|
#ifndef WX_PRECOMP
|
|
|
|
|
#include "wx/wx.h"
|
|
|
|
|
#endif // WX_PRECOMP
|
|
|
|
|
|
|
|
|
|
#include "wx/xlocale.h"
|
|
|
|
|
|
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
|
// test class
|
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
class XLocaleTestCase : public CppUnit::TestCase
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
XLocaleTestCase() { }
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
CPPUNIT_TEST_SUITE( XLocaleTestCase );
|
|
|
|
|
CPPUNIT_TEST( TestCtor );
|
|
|
|
|
CPPUNIT_TEST( TestCtypeFunctions );
|
|
|
|
|
CPPUNIT_TEST_SUITE_END();
|
|
|
|
|
|
|
|
|
|
void TestCtor();
|
|
|
|
|
void TestCtypeFunctions();
|
|
|
|
|
|
|
|
|
|
void TestCtypeFunctionsWith(const wxXLocale& loc);
|
|
|
|
|
|
|
|
|
|
DECLARE_NO_COPY_CLASS(XLocaleTestCase)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// register in the unnamed registry so that these tests are run by default
|
|
|
|
|
CPPUNIT_TEST_SUITE_REGISTRATION( XLocaleTestCase );
|
|
|
|
|
|
|
|
|
|
// also include in it's own registry so that these tests can be run alone
|
|
|
|
|
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XLocaleTestCase, "XLocaleTestCase" );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// test the different wxXLocale ctors
|
|
|
|
|
void XLocaleTestCase::TestCtor()
|
|
|
|
|
{
|
|
|
|
|
CPPUNIT_ASSERT( !wxXLocale().IsOk() );
|
|
|
|
|
CPPUNIT_ASSERT( wxCLocale.IsOk() );
|
|
|
|
|
CPPUNIT_ASSERT( wxXLocale("C").IsOk() );
|
|
|
|
|
#ifdef wxHAS_XLOCALE_SUPPORT
|
|
|
|
|
CPPUNIT_ASSERT( wxXLocale(wxLANGUAGE_FRENCH).IsOk() );
|
2008-02-10 12:38:37 -05:00
|
|
|
|
#ifdef __WXMSW__
|
2008-02-10 12:03:23 -05:00
|
|
|
|
CPPUNIT_ASSERT( wxXLocale("french").IsOk() );
|
2008-02-10 12:38:37 -05:00
|
|
|
|
#else
|
|
|
|
|
CPPUNIT_ASSERT( wxXLocale("fr_FR").IsOk() );
|
|
|
|
|
#endif
|
2008-02-10 12:03:23 -05:00
|
|
|
|
#endif
|
|
|
|
|
CPPUNIT_ASSERT( !wxXLocale("bloordyblop").IsOk() );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// test the ctype functions with the given locale
|
|
|
|
|
void XLocaleTestCase::TestCtypeFunctionsWith(const wxXLocale& loc)
|
|
|
|
|
{
|
|
|
|
|
// isalnum
|
|
|
|
|
CPPUNIT_ASSERT( wxIsalnum_l('0', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsalnum_l('9', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsalnum_l('A', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsalnum_l('Z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsalnum_l('a', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsalnum_l('z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsalnum_l('*', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsalnum_l('@', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsalnum_l('+', loc) );
|
|
|
|
|
|
|
|
|
|
// isalpha
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsalpha_l('0', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsalpha_l('9', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsalpha_l('A', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsalpha_l('Z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsalpha_l('a', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsalpha_l('z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsalpha_l('*', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsalpha_l('@', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsalpha_l('+', loc) );
|
|
|
|
|
|
|
|
|
|
// TODO: iscntrl
|
|
|
|
|
|
|
|
|
|
// isdigit
|
|
|
|
|
CPPUNIT_ASSERT( wxIsdigit_l('0', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsdigit_l('9', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsdigit_l('A', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsdigit_l('Z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsdigit_l('a', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsdigit_l('z', loc) );
|
|
|
|
|
|
|
|
|
|
// TODO: isgraph
|
|
|
|
|
|
|
|
|
|
// islower
|
|
|
|
|
CPPUNIT_ASSERT( !wxIslower_l('A', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIslower_l('Z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIslower_l('a', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIslower_l('z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIslower_l('0', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIslower_l('9', loc) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: isprint
|
|
|
|
|
// TODO: ispunct
|
|
|
|
|
|
|
|
|
|
// isspace
|
|
|
|
|
CPPUNIT_ASSERT( wxIsspace_l(' ', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsspace_l('\t', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsspace_l('\r', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsspace_l('\n', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsspace_l('0', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsspace_l('a', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsspace_l('A', loc) );
|
|
|
|
|
|
|
|
|
|
// isupper
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsupper_l('0', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsupper_l('9', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsupper_l('A', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsupper_l('Z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsupper_l('a', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsupper_l('z', loc) );
|
|
|
|
|
|
|
|
|
|
// isxdigit
|
|
|
|
|
CPPUNIT_ASSERT( wxIsxdigit_l('0', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsxdigit_l('9', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsxdigit_l('A', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsxdigit_l('F', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsxdigit_l('Z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsxdigit_l('a', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsxdigit_l('f', loc) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIsxdigit_l('z', loc) );
|
|
|
|
|
|
|
|
|
|
// tolower
|
2008-02-10 12:18:04 -05:00
|
|
|
|
CPPUNIT_ASSERT_EQUAL( 'a', (char)wxTolower_l('A', loc) );
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL( 'a', (char)wxTolower_l('a', loc) );
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL( 'z', (char)wxTolower_l('Z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL( 'z', (char)wxTolower_l('z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL( '0', (char)wxTolower_l('0', loc) );
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL( '9', (char)wxTolower_l('9', loc) );
|
2008-02-10 12:03:23 -05:00
|
|
|
|
|
|
|
|
|
// toupper
|
2008-02-10 12:18:04 -05:00
|
|
|
|
CPPUNIT_ASSERT_EQUAL( 'A', (char)wxToupper_l('A', loc) );
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL( 'A', (char)wxToupper_l('a', loc) );
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL( 'Z', (char)wxToupper_l('Z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL( 'Z', (char)wxToupper_l('z', loc) );
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL( '0', (char)wxToupper_l('0', loc) );
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL( '9', (char)wxToupper_l('9', loc) );
|
2008-02-10 12:03:23 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void XLocaleTestCase::TestCtypeFunctions()
|
|
|
|
|
{
|
|
|
|
|
TestCtypeFunctionsWith(wxCLocale);
|
|
|
|
|
|
|
|
|
|
#ifdef wxHAS_XLOCALE_SUPPORT
|
2008-02-10 12:38:37 -05:00
|
|
|
|
wxXLocale locFR(wxLANGUAGE_FRENCH);
|
|
|
|
|
CPPUNIT_ASSERT( locFR.IsOk() ); // doesn't make sense to continue otherwise
|
|
|
|
|
|
2008-02-10 12:03:23 -05:00
|
|
|
|
TestCtypeFunctionsWith(locFR);
|
|
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT( wxIsalpha_l('<EFBFBD>', locFR) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIslower_l('<EFBFBD>', locFR) );
|
|
|
|
|
CPPUNIT_ASSERT( !wxIslower_l('<EFBFBD>', locFR) );
|
|
|
|
|
CPPUNIT_ASSERT( wxIsupper_l('<EFBFBD>', locFR) );
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif // wxUSE_XLOCALE
|