wxWidgets/tests/testfile.h
Vadim Zeitlin 10b80a16f0 Factor out TempFile class and reuse it in other tests
Ensure we don't leave "mytext.dat" and "test.txt" lying around in any
directory the tests are run from by ensuring that these files are
destroyed by the test code using them.
2017-11-05 17:28:24 +01:00

71 lines
1.8 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Name: tests/testfile.h
// Purpose: TestFile class
// Author: Mike Wetherell
// Copyright: (c) 2005 Mike Wetherell
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_TESTS_TEMPFILE_H_
#define _WX_TESTS_TEMPFILE_H_
#include "wx/filefn.h"
#include "wx/filename.h"
#include <ostream>
// define stream inserter for wxFileName to use it in CPPUNIT_ASSERT_EQUAL()
inline std::ostream& operator<<(std::ostream& o, const wxFileName& fn)
{
return o << fn.GetFullPath();
}
// ----------------------------------------------------------------------------
// TestFile: self deleting test file in temporary directory
// ----------------------------------------------------------------------------
class TestFile
{
public:
TestFile()
{
wxFile file;
m_name = wxFileName::CreateTempFileName(wxT("wxtest"), &file);
file.Write("Before", 6);
}
~TestFile() { if (wxFileExists(m_name)) wxRemoveFile(m_name); }
wxString GetName() const { return m_name; }
private:
wxString m_name;
};
// ----------------------------------------------------------------------------
// TempFile: just a self deleting file
// ----------------------------------------------------------------------------
class TempFile
{
public:
explicit TempFile(const wxString& name = wxString()) : m_name(name) { }
void Assign(const wxString& name) { m_name = name; }
const wxString& GetName() const { return m_name; }
~TempFile()
{
if ( !m_name.empty() )
wxRemoveFile(m_name);
}
private:
wxString m_name;
wxDECLARE_NO_COPY_CLASS(TempFile);
};
#endif // _WX_TESTS_TEMPFILE_H_