]> git.saurik.com Git - wxWidgets.git/commitdiff
wxTextOutputStream::PutChar and text stream test
authorRyan Norton <wxprojects@comcast.net>
Sun, 21 Nov 2004 18:26:38 +0000 (18:26 +0000)
committerRyan Norton <wxprojects@comcast.net>
Sun, 21 Nov 2004 18:26:38 +0000 (18:26 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30681 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/txtstrm.h
src/common/txtstrm.cpp
tests/streams/textstreamtest.cpp [new file with mode: 0644]
tests/test.bkl

index 014136cb7416603023a46435a8da20662b0ba5c0..3d4b11a58119c03ceb51a0ae32fa56dfcaf2e2c9 100644 (file)
@@ -121,6 +121,8 @@ public:
     virtual void WriteDouble(double d);
     virtual void WriteString(const wxString& string);
 
     virtual void WriteDouble(double d);
     virtual void WriteString(const wxString& string);
 
+    wxTextOutputStream& PutChar(wxChar c);
+
     wxTextOutputStream& operator<<(const wxChar *string);
     wxTextOutputStream& operator<<(const wxString& string);
     wxTextOutputStream& operator<<(char c);
     wxTextOutputStream& operator<<(const wxChar *string);
     wxTextOutputStream& operator<<(const wxString& string);
     wxTextOutputStream& operator<<(char c);
index 0f23ce65ab958454c3d8c742caac9b3528ab1b96..93bc7ad912bffa5f6f9a810c06db73f89698dd23 100644 (file)
@@ -417,6 +417,16 @@ void wxTextOutputStream::WriteString(const wxString& string)
 #endif
 }
 
 #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& wxTextOutputStream::operator<<(const wxChar *string)
 {
     WriteString( wxString(string) );
@@ -497,17 +507,7 @@ wxTextOutputStream& wxTextOutputStream::operator<<(float f)
 
 wxTextOutputStream &endl( wxTextOutputStream &stream )
 {
 
 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
 }
 
 #endif
diff --git a/tests/streams/textstreamtest.cpp b/tests/streams/textstreamtest.cpp
new file mode 100644 (file)
index 0000000..54bcf3f
--- /dev/null
@@ -0,0 +1,89 @@
+///////////////////////////////////////////////////////////////////////////////
+// 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;
+}
index 6b03777e68be8658a9368847543b400bebdbcff4..65c8391c83e68983f935a4542bd12f8bede99658 100644 (file)
@@ -31,6 +31,7 @@
             streams/filestream.cpp
             streams/memstream.cpp
             streams/sstream.cpp
             streams/filestream.cpp
             streams/memstream.cpp
             streams/sstream.cpp
+            streams/textstreamtest.cpp
             streams/zlibstream.cpp
             uris/uris.cpp
         </sources>
             streams/zlibstream.cpp
             uris/uris.cpp
         </sources>