#endif
}
+wxTextOutputStream& wxTextOutputStream::PutChar(wxChar c)
+{
+#if wxUSE_UNICODE
+ WriteString( wxString(&c, m_conv, 1) );
+#else
+ WriteString( wxString(&c, wxConvLocal, 1) );
+#endif
+ return *this;
+}
+
wxTextOutputStream& wxTextOutputStream::operator<<(const wxChar *string)
{
WriteString( wxString(string) );
wxTextOutputStream &endl( wxTextOutputStream &stream )
{
- //RN: Normally a single char on builds without a real
- //wchar_t will call the version that corresponds to the
- //numeric value of wchar_t itself (wxUint16 if 2 bytes etc.),
- //which is not what we want (will print a 10 numeric value,
- //not a newline). Thus, we need to send it a string in that
- // case instead so that it correctly prints the newline.
-#if !wxUSE_UNICODE || wxWCHAR_T_IS_REAL_TYPE
- return stream << wxT('\n');
-#else
- return stream << wxT("\n");
-#endif
+ return stream.PutChar(wxT('\n'));
}
#endif
--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name: tests/uris/uris.cpp
+// Purpose: wxTextXXXStream unit test
+// Author: Ryan Norton
+// Created: 2004-08-14
+// RCS-ID: $Id$
+// Copyright: (c) 2004 Ryan Norton
+///////////////////////////////////////////////////////////////////////////////
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif // WX_PRECOMP
+
+#include "wx/txtstrm.h"
+#include "wx/wfstream.h"
+
+#include "wx/cppunit.h"
+
+// ----------------------------------------------------------------------------
+// test class
+// ----------------------------------------------------------------------------
+
+class TextStreamTestCase : public CppUnit::TestCase
+{
+public:
+ TextStreamTestCase();
+
+private:
+ CPPUNIT_TEST_SUITE( TextStreamTestCase );
+ CPPUNIT_TEST( Endline );
+ CPPUNIT_TEST_SUITE_END();
+
+ void Endline();
+
+
+ DECLARE_NO_COPY_CLASS(TextStreamTestCase)
+};
+
+// register in the unnamed registry so that these tests are run by default
+CPPUNIT_TEST_SUITE_REGISTRATION( TextStreamTestCase );
+
+// also include in it's own registry so that these tests can be run alone
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TextStreamTestCase, "TextStreamTestCase" );
+
+TextStreamTestCase::TextStreamTestCase()
+{
+}
+
+#if defined(__WXMSW__) || defined(__WXPM__)
+# define NEWLINE "\r\n"
+# define NEWLINELEN 2
+#elif defined(__WXMAC__) && !defined(__DARWIN__)
+# define NEWLINE "\r"
+# define NEWLINELEN 1
+#else
+# define NEWLINE "\n"
+# define NEWLINELEN 1
+#endif
+
+void TextStreamTestCase::Endline()
+{
+ wxFileOutputStream* pOutFile = new wxFileOutputStream(_T("test.txt"));
+ wxTextOutputStream* pOutText = new wxTextOutputStream(*pOutFile);
+ *pOutText << _T("Test text") << endl
+ << _T("More Testing Text (There should be newline before this)");
+
+ delete pOutText;
+ delete pOutFile;
+
+ wxFileInputStream* pInFile = new wxFileInputStream(_T("test.txt"));
+
+ char szIn[9 + NEWLINELEN];
+
+ pInFile->Read(szIn, 9 + NEWLINELEN);
+
+ CPPUNIT_ASSERT( memcmp(&szIn[9], NEWLINE, NEWLINELEN) == 0 );
+
+ delete pInFile;
+}