~ubuntu-branches/ubuntu/natty/mimetic/natty

« back to all changes in this revision

Viewing changes to test/t.rfc822.cxx

  • Committer: Bazaar Package Importer
  • Author(s): gregor herrmann
  • Date: 2006-06-16 13:16:07 UTC
  • Revision ID: james.westby@ubuntu.com-20060616131607-245mqjypkjuahq6b
Tags: upstream-0.9.1
ImportĀ upstreamĀ versionĀ 0.9.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "t.rfc822.h"
 
2
#include <string>
 
3
 
 
4
namespace mimetic
 
5
{
 
6
using namespace std;
 
7
 
 
8
 
 
9
 
 
10
void testRfc822::testGroup()
 
11
{
 
12
    struct test_item
 
13
    {
 
14
        enum { max_n = 16 };
 
15
        const char *input, *name, *mailboxes[max_n];
 
16
    };
 
17
    static const test_item data[] = {
 
18
        {
 
19
             "empty: ;", 
 
20
               "empty", 
 
21
            { 0 } 
 
22
        },
 
23
        {
 
24
             "name: e@mail.com;", 
 
25
               "name", 
 
26
            {"e@mail.com", 0 } 
 
27
        },
 
28
        {
 
29
             " group name : e@mail.com, b@mail.com", 
 
30
               "group name", 
 
31
            {"e@mail.com", 0 } 
 
32
        },
 
33
        {
 
34
             "group(comment)name: e@mail.com   , se@cond.com, th@ird.com;", 
 
35
               "group(comment)name", 
 
36
            {"e@mail.com", "se@cond.com", "th@ird.com", 0 } 
 
37
        },
 
38
 
 
39
        { 0, 0, {0} }
 
40
        };
 
41
    for( int i = 0; data[i].input; ++i)
 
42
    {
 
43
        Group grp(data[i].input);
 
44
        TEST_ASSERT_EQUALS_M(grp.name(), data[i].name,
 
45
            PRINT_ON_FAILURE_2(grp.name(), data[i].name) );
 
46
        Group::const_iterator bit = grp.begin(), eit = grp.end();
 
47
        for( int t = 0; data[i].mailboxes[t]; ++t, ++bit)
 
48
        {
 
49
            TEST_ASSERT( bit != eit );
 
50
            const Mailbox& mbx = *bit;
 
51
            /*
 
52
            cerr << mbx.mailbox() << endl;
 
53
            cerr << mbx.domain() << endl;
 
54
            cerr << mbx.str() << endl;
 
55
            */
 
56
            TEST_ASSERT_EQUALS_M(mbx, data[i].mailboxes[t],
 
57
                PRINT_ON_FAILURE_3(t, mbx.str(), data[i].mailboxes[t]) );
 
58
        }
 
59
    }
 
60
 
 
61
}
 
62
 
 
63
void testRfc822::testMailbox()
 
64
{
 
65
    struct test_item
 
66
    {
 
67
        const char *input, *mailbox, *domain, *label, *sourceroute;
 
68
    };
 
69
    static const test_item data[] = {
 
70
        { "e@mail.com", "e", "mail.com", "", "" },
 
71
        { "<e@mail.com>", "e", "mail.com", "", "" },
 
72
        { "(My Name) <e@mail.com>", "e", "mail.com", "(My Name)", "" },
 
73
        { "descr <e@mail.com>", "e", "mail.com", "descr", "" },
 
74
        { "descr <e@mail.com>", "e", "mail.com", "descr", "" },
 
75
        { "\"with a space\"@mail.com", "\"with a space\"", 
 
76
          "mail.com", "", "" },
 
77
        { "<\"with a space\"@mail.com>", "\"with a space\"", 
 
78
          "mail.com", "", "" },
 
79
        { "name surname <@dom1.com@dom2.com:e@mail.com>", "e", 
 
80
          "mail.com", "name surname", "@dom1.com@dom2.com" },
 
81
        // with comments
 
82
        { "de(this is a comment)scr <e(boom)@mail.com>", "e", 
 
83
          "mail.com", "de(this is a comment)scr", "" },
 
84
        { "<e(boom). (boo)d@mail.com>", "e.d", "mail.com", "", "" },
 
85
        { "Bella Ragga <e(boom). (boo)d@mail.com>", "e.d", 
 
86
          "mail.com", "Bella Ragga", "" },
 
87
        { 0,0,0,0,0 }
 
88
        };
 
89
    // test parser
 
90
    for( int i = 0; data[i].input; ++i)
 
91
    {
 
92
        Mailbox mbx(data[i].input);
 
93
        TEST_ASSERT_EQUALS_M(mbx.mailbox(), data[i].mailbox, 
 
94
            PRINT_ON_FAILURE_4(
 
95
                i, 
 
96
                data[i].input, 
 
97
                mbx.mailbox(), 
 
98
                data[i].mailbox));
 
99
        TEST_ASSERT_EQUALS_M(mbx.domain(), data[i].domain,
 
100
            PRINT_ON_FAILURE_4(
 
101
                i, 
 
102
                data[i].input, 
 
103
                mbx.domain(), 
 
104
                data[i].domain));
 
105
        TEST_ASSERT_EQUALS_M(mbx.label(), data[i].label, 
 
106
            PRINT_ON_FAILURE_4(
 
107
                i, 
 
108
                data[i].input, 
 
109
                mbx.label(), 
 
110
                data[i].label));
 
111
        TEST_ASSERT_EQUALS_M(mbx.sourceroute(), data[i].sourceroute,
 
112
            PRINT_ON_FAILURE_4(
 
113
                i, 
 
114
                data[i].input, 
 
115
                mbx.sourceroute(), 
 
116
                data[i].sourceroute));
 
117
    }
 
118
    
 
119
    // test == and != operators
 
120
    for( int i = 0; data[i].input; ++i)
 
121
    {
 
122
        Mailbox mbx, mbxParsed(data[i].input);
 
123
        mbx.mailbox(data[i].mailbox);
 
124
        mbx.domain(data[i].domain);
 
125
        mbx.label(data[i].label);
 
126
        mbx.sourceroute(data[i].sourceroute);
 
127
        TEST_ASSERT_EQUALS_M(mbxParsed, mbx,
 
128
            PRINT_ON_FAILURE_4(
 
129
                i, 
 
130
                data[i].input, 
 
131
                mbx.str(),
 
132
                mbxParsed.str()));
 
133
    }
 
134
}
 
135
 
 
136
void testRfc822::testAddress()
 
137
{
 
138
    Address a("e@mail.com"), b;
 
139
    int i;
 
140
    TEST_ASSERT(!a.isGroup());
 
141
 
 
142
    b.set("e@mail.com");
 
143
    TEST_ASSERT_EQUALS(a, b);
 
144
 
 
145
    a.set("<e@mail.com>");
 
146
    TEST_ASSERT(!a.isGroup());
 
147
 
 
148
    a.set(" desc <e@mail.com>");
 
149
    TEST_ASSERT(!a.isGroup());
 
150
    
 
151
    a.set("group label: e@mail.com; <b@aa.com>; blah <email@di.com>; ");
 
152
    TEST_ASSERT(a.isGroup());
 
153
 
 
154
    b.set("group label: ;");
 
155
    TEST_ASSERT(b.isGroup());
 
156
 
 
157
}
 
158
 
 
159
 
 
160
}