releasing version 0.9.5-1
[debian/mimetic.git] / test / t.file.h
1 #ifndef _T_FILE_H_
2 #define _T_FILE_H_
3 #include <sstream>
4 #include <iterator>
5 #include <algorithm>
6 #include <fstream>
7 #include <string>
8 #include <cctype>
9 #include "cutee.h"
10 #include <mimetic/os/os.h>
11
12
13 namespace mimetic 
14 {
15
16 class TEST_CLASS( test_file )
17 {
18     std::string m_text_fqn, m_bin_fqn;
19 public:
20     test_file()
21     : m_text_fqn("t.file.h"), m_bin_fqn("file.bin")
22     {
23     }
24     void TEST_FUNCTION( testFileStdFile )
25     {
26         File a(m_text_fqn);
27         File::iterator beg = a.begin(), end = a.end();
28         StdFile in(m_text_fqn);
29         StdFile::iterator _fbeg = in.begin(), _fend = in.end();
30         StdFile::iterator fbeg = _fbeg, fend = _fend;
31         for(; beg != end; ++beg, ++fbeg)
32         {
33             if(*beg != *fbeg)
34             { // I don't want all bytes to be counted as test..
35                 TEST_ASSERT_EQUALS_P(*beg, *fbeg);
36             }
37         }
38         TEST_ASSERT(beg == end && fbeg == fend);
39     }
40     void TEST_FUNCTION( testBinFileStdFile )
41     {
42         File a(m_bin_fqn);
43         File::iterator beg = a.begin(), end = a.end();
44         StdFile in(m_bin_fqn);
45         StdFile::iterator fbeg = in.begin(), fend = in.end();
46         for(; beg != end; ++beg, ++fbeg)
47         {
48             if(*beg != *fbeg)
49             { // I don't want all bytes to be counted as test..
50                 TEST_ASSERT_EQUALS_P(*beg, *fbeg);
51             }
52         }
53         TEST_ASSERT(beg == end && fbeg == fend);
54     }
55     void TEST_FUNCTION( testStdFile )
56     {
57         std::ifstream ifs(m_text_fqn.c_str());
58         std::istreambuf_iterator<char> beg(ifs), end;
59         StdFile in(m_text_fqn);
60         StdFile::iterator fbeg = in.begin(), fend = in.end();
61         for(; beg != end; ++beg, ++fbeg)
62         {
63             if(*beg != *fbeg)
64             { // I don't want all bytes to be counted as test..
65                 TEST_ASSERT_EQUALS_P(*beg, *fbeg);
66             }
67         }
68         TEST_ASSERT(beg == end && fbeg == fend);
69     }
70     void TEST_FUNCTION( testFileIterator )
71     {
72         std::ifstream ifs(m_text_fqn.c_str());
73         std::istreambuf_iterator<char> beg(ifs), end;
74         File in(m_text_fqn);
75         File::iterator fbeg = in.begin(), fend = in.end();
76         for(; beg != end; ++beg, ++fbeg)
77         {
78             if(*beg != *fbeg)
79             { // I don't want all bytes to be counted as test..
80                 TEST_ASSERT_EQUALS_P(*beg, *fbeg);
81             }
82         }
83         TEST_ASSERT(beg == end && fbeg == fend);
84     }
85     void TEST_FUNCTION( testFileConstIterator )
86     {
87         std::ifstream ifs(m_text_fqn.c_str());
88         std::istreambuf_iterator<char> beg(ifs), end;
89         const File in(m_text_fqn);
90         File::const_iterator fbeg = in.begin(), fend = in.end();
91         for(; beg != end; ++beg, ++fbeg)
92         {
93             if(*beg != *fbeg)
94             { // I don't want all bytes to be counted as test..
95                 TEST_ASSERT_EQUALS_P(*beg, *fbeg);
96             }
97         }
98         TEST_ASSERT(beg == end && fbeg == fend);
99     }
100     void TEST_FUNCTION( testBinFileIterator )
101     {
102         std::ifstream ifs(m_bin_fqn.c_str());
103         std::istreambuf_iterator<char> beg(ifs), end;
104         File in(m_bin_fqn);
105         File::iterator fbeg = in.begin(), fend = in.end();
106         for(; beg != end; ++beg, ++fbeg)
107         {
108             if(*beg != *fbeg)
109             { // I don't want all bytes to be counted as test..
110                 TEST_ASSERT_EQUALS_P(*beg, *fbeg);
111             }
112         }
113         TEST_ASSERT(beg == end && fbeg == fend);
114     }
115     void TEST_FUNCTION( testBinFileConstIterator )
116     {
117         std::ifstream ifs(m_bin_fqn.c_str());
118         std::istreambuf_iterator<char> beg(ifs), end;
119         const File in(m_bin_fqn);
120         File::const_iterator fbeg = in.begin(), fend = in.end();
121         for(; beg != end; ++beg, ++fbeg)
122         {
123             if(*beg != *fbeg)
124             { // I don't want all bytes to be counted as test..
125                 TEST_ASSERT_EQUALS_P(*beg, *fbeg);
126             }
127         }
128         TEST_ASSERT(beg == end && fbeg == fend);
129     }
130 };
131
132 }
133
134 #endif