]> git.saurik.com Git - wxWidgets.git/blame - tests/mbconv/convautotest.cpp
Register the test under the name displayed by "./test -l"
[wxWidgets.git] / tests / mbconv / convautotest.cpp
CommitLineData
a29cce78
VZ
1///////////////////////////////////////////////////////////////////////////////
2// Name: tests/mbconv/convauto.cpp
3// Purpose: wxConvAuto unit test
4// Author: Vadim Zeitlin
5// Created: 2006-04-04
6// RCS-ID: $Id$
7// Copyright: (c) 2006 Vadim Zeitlin
8///////////////////////////////////////////////////////////////////////////////
9
10// ----------------------------------------------------------------------------
11// headers
12// ----------------------------------------------------------------------------
13
14#include "testprec.h"
15
16#ifdef __BORLANDC__
17 #pragma hdrstop
18#endif
19
20#if wxUSE_WCHAR_T
21
22#ifndef WX_PRECOMP
23#endif // WX_PRECOMP
24
25#include "wx/convauto.h"
26
27// ----------------------------------------------------------------------------
28// test class
29// ----------------------------------------------------------------------------
30
31class ConvAutoTestCase : public CppUnit::TestCase
32{
33public:
34 ConvAutoTestCase() { }
35
36private:
37 CPPUNIT_TEST_SUITE( ConvAutoTestCase );
38 CPPUNIT_TEST( Empty );
39 CPPUNIT_TEST( Short );
40 CPPUNIT_TEST( None );
41 CPPUNIT_TEST( UTF32LE );
42 CPPUNIT_TEST( UTF32BE );
43 CPPUNIT_TEST( UTF16LE );
44 CPPUNIT_TEST( UTF16BE );
45 CPPUNIT_TEST( UTF8 );
46 CPPUNIT_TEST_SUITE_END();
47
48 // real test function: check that converting the src multibyte string to
49 // wide char using wxConvAuto yields wch as the first result
50 void TestFirstChar(const char *src, wchar_t wch);
51
52 void Empty();
53 void Short();
54 void None();
55 void UTF32LE();
56 void UTF32BE();
57 void UTF16LE();
58 void UTF16BE();
59 void UTF8();
60};
61
62// register in the unnamed registry so that these tests are run by default
63CPPUNIT_TEST_SUITE_REGISTRATION(ConvAutoTestCase);
64
65// also include in it's own registry so that these tests can be run alone
66CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(ConvAutoTestCase, "ConvAuto");
67
68// ----------------------------------------------------------------------------
69// tests
70// ----------------------------------------------------------------------------
71
72void ConvAutoTestCase::TestFirstChar(const char *src, wchar_t wch)
73{
74 wxWCharBuffer wbuf = wxConvAuto().cMB2WC(src);
75 CPPUNIT_ASSERT( wbuf );
76 CPPUNIT_ASSERT_EQUAL( wch, *wbuf );
77}
78
79void ConvAutoTestCase::Empty()
80{
81 TestFirstChar("", _T('\0'));
82}
83
84void ConvAutoTestCase::Short()
85{
86 TestFirstChar("1", _T('1'));
87}
88
89void ConvAutoTestCase::None()
90{
91 TestFirstChar("Hello world", _T('H'));
92}
93
94void ConvAutoTestCase::UTF32LE()
95{
96 TestFirstChar("\xff\xfe\0\0A\0\0\0", _T('A'));
97}
98
99void ConvAutoTestCase::UTF32BE()
100{
101 TestFirstChar("\0\0\xfe\xff\0\0\0B", _T('B'));
102}
103
104void ConvAutoTestCase::UTF16LE()
105{
106 TestFirstChar("\xff\xfeZ\0", _T('Z'));
107}
108
109void ConvAutoTestCase::UTF16BE()
110{
111 TestFirstChar("\xfe\xff\0Y", _T('Y'));
112}
113
114void ConvAutoTestCase::UTF8()
115{
116#ifdef wxHAVE_U_ESCAPE
117 TestFirstChar("\xef\xbb\xbf\xd0\x9f", L'\u041f');
118#endif
119}
120
121#endif // wxUSE_WCHAR_T
122