X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/93a57d19fe85793ba13e077e06849536b2b98775..5dec941a5ba3c08870ab4b415dd6e5be368fa0f0:/tests/textfile/textfiletest.cpp diff --git a/tests/textfile/textfiletest.cpp b/tests/textfile/textfiletest.cpp index e451a87d83..1e1184b413 100644 --- a/tests/textfile/textfiletest.cpp +++ b/tests/textfile/textfiletest.cpp @@ -22,8 +22,13 @@ #ifndef WX_PRECOMP #endif // WX_PRECOMP +#include "wx/ffile.h" #include "wx/textfile.h" +#ifdef __VISUALC__ + #define unlink _unlink +#endif + // ---------------------------------------------------------------------------- // test class // ---------------------------------------------------------------------------- @@ -46,6 +51,7 @@ private: CPPUNIT_TEST( ReadUTF8 ); CPPUNIT_TEST( ReadUTF16 ); #endif // wxUSE_UNICODE + CPPUNIT_TEST( ReadBig ); CPPUNIT_TEST_SUITE_END(); void ReadEmpty(); @@ -57,6 +63,7 @@ private: void ReadUTF8(); void ReadUTF16(); #endif // wxUSE_UNICODE + void ReadBig(); // return the name of the test file we use static const char *GetTestFileName() { return "textfiletest.txt"; } @@ -64,7 +71,7 @@ private: // create the test file with the given contents static void CreateTestFile(const char *contents) { - return CreateTestFile(strlen(contents), contents); + CreateTestFile(strlen(contents), contents); } // create the test file with the given contents (version must be used if @@ -78,7 +85,7 @@ private: // register in the unnamed registry so that these tests are run by default CPPUNIT_TEST_SUITE_REGISTRATION( TextFileTestCase ); -// also include in it's own registry so that these tests can be run alone +// also include in its own registry so that these tests can be run alone CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TextFileTestCase, "TextFileTestCase" ); void TextFileTestCase::CreateTestFile(size_t len, const char *contents) @@ -86,8 +93,8 @@ void TextFileTestCase::CreateTestFile(size_t len, const char *contents) FILE *f = fopen(GetTestFileName(), "wb"); CPPUNIT_ASSERT( f ); - CPPUNIT_ASSERT( fwrite(contents, 1, len, f) >= 0 ); - CPPUNIT_ASSERT( fclose(f) == 0 ); + CPPUNIT_ASSERT_EQUAL( len, fwrite(contents, 1, len, f) ); + CPPUNIT_ASSERT_EQUAL( 0, fclose(f) ); } void TextFileTestCase::ReadEmpty() @@ -97,7 +104,7 @@ void TextFileTestCase::ReadEmpty() wxTextFile f; CPPUNIT_ASSERT( f.Open(wxString::FromAscii(GetTestFileName())) ); - CPPUNIT_ASSERT_EQUAL( 0u, f.GetLineCount() ); + CPPUNIT_ASSERT_EQUAL( (size_t)0, f.GetLineCount() ); } void TextFileTestCase::ReadDOS() @@ -107,11 +114,11 @@ void TextFileTestCase::ReadDOS() wxTextFile f; CPPUNIT_ASSERT( f.Open(wxString::FromAscii(GetTestFileName())) ); - CPPUNIT_ASSERT_EQUAL( 3u, f.GetLineCount() ); + CPPUNIT_ASSERT_EQUAL( (size_t)3, f.GetLineCount() ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_Dos, f.GetLineType(0) ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_None, f.GetLineType(2) ); - CPPUNIT_ASSERT_EQUAL( wxString(_T("bar")), f.GetLine(1) ); - CPPUNIT_ASSERT_EQUAL( wxString(_T("baz")), f.GetLastLine() ); + CPPUNIT_ASSERT_EQUAL( wxString(wxT("bar")), f.GetLine(1) ); + CPPUNIT_ASSERT_EQUAL( wxString(wxT("baz")), f.GetLastLine() ); } void TextFileTestCase::ReadUnix() @@ -121,11 +128,11 @@ void TextFileTestCase::ReadUnix() wxTextFile f; CPPUNIT_ASSERT( f.Open(wxString::FromAscii(GetTestFileName())) ); - CPPUNIT_ASSERT_EQUAL( 3u, f.GetLineCount() ); + CPPUNIT_ASSERT_EQUAL( (size_t)3, f.GetLineCount() ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_Unix, f.GetLineType(0) ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_None, f.GetLineType(2) ); - CPPUNIT_ASSERT_EQUAL( wxString(_T("bar")), f.GetLine(1) ); - CPPUNIT_ASSERT_EQUAL( wxString(_T("baz")), f.GetLastLine() ); + CPPUNIT_ASSERT_EQUAL( wxString(wxT("bar")), f.GetLine(1) ); + CPPUNIT_ASSERT_EQUAL( wxString(wxT("baz")), f.GetLastLine() ); } void TextFileTestCase::ReadMac() @@ -135,11 +142,11 @@ void TextFileTestCase::ReadMac() wxTextFile f; CPPUNIT_ASSERT( f.Open(wxString::FromAscii(GetTestFileName())) ); - CPPUNIT_ASSERT_EQUAL( 3u, f.GetLineCount() ); + CPPUNIT_ASSERT_EQUAL( (size_t)3, f.GetLineCount() ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_Mac, f.GetLineType(0) ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_None, f.GetLineType(2) ); - CPPUNIT_ASSERT_EQUAL( wxString(_T("bar")), f.GetLine(1) ); - CPPUNIT_ASSERT_EQUAL( wxString(_T("baz")), f.GetLastLine() ); + CPPUNIT_ASSERT_EQUAL( wxString(wxT("bar")), f.GetLine(1) ); + CPPUNIT_ASSERT_EQUAL( wxString(wxT("baz")), f.GetLastLine() ); } void TextFileTestCase::ReadMixed() @@ -149,13 +156,13 @@ void TextFileTestCase::ReadMixed() wxTextFile f; CPPUNIT_ASSERT( f.Open(wxString::FromAscii(GetTestFileName())) ); - CPPUNIT_ASSERT_EQUAL( 3u, f.GetLineCount() ); + CPPUNIT_ASSERT_EQUAL( (size_t)3, f.GetLineCount() ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_Mac, f.GetLineType(0) ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_Dos, f.GetLineType(1) ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_Unix, f.GetLineType(2) ); - CPPUNIT_ASSERT_EQUAL( wxString(_T("foo")), f.GetFirstLine() ); - CPPUNIT_ASSERT_EQUAL( wxString(_T("bar")), f.GetLine(1) ); - CPPUNIT_ASSERT_EQUAL( wxString(_T("baz")), f.GetLastLine() ); + CPPUNIT_ASSERT_EQUAL( wxString(wxT("foo")), f.GetFirstLine() ); + CPPUNIT_ASSERT_EQUAL( wxString(wxT("bar")), f.GetLine(1) ); + CPPUNIT_ASSERT_EQUAL( wxString(wxT("baz")), f.GetLastLine() ); } #if wxUSE_UNICODE @@ -168,12 +175,14 @@ void TextFileTestCase::ReadUTF8() wxTextFile f; CPPUNIT_ASSERT( f.Open(wxString::FromAscii(GetTestFileName()), wxConvUTF8) ); - CPPUNIT_ASSERT_EQUAL( 2u, f.GetLineCount() ); + CPPUNIT_ASSERT_EQUAL( (size_t)2, f.GetLineCount() ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_Unix, f.GetLineType(0) ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_None, f.GetLineType(1) ); +#ifdef wxHAVE_U_ESCAPE CPPUNIT_ASSERT_EQUAL( wxString(L"\u041f"), f.GetFirstLine() ); CPPUNIT_ASSERT_EQUAL( wxString(L"\u0440\u0438\u0432\u0435\u0442"), f.GetLastLine() ); +#endif // wxHAVE_U_ESCAPE } void TextFileTestCase::ReadUTF16() @@ -183,18 +192,44 @@ void TextFileTestCase::ReadUTF16() "\x40\x04\x38\x04\x32\x04\x35\x04\x42\x04"); wxTextFile f; - wxMBConvUTF16 conv; + wxMBConvUTF16LE conv; CPPUNIT_ASSERT( f.Open(wxString::FromAscii(GetTestFileName()), conv) ); - CPPUNIT_ASSERT_EQUAL( 2u, f.GetLineCount() ); + CPPUNIT_ASSERT_EQUAL( (size_t)2, f.GetLineCount() ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_Dos, f.GetLineType(0) ); CPPUNIT_ASSERT_EQUAL( wxTextFileType_None, f.GetLineType(1) ); + +#ifdef wxHAVE_U_ESCAPE CPPUNIT_ASSERT_EQUAL( wxString(L"\u041f"), f.GetFirstLine() ); CPPUNIT_ASSERT_EQUAL( wxString(L"\u0440\u0438\u0432\u0435\u0442"), f.GetLastLine() ); +#endif // wxHAVE_U_ESCAPE } #endif // wxUSE_UNICODE +void TextFileTestCase::ReadBig() +{ + static const size_t NUM_LINES = 10000; + + { + wxFFile f(GetTestFileName(), "w"); + for ( size_t n = 0; n < NUM_LINES; n++ ) + { + fprintf(f.fp(), "Line %lu\n", (unsigned long)n + 1); + } + } + + wxTextFile f; + CPPUNIT_ASSERT( f.Open(GetTestFileName()) ); + + CPPUNIT_ASSERT_EQUAL( NUM_LINES, f.GetLineCount() ); + CPPUNIT_ASSERT_EQUAL( wxString("Line 1"), f[0] ); + CPPUNIT_ASSERT_EQUAL( wxString("Line 999"), f[998] ); + CPPUNIT_ASSERT_EQUAL( wxString("Line 1000"), f[999] ); + CPPUNIT_ASSERT_EQUAL( wxString::Format("Line %lu", (unsigned long)NUM_LINES), + f[NUM_LINES - 1] ); +} + #endif // wxUSE_TEXTFILE