3 #include <muleunit/test.h>
4 #include <common/TextFile.h>
5 #include <common/Path.h>
7 using namespace muleunit
;
9 DECLARE_SIMPLE(TextFile
)
11 const wxChar
* g_filesDefault
[] = {
12 wxT("TextFileTest_dos.txt"),
13 wxT("TextFileTest_unix.txt")
17 wxString
ArrToStr(const wxArrayString
& arr
)
19 wxString str
= wxT("[");
21 for (size_t i
= 0; i
< arr
.Count(); ++i
) {
22 if (str
!= wxT("[")) {
23 str
<< wxT(", \"") << arr
[i
] << wxT('"');
25 str
<< wxT('"') << arr
[i
] << wxT('"');
35 wxString
ArrToStr(size_t count
, const wxChar
* arr
[])
37 return ArrToStr(wxArrayString(count
, arr
));
42 void CompareReadLines(size_t count
, const wxChar
* expected
[], EReadTextFile criteria
)
45 ASSERT_FALSE(file
.IsOpened());
46 ASSERT_TRUE(file
.Eof());
47 for (size_t j
= 0; j
< ArraySize(g_filesDefault
); ++j
) {
48 CONTEXT(wxString(wxT("Checking file: ")) + g_filesDefault
[j
]);
50 ASSERT_TRUE(file
.Open(CPath(wxSTRINGIZE_T(SRCDIR
)).JoinPaths(CPath(g_filesDefault
[j
])).GetRaw(), CTextFile::read
));
52 wxArrayString lines
= file
.ReadLines(criteria
);
54 ASSERT_EQUALS(ArrToStr(count
, expected
), ArrToStr(lines
));
55 ASSERT_EQUALS(count
, lines
.GetCount());
57 ASSERT_TRUE(file
.IsOpened());
58 ASSERT_TRUE(file
.Eof());
63 TEST(TextFile
, ReadLines
)
65 ASSERT_TRUE(CPath::DirExists(wxSTRINGIZE_T(SRCDIR
)));
68 CONTEXT(wxT("Checking default parameters"));
70 const wxChar
* lines
[] = {
76 CompareReadLines(ArraySize(lines
), lines
, txtReadDefault
);
80 CONTEXT(wxT("Checking without criteria"));
82 const wxChar
* lines
[] = {
95 CompareReadLines(ArraySize(lines
), lines
, (EReadTextFile
)0);
99 CONTEXT(wxT("Checking txtIgnoreEmptyLines"));
101 const wxChar
* lines
[] = {
112 CompareReadLines(ArraySize(lines
), lines
, txtIgnoreEmptyLines
);
116 CONTEXT(wxT("Checking txtIgnoreComments"));
118 const wxChar
* lines
[] = {
128 CompareReadLines(ArraySize(lines
), lines
, txtIgnoreComments
);
132 CONTEXT(wxT("Checking txtStripWhitespace"));
134 const wxChar
* lines
[] = {
147 CompareReadLines(ArraySize(lines
), lines
, txtStripWhitespace
);
152 class TextFileTest
: public Test
156 : Test(wxT("TextFile"), wxT("WriteLines"))
162 const CPath path
= CPath(wxT("testfile.txt"));
163 if (path
.FileExists()) {
164 ASSERT_TRUE(CPath::RemoveFile(path
));
169 virtual void tearDown()
176 const wxChar
* lines
[] = {
190 CONTEXT(wxT("Writing lines manually"));
193 ASSERT_TRUE(file
.Open(wxT("testfile.txt"), CTextFile::write
));
195 for (size_t i
= 0; i
< ArraySize(lines
); ++i
) {
196 CONTEXT(wxString::Format(wxT("Writing the %i'th line."), static_cast<int>(i
)));
198 ASSERT_TRUE(file
.WriteLine(lines
[i
]));
203 CONTEXT(wxT("Reading manually written lines"));
206 ASSERT_TRUE(file
.Open(wxT("testfile.txt"), CTextFile::read
));
207 ASSERT_FALSE(file
.Eof());
209 for (size_t i
= 0; i
< ArraySize(lines
); ++i
) {
210 CONTEXT(wxString::Format(wxT("Reading the %i'th line."), static_cast<int>(i
)));
212 ASSERT_EQUALS(lines
[i
], file
.GetNextLine());
214 ASSERT_TRUE(file
.Eof());
218 CONTEXT(wxT("Writing lines automatically"));
221 ASSERT_FALSE(file
.IsOpened());
222 ASSERT_TRUE(file
.Open(wxT("testfile.txt"), CTextFile::write
));
223 ASSERT_TRUE(file
.WriteLines(wxArrayString(ArraySize(lines
), lines
)));
224 ASSERT_TRUE(file
.IsOpened());
228 CONTEXT(wxT("Reading automatically written lines"));
231 ASSERT_FALSE(file
.IsOpened());
232 ASSERT_TRUE(file
.Open(wxT("testfile.txt"), CTextFile::read
));
233 ASSERT_TRUE(file
.IsOpened());
234 ASSERT_FALSE(file
.Eof());
236 for (size_t i
= 0; i
< ArraySize(lines
); ++i
) {
237 CONTEXT(wxString::Format(wxT("Reading the %i'th line."), static_cast<int>(i
)));
239 ASSERT_EQUALS(lines
[i
], file
.GetNextLine());
242 ASSERT_TRUE(file
.Eof());