test: Add isds_event_free
[libisds.git] / test / isds-eventstring2event.c
blob5b696b743b6cb41542ddfe116b11b78607d5a7cb
1 #include "test.h"
2 #include "isds.c"
4 static int test_eventstring2event(const xmlChar *string, isds_error error,
5 const struct isds_event *correct_event, struct isds_event *new_event) {
6 isds_error err;
8 err = eventstring2event(string, new_event);
10 if (error != err)
11 FAIL_TEST("eventstring2event() returned wrong error code: "
12 "expected=%s, got=%s",
13 isds_strerror(error), isds_strerror(err));
14 if (err != IE_SUCCESS)
15 PASS_TEST;
17 if (new_event && correct_event) {
18 if (!correct_event->time && new_event->time)
19 FAIL_TEST("Returned event time is not NULL as expected");
20 if (correct_event->time) {
21 if (!new_event->time)
22 FAIL_TEST("Returned event time is NULL as not expected");
23 if (correct_event->time->tv_sec != new_event->time->tv_sec)
24 FAIL_TEST("Returned event time differs in tv_sec: "
25 "expected=%d, got=%d",
26 correct_event->time->tv_sec, new_event->time->tv_sec);
27 if (correct_event->time->tv_usec != new_event->time->tv_usec)
28 FAIL_TEST("Returned event time differs in tv_usec: "
29 "expected=%d, got=%d",
30 correct_event->time->tv_usec, new_event->time->tv_usec);
33 if (!correct_event->type && new_event->type)
34 FAIL_TEST("Returned event type is not NULL as expected");
35 if (correct_event->type) {
36 if (!new_event->type)
37 FAIL_TEST("Returned event type is NULL as not expected");
38 if (*correct_event->type != *new_event->type)
39 FAIL_TEST("Returned wrong event type: expected=%d, got=%d",
40 *correct_event->type, *new_event->type);
43 if (!correct_event->description && new_event->description)
44 FAIL_TEST("Returned event description is not NUTLL as expected");
45 if (correct_event->description) {
46 if (!new_event->description)
47 FAIL_TEST("Returned event description is NULL as "
48 "not expected");
49 if (strcmp(correct_event->description, new_event->description))
50 FAIL_TEST("Returned wrong event description: "
51 "expected=`%s', got=`%s'",
52 correct_event->description, new_event->description);
56 PASS_TEST;
60 int main(int argc, char **argv) {
61 INIT_TEST("eventstring to event conversion");
63 xmlChar *input = NULL;
64 isds_event_type event_type;
65 struct isds_event event;
66 struct isds_event output = {
67 .time = NULL, .type = NULL, .description = NULL
71 isds_init();
73 /* Known event prefixes */
74 input = BAD_CAST "EV1: some text";
75 event.time = NULL;
76 event_type = EVENT_ACCEPTED_BY_RECIPIENT;
77 event.type = &event_type;
78 event.description = "some text";
79 TEST((char*)input, test_eventstring2event, input,
80 IE_SUCCESS, &event, &output);
82 input = BAD_CAST "EV2: some text";
83 event.time = NULL;
84 event_type = EVENT_ACCEPTED_BY_FICTION;
85 event.type = &event_type;
86 event.description = "some text";
87 TEST((char*)input, test_eventstring2event, input,
88 IE_SUCCESS, &event, &output);
90 input = BAD_CAST "EV3: some text";
91 event.time = NULL;
92 event_type = EVENT_UNDELIVERABLE;
93 event.type = &event_type;
94 event.description = "some text";
95 TEST((char*)input, test_eventstring2event, input,
96 IE_SUCCESS, &event, &output);
98 input = BAD_CAST "EV4: some text";
99 event.time = NULL;
100 event_type = EVENT_COMMERCIAL_ACCEPTED;
101 event.type = &event_type;
102 event.description = "some text";
103 TEST((char*)input, test_eventstring2event, input,
104 IE_SUCCESS, &event, &output);
106 /* Unknown event prefixes */
107 input = BAD_CAST "EV0: out of range event";
108 event.time = NULL;
109 event_type = EVENT_UKNOWN;
110 event.type = &event_type;
111 event.description = (char *) input;
112 TEST((char*)input, test_eventstring2event, input,
113 IE_SUCCESS, &event, &output);
115 input = BAD_CAST "EV5: out of range event";
116 event.time = NULL;
117 event_type = EVENT_UKNOWN;
118 event.type = &event_type;
119 event.description = (char *) input;
120 TEST((char*)input, test_eventstring2event, input,
121 IE_SUCCESS, &event, &output);
123 /* Other valid cases */
124 event.time = NULL;
125 event_type = EVENT_UKNOWN;
126 event.type = &event_type;
127 event.description = "";
128 TEST("Empty input", test_eventstring2event, BAD_CAST "",
129 IE_SUCCESS, &event, &output);
131 /* Invalid invocations */
132 TEST("NULL input", test_eventstring2event, NULL,
133 IE_INVAL, NULL, &output);
135 input = BAD_CAST "EV1: some text";
136 event.time = NULL;
137 event_type = EVENT_ACCEPTED_BY_RECIPIENT;
138 event.type = &event_type;
139 event.description = "some text";
140 TEST("NULL output", test_eventstring2event, input,
141 IE_INVAL, &event, NULL);
143 isds_cleanup();
144 SUM_TEST();