releasing version 0.9.5-1
[debian/mimetic.git] / test / t.parser.h
1 #ifndef _T_PARSER_H_
2 #define _T_PARSER_H_
3 #include <iostream>
4 #include <fstream>
5 #include <iterator>
6 #include <string>
7 #include <list>
8 #include <mimetic/mimeentity.h>
9 #include <mimetic/parser/itparser.h>
10 #include <mimetic/os/file.h>
11 #include <mimetic/utils.h>
12 #include <string.h>
13 #include "cutee.h"
14
15 namespace mimetic
16 {
17
18 struct TEST_CLASS( parser_fixed_bugs )
19 {
20     void TEST_FUNCTION( t0_input_iterator )
21     {
22         // bug: the body of multipart msgs include the newline char
23         //      preceding the boundary
24         using namespace std;
25         ifstream ifs("test3.msg");
26         TEST_ASSERT_OR_RET(ifs.is_open(), "file open error");
27
28         MimeEntity me(ifs);
29         TEST_ASSERT(me.body().parts().size());
30         ContentType& ct = me.header().contentType();
31         TEST_ASSERT_EQUALS_P(ct.type(), "multipart");
32         TEST_ASSERT_EQUALS_P(ct.subtype(), "form-data");
33         MimeEntityList& mel = me.body().parts();
34         MimeEntityList::iterator bit = mel.begin(), eit = mel.end();
35         for( int i = 0; bit != eit; ++bit, ++i)
36         {
37             stringstream ss;
38             ss << setfill('0') << setw(3) << i;
39             TEST_ASSERT_EQUALS_P(ss.str(), (*bit)->body());
40         }
41     }
42     void TEST_FUNCTION( t0_random_iterator )
43     {
44         using namespace std;
45         File in("test3.msg");
46         TEST_ASSERT_OR_RET(in, "file open error");
47         MimeEntity me(in.begin(), in.end());
48         TEST_ASSERT(me.body().parts().size());
49         ContentType& ct = me.header().contentType();
50         TEST_ASSERT_EQUALS_P(ct.type(), "multipart");
51         TEST_ASSERT_EQUALS_P(ct.subtype(), "form-data");
52         MimeEntityList& mel = me.body().parts();
53         MimeEntityList::iterator bit = mel.begin(), eit = mel.end();
54         for( int i = 0; bit != eit; ++bit, ++i)
55         {
56             stringstream ss;
57             ss << setfill('0') << setw(3) << i;
58             TEST_ASSERT_EQUALS_P(ss.str(), (*bit)->body());
59         }
60     }
61 };
62
63 };
64
65 #endif
66