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: convautotest.cpp 38571 2006-04-05 14:38:42Z VZ $ 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 123