Remove CppUnit boilerplate from wxFile unit test

No real changes, just simplify things and allow running wxTempFile unit
test much more naturally just by using its name.
This commit is contained in:
Vadim Zeitlin
2025-01-17 15:26:10 +01:00
parent 96418a86a1
commit db942c26b6
+27 -57
View File
@@ -19,47 +19,11 @@
#include "testfile.h"
// ----------------------------------------------------------------------------
// test class
// ----------------------------------------------------------------------------
class FileTestCase : public CppUnit::TestCase
{
public:
FileTestCase() { }
private:
CPPUNIT_TEST_SUITE( FileTestCase );
CPPUNIT_TEST( ReadAll );
CPPUNIT_TEST( RoundTripUTF8 );
CPPUNIT_TEST( RoundTripUTF16 );
CPPUNIT_TEST( RoundTripUTF32 );
CPPUNIT_TEST( TempFile );
CPPUNIT_TEST_SUITE_END();
void ReadAll();
void RoundTripUTF8() { DoRoundTripTest(wxConvUTF8); }
void RoundTripUTF16() { DoRoundTripTest(wxMBConvUTF16()); }
void RoundTripUTF32() { DoRoundTripTest(wxMBConvUTF32()); }
void DoRoundTripTest(const wxMBConv& conv);
void TempFile();
wxDECLARE_NO_COPY_CLASS(FileTestCase);
};
// ----------------------------------------------------------------------------
// CppUnit macros
// ----------------------------------------------------------------------------
CPPUNIT_TEST_SUITE_REGISTRATION( FileTestCase );
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( FileTestCase, "FileTestCase" );
// ----------------------------------------------------------------------------
// tests implementation
// ----------------------------------------------------------------------------
void FileTestCase::ReadAll()
TEST_CASE("wxFile::ReadAll", "[file]")
{
TestFile tf;
@@ -67,23 +31,29 @@ void FileTestCase::ReadAll()
{
wxFile fout(tf.GetName(), wxFile::write);
CPPUNIT_ASSERT( fout.IsOpened() );
CHECK( fout.IsOpened() );
fout.Write(text, strlen(text));
CPPUNIT_ASSERT( fout.Close() );
CHECK( fout.Close() );
}
{
wxFile fin(tf.GetName(), wxFile::read);
CPPUNIT_ASSERT( fin.IsOpened() );
CHECK( fin.IsOpened() );
wxString s;
CPPUNIT_ASSERT( fin.ReadAll(&s) );
CPPUNIT_ASSERT_EQUAL( text, s );
CHECK( fin.ReadAll(&s) );
CHECK( s == text );
}
}
void FileTestCase::DoRoundTripTest(const wxMBConv& conv)
TEST_CASE("wxFile::RoundTrip", "[file]")
{
std::unique_ptr<wxMBConv> conv;
SECTION("UTF-8") { conv.reset(new wxMBConvStrictUTF8); }
SECTION("UTF-16") { conv.reset(new wxMBConvUTF16); }
SECTION("UTF-32") { conv.reset(new wxMBConvUTF32); }
TestFile tf;
// Explicit length is needed because of the embedded NUL.
@@ -91,41 +61,41 @@ void FileTestCase::DoRoundTripTest(const wxMBConv& conv)
{
wxFile fout(tf.GetName(), wxFile::write);
CPPUNIT_ASSERT( fout.IsOpened() );
CHECK( fout.IsOpened() );
CPPUNIT_ASSERT( fout.Write(data, conv) );
CHECK( fout.Write(data, *conv) );
}
{
wxFile fin(tf.GetName(), wxFile::read);
CPPUNIT_ASSERT( fin.IsOpened() );
CHECK( fin.IsOpened() );
const ssize_t len = fin.Length();
wxCharBuffer buf(len);
CPPUNIT_ASSERT_EQUAL( len, fin.Read(buf.data(), len) );
CHECK( fin.Read(buf.data(), len) == len );
wxString dataReadBack(buf, conv, len);
CPPUNIT_ASSERT_EQUAL( data, dataReadBack );
wxString dataReadBack(buf, *conv, len);
CHECK( dataReadBack == data );
}
{
wxFile fin(tf.GetName(), wxFile::read);
CPPUNIT_ASSERT( fin.IsOpened() );
CHECK( fin.IsOpened() );
wxString dataReadBack;
CPPUNIT_ASSERT( fin.ReadAll(&dataReadBack, conv) );
CHECK( fin.ReadAll(&dataReadBack, *conv) );
CPPUNIT_ASSERT_EQUAL( data, dataReadBack );
CHECK( dataReadBack == data );
}
}
void FileTestCase::TempFile()
TEST_CASE("wxTempFile", "[file][temp]")
{
wxTempFile tmpFile;
CPPUNIT_ASSERT( tmpFile.Open(wxT("test2")) );
CPPUNIT_ASSERT( tmpFile.Write(wxT("the answer is 42")) );
CPPUNIT_ASSERT( tmpFile.Commit() );
CPPUNIT_ASSERT( wxRemoveFile(wxT("test2")) );
CHECK( tmpFile.Open(wxT("test2")) );
CHECK( tmpFile.Write(wxT("the answer is 42")) );
CHECK( tmpFile.Commit() );
CHECK( wxRemoveFile(wxT("test2")) );
}
#ifdef __LINUX__