--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name: tests/mbconv/convauto.cpp
+// Purpose: wxConvAuto unit test
+// Author: Vadim Zeitlin
+// Created: 2006-04-04
+// RCS-ID: $Id$
+// Copyright: (c) 2006 Vadim Zeitlin
+///////////////////////////////////////////////////////////////////////////////
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#include "testprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_WCHAR_T
+
+#ifndef WX_PRECOMP
+#endif // WX_PRECOMP
+
+#include "wx/convauto.h"
+
+// ----------------------------------------------------------------------------
+// test class
+// ----------------------------------------------------------------------------
+
+class ConvAutoTestCase : public CppUnit::TestCase
+{
+public:
+ ConvAutoTestCase() { }
+
+private:
+ CPPUNIT_TEST_SUITE( ConvAutoTestCase );
+ CPPUNIT_TEST( Empty );
+ CPPUNIT_TEST( Short );
+ CPPUNIT_TEST( None );
+ CPPUNIT_TEST( UTF32LE );
+ CPPUNIT_TEST( UTF32BE );
+ CPPUNIT_TEST( UTF16LE );
+ CPPUNIT_TEST( UTF16BE );
+ CPPUNIT_TEST( UTF8 );
+ CPPUNIT_TEST_SUITE_END();
+
+ // real test function: check that converting the src multibyte string to
+ // wide char using wxConvAuto yields wch as the first result
+ void TestFirstChar(const char *src, wchar_t wch);
+
+ void Empty();
+ void Short();
+ void None();
+ void UTF32LE();
+ void UTF32BE();
+ void UTF16LE();
+ void UTF16BE();
+ void UTF8();
+};
+
+// register in the unnamed registry so that these tests are run by default
+CPPUNIT_TEST_SUITE_REGISTRATION(ConvAutoTestCase);
+
+// also include in it's own registry so that these tests can be run alone
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(ConvAutoTestCase, "ConvAuto");
+
+// ----------------------------------------------------------------------------
+// tests
+// ----------------------------------------------------------------------------
+
+void ConvAutoTestCase::TestFirstChar(const char *src, wchar_t wch)
+{
+ wxWCharBuffer wbuf = wxConvAuto().cMB2WC(src);
+ CPPUNIT_ASSERT( wbuf );
+ CPPUNIT_ASSERT_EQUAL( wch, *wbuf );
+}
+
+void ConvAutoTestCase::Empty()
+{
+ TestFirstChar("", _T('\0'));
+}
+
+void ConvAutoTestCase::Short()
+{
+ TestFirstChar("1", _T('1'));
+}
+
+void ConvAutoTestCase::None()
+{
+ TestFirstChar("Hello world", _T('H'));
+}
+
+void ConvAutoTestCase::UTF32LE()
+{
+ TestFirstChar("\xff\xfe\0\0A\0\0\0", _T('A'));
+}
+
+void ConvAutoTestCase::UTF32BE()
+{
+ TestFirstChar("\0\0\xfe\xff\0\0\0B", _T('B'));
+}
+
+void ConvAutoTestCase::UTF16LE()
+{
+ TestFirstChar("\xff\xfeZ\0", _T('Z'));
+}
+
+void ConvAutoTestCase::UTF16BE()
+{
+ TestFirstChar("\xfe\xff\0Y", _T('Y'));
+}
+
+void ConvAutoTestCase::UTF8()
+{
+#ifdef wxHAVE_U_ESCAPE
+ TestFirstChar("\xef\xbb\xbf\xd0\x9f", L'\u041f');
+#endif
+}
+
+#endif // wxUSE_WCHAR_T
+