]> git.saurik.com Git - wxWidgets.git/blob - tests/streams/iostreams.cpp
92a640e7907a9120b35a8289df7c2f9f7cbe65f6
[wxWidgets.git] / tests / streams / iostreams.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: tests/streams/iostreams.cpp
3 // Purpose: unit test for input/output streams
4 // Author: Vadim Zeitlin
5 // Created: 2008-06-15
6 // RCS-ID: $Id$
7 ///////////////////////////////////////////////////////////////////////////////
8
9 // ----------------------------------------------------------------------------
10 // headers
11 // ----------------------------------------------------------------------------
12
13 #include "testprec.h"
14
15 #ifdef __BORLANDC__
16 #pragma hdrstop
17 #endif
18
19 #if wxUSE_STREAMS
20
21 #include "wx/filename.h"
22 #include "wx/wfstream.h"
23
24 // --------------------------------------------------------------------------
25 // test class
26 // --------------------------------------------------------------------------
27
28 class IOStreamsTestCase : public CppUnit::TestCase
29 {
30 public:
31 IOStreamsTestCase() { }
32
33 virtual void tearDown()
34 {
35 if ( !m_fnTemp.empty() )
36 {
37 wxRemoveFile(m_fnTemp);
38 m_fnTemp.clear();
39 }
40 }
41
42 private:
43 CPPUNIT_TEST_SUITE( IOStreamsTestCase );
44 CPPUNIT_TEST( FStream );
45 CPPUNIT_TEST( FFStream );
46 CPPUNIT_TEST_SUITE_END();
47
48 void FStream() { wxFileStream s(GetTempFName()); DoTest(s); }
49 void FFStream() { wxFFileStream s(GetTempFName()); DoTest(s); }
50
51 wxString GetTempFName()
52 {
53 m_fnTemp = wxFileName::CreateTempFileName("wxtest");
54 return m_fnTemp;
55 }
56
57 template <class Stream>
58 void DoTest(Stream& s)
59 {
60 s.PutC('x');
61 WX_ASSERT_SIZET_EQUAL( 1, s.LastWrite() );
62
63 s.SeekI(0);
64 CPPUNIT_ASSERT_EQUAL( int('x'), s.GetC() );
65 }
66
67 wxString m_fnTemp;
68
69 DECLARE_NO_COPY_CLASS(IOStreamsTestCase)
70 };
71
72 // register in the unnamed registry so that these tests are run by default
73 CPPUNIT_TEST_SUITE_REGISTRATION( IOStreamsTestCase );
74
75 // also include in it's own registry so that these tests can be run alone
76 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( IOStreamsTestCase, "IOStreamsTestCase" );
77
78 #endif // wxUSE_STREAMS