This allows to reuse it in the other tests which need to create a temporary file automatically destroyed on test exit. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61897 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
///////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        tests/streams/tempfile.cpp
 | 
						|
// Purpose:     Test wxTempFileOutputStream
 | 
						|
// Author:      Mike Wetherell
 | 
						|
// RCS-ID:      $Id$
 | 
						|
// Copyright:   (c) 2005 Mike Wetherell
 | 
						|
// Licence:     wxWidgets licence
 | 
						|
///////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#include "testprec.h"
 | 
						|
 | 
						|
#ifdef __BORLANDC__
 | 
						|
    #pragma hdrstop
 | 
						|
#endif
 | 
						|
 | 
						|
// for all others, include the necessary headers
 | 
						|
#ifndef WX_PRECOMP
 | 
						|
    #include "wx/wx.h"
 | 
						|
#endif
 | 
						|
 | 
						|
#include "wx/wfstream.h"
 | 
						|
#include "wx/filename.h"
 | 
						|
#include "bstream.h"
 | 
						|
 | 
						|
#if wxUSE_STREAMS && wxUSE_FILE
 | 
						|
 | 
						|
#include "testfile.h"
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////////////////////////
 | 
						|
// The test case
 | 
						|
 | 
						|
class tempStream : public CppUnit::TestCase
 | 
						|
{
 | 
						|
    CPPUNIT_TEST_SUITE(tempStream);
 | 
						|
        CPPUNIT_TEST(DoNothing);
 | 
						|
        CPPUNIT_TEST(Close);
 | 
						|
        CPPUNIT_TEST(Commit);
 | 
						|
        CPPUNIT_TEST(Discard);
 | 
						|
    CPPUNIT_TEST_SUITE_END();
 | 
						|
 | 
						|
    void DoNothing() { DoTest(DONOTHING, false); }
 | 
						|
    void Close()     { DoTest(CLOSE, true); }
 | 
						|
    void Commit()    { DoTest(COMMIT, true); }
 | 
						|
    void Discard()   { DoTest(DISCARD, false); }
 | 
						|
 | 
						|
    enum Action { DONOTHING, CLOSE, COMMIT, DISCARD };
 | 
						|
    void DoTest(Action action, bool shouldHaveCommited);
 | 
						|
};
 | 
						|
 | 
						|
// the common test code
 | 
						|
//
 | 
						|
void tempStream::DoTest(Action action, bool shouldHaveCommited)
 | 
						|
{
 | 
						|
    TestFile temp;
 | 
						|
 | 
						|
    {
 | 
						|
        wxTempFileOutputStream out(temp.GetName());
 | 
						|
        out.Write("Affer", 5);
 | 
						|
        CPPUNIT_ASSERT(out.SeekO(2) == 2);
 | 
						|
        out.Write("t", 1);
 | 
						|
        CPPUNIT_ASSERT(out.IsSeekable());
 | 
						|
        CPPUNIT_ASSERT(out.GetLength() == 5);
 | 
						|
        CPPUNIT_ASSERT(out.TellO() == 3);
 | 
						|
 | 
						|
        switch (action) {
 | 
						|
            case DONOTHING: break;
 | 
						|
            case COMMIT:    out.Commit(); break;
 | 
						|
            case DISCARD:   out.Discard(); break;
 | 
						|
            case CLOSE:     out.Close();
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    wxFileInputStream in(temp.GetName());
 | 
						|
    char buf[32];
 | 
						|
    in.Read(buf, sizeof(buf));
 | 
						|
    buf[in.LastRead()] = 0;
 | 
						|
    CPPUNIT_ASSERT(strcmp(buf, shouldHaveCommited ? "After" : "Before") == 0);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
// Register the stream sub suite, by using some stream helper macro.
 | 
						|
// Note: Don't forget to connect it to the base suite (See: bstream.cpp => StreamCase::suite())
 | 
						|
STREAM_TEST_SUBSUITE_NAMED_REGISTRATION(tempStream)
 | 
						|
 | 
						|
#endif // wxUSE_STREAMS && wxUSE_FILE
 |