]> git.saurik.com Git - wxWidgets.git/blame - tests/streams/filestream.cpp
Don't uninstall common files if there is more than one wxPython installed
[wxWidgets.git] / tests / streams / filestream.cpp
CommitLineData
340da6ae
VS
1///////////////////////////////////////////////////////////////////////////////
2// Name: tests/streams/filestream.cpp
3// Purpose: Test wxFileInputStream/wxFileOutputStream
4// Author: Hans Van Leemputten
5// RCS-ID: $Id$
6// Copyright: (c) 2004 Hans Van Leemputten
7// Licence: wxWidgets licence
8///////////////////////////////////////////////////////////////////////////////
9
10#if defined(__GNUG__) && !defined(__APPLE__)
11 #pragma implementation
12 #pragma interface
13#endif
14
15// For compilers that support precompilation, includes "wx/wx.h".
16#include "wx/wxprec.h"
17
18#ifdef __BORLANDC__
19 #pragma hdrstop
20#endif
21
22// for all others, include the necessary headers
23#ifndef WX_PRECOMP
24 #include "wx/wx.h"
25#endif
26
27#include "wx/cppunit.h"
28#include "wx/wfstream.h"
29
30#include "bstream.h"
31
32using namespace std;
33using namespace CppUnit;
34
35#define DATABUFFER_SIZE 1024
36
37static const wxString FILENAME_FILEINSTREAM = _T("fileinstream.test");
38static const wxString FILENAME_FILEOUTSTREAM = _T("fileoutstream.test");
39
40///////////////////////////////////////////////////////////////////////////////
41// The test case
42//
43// Try to fully test wxFileInputStream and wxFileOutputStream
44
45class fileStream : public BaseStreamTestCase<wxFileInputStream, wxFileOutputStream>
46{
47public:
48 fileStream();
49 virtual ~fileStream();
50
51 CPPUNIT_TEST_SUITE(fileStream);
52 // Base class stream tests the fileStream supports.
53 CPPUNIT_TEST(Input_GetSize);
54 CPPUNIT_TEST(Input_GetC);
55 CPPUNIT_TEST(Input_Read);
56 CPPUNIT_TEST(Input_Eof);
57 CPPUNIT_TEST(Input_LastRead);
58 CPPUNIT_TEST(Input_SeekI);
59 CPPUNIT_TEST(Input_TellI);
60 CPPUNIT_TEST(Input_Peek);
61 CPPUNIT_TEST(Input_Ungetch);
62
63 CPPUNIT_TEST(Output_PutC);
64 CPPUNIT_TEST(Output_Write);
65 CPPUNIT_TEST(Output_LastWrite);
66 CPPUNIT_TEST(Output_SeekO);
67 CPPUNIT_TEST(Output_TellO);
68
69 // Other test specific for File stream test case.
70 CPPUNIT_TEST_SUITE_END();
71
72protected:
73 // Add own test here.
74
75private:
76 // Implement base class functions.
77 virtual wxFileInputStream *DoCreateInStream();
78 virtual wxFileOutputStream *DoCreateOutStream();
79 virtual void DoDeleteOutStream();
80
81private:
82 wxString GetInFileName() const;
83};
84
85fileStream::fileStream()
86{
08776b09 87 m_bSeekInvalidBeyondEnd = false;
340da6ae
VS
88}
89
90fileStream::~fileStream()
91{
92 // Remove the temp test file...
93 ::wxRemoveFile(FILENAME_FILEINSTREAM);
94 ::wxRemoveFile(FILENAME_FILEOUTSTREAM);
95}
96
97wxFileInputStream *fileStream::DoCreateInStream()
98{
99 wxFileInputStream *pFileInStream = new wxFileInputStream(GetInFileName());
100 CPPUNIT_ASSERT(pFileInStream->IsOk());
101 return pFileInStream;
102}
103wxFileOutputStream *fileStream::DoCreateOutStream()
104{
105 wxFileOutputStream *pFileOutStream = new wxFileOutputStream(FILENAME_FILEOUTSTREAM);
106 CPPUNIT_ASSERT(pFileOutStream->IsOk());
107 return pFileOutStream;
108}
109
110void fileStream::DoDeleteOutStream()
111{
112 ::wxRemoveFile(FILENAME_FILEOUTSTREAM);
113}
114
115wxString fileStream::GetInFileName() const
116{
117 static bool bFileCreated = false;
118 if (!bFileCreated)
119 {
120 // Create the file only once
121 bFileCreated = true;
122
123 // Make sure we have a input file...
124 char buf[DATABUFFER_SIZE];
125 wxFileOutputStream out(FILENAME_FILEINSTREAM);
126
127 // Init the data buffer.
128 for (size_t i = 0; i < DATABUFFER_SIZE; i++)
129 buf[i] = (i % 0xFF);
130
131 // Save the data
132 out.Write(buf, DATABUFFER_SIZE);
133 }
134
135 return FILENAME_FILEINSTREAM;
136}
137
138// Register the stream sub suite, by using some stream helper macro.
139// Note: Don't forget to connect it to the base suite (See: bstream.cpp => StreamCase::suite())
140STREAM_TEST_SUBSUITE_NAMED_REGISTRATION(fileStream)