]> git.saurik.com Git - wxWidgets.git/blob - tests/file/filetest.cpp
446a59fa8da560e2130b304a2197034140cda958
[wxWidgets.git] / tests / file / filetest.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: tests/file/filetest.cpp
3 // Purpose: wxFile unit test
4 // Author: Vadim Zeitlin
5 // Created: 2009-09-12
6 // RCS-ID: $Id$
7 // Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
8 ///////////////////////////////////////////////////////////////////////////////
9
10 // ----------------------------------------------------------------------------
11 // headers
12 // ----------------------------------------------------------------------------
13
14 #include "testprec.h"
15
16 #ifdef __BORLANDC__
17 #pragma hdrstop
18 #endif
19
20 #if wxUSE_FILE
21
22 #include "wx/file.h"
23
24 #include "testfile.h"
25
26 // ----------------------------------------------------------------------------
27 // test class
28 // ----------------------------------------------------------------------------
29
30 class FileTestCase : public CppUnit::TestCase
31 {
32 public:
33 FileTestCase() { }
34
35 private:
36 CPPUNIT_TEST_SUITE( FileTestCase );
37 #if wxUSE_UNICODE
38 CPPUNIT_TEST( RoundTripUTF8 );
39 CPPUNIT_TEST( RoundTripUTF16 );
40 CPPUNIT_TEST( RoundTripUTF32 );
41 #endif // wxUSE_UNICODE
42 CPPUNIT_TEST( TempFile );
43 CPPUNIT_TEST_SUITE_END();
44
45 #if wxUSE_UNICODE
46 void RoundTripUTF8() { DoRoundTripTest(wxConvUTF8); }
47 void RoundTripUTF16() { DoRoundTripTest(wxMBConvUTF16()); }
48 void RoundTripUTF32() { DoRoundTripTest(wxMBConvUTF32()); }
49 #endif // wxUSE_UNICODE
50
51 void DoRoundTripTest(const wxMBConv& conv);
52 void TempFile();
53
54 wxDECLARE_NO_COPY_CLASS(FileTestCase);
55 };
56
57 // ----------------------------------------------------------------------------
58 // CppUnit macros
59 // ----------------------------------------------------------------------------
60
61 CPPUNIT_TEST_SUITE_REGISTRATION( FileTestCase );
62 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( FileTestCase, "FileTestCase" );
63
64 // ----------------------------------------------------------------------------
65 // tests implementation
66 // ----------------------------------------------------------------------------
67
68 #if wxUSE_UNICODE
69
70 void FileTestCase::DoRoundTripTest(const wxMBConv& conv)
71 {
72 TestFile tf;
73
74 const wxString data = "Hello\0UTF";
75
76 {
77 wxFile fout(tf.GetName(), wxFile::write);
78 CPPUNIT_ASSERT( fout.IsOpened() );
79
80 CPPUNIT_ASSERT( fout.Write(data, conv) );
81 }
82
83 {
84 wxFile fin(tf.GetName(), wxFile::read);
85 CPPUNIT_ASSERT( fin.IsOpened() );
86
87 const ssize_t len = fin.Length();
88 wxCharBuffer buf(len);
89 CPPUNIT_ASSERT_EQUAL( len, fin.Read(buf.data(), len) );
90
91 wxWCharBuffer wbuf(conv.cMB2WC(buf));
92 CPPUNIT_ASSERT_EQUAL( data, wbuf );
93 }
94 }
95
96 #endif // wxUSE_UNICODE
97
98 void FileTestCase::TempFile()
99 {
100 wxTempFile tmpFile;
101 CPPUNIT_ASSERT( tmpFile.Open(wxT("test2")) && tmpFile.Write(wxT("the answer is 42")) );
102 CPPUNIT_ASSERT( tmpFile.Commit() );
103 CPPUNIT_ASSERT( wxRemoveFile(wxT("test2")) );
104 }
105
106 #endif // wxUSE_FILE