2
* unit tests for the geis_event_queue module
7
#include "libgeis/geis_event.h"
8
#include "libgeis/geis_event_queue.h"
12
static GeisEventQueue g_queue;
16
construct_event_queue()
18
g_queue = geis_event_queue_new();
21
/* fixture teardown */
25
geis_event_queue_delete(g_queue);
29
/* verify event queue construction/destruction */
30
START_TEST(construction)
32
construct_event_queue();
33
fail_unless(g_queue != NULL, "failed to create the event queue");
34
fail_unless(geis_event_queue_is_empty(g_queue), "queue is not empty");
35
destroy_event_queue();
40
/* verify event_queue insertion */
41
START_TEST(enqueue_dequeue)
43
GeisStatus status = GEIS_STATUS_UNKNOWN_ERROR;
44
GeisEvent event1 = geis_event_new(GEIS_EVENT_GESTURE_BEGIN);
45
GeisEvent event2 = geis_event_new(GEIS_EVENT_GESTURE_END);
48
ev = geis_event_queue_dequeue(g_queue);
49
fail_unless(ev == NULL, "unexpected failure at pop(0)");
51
status = geis_event_queue_enqueue(g_queue, event1);
52
fail_unless(status == GEIS_STATUS_SUCCESS, "failure at enqueue(event1)");
53
fail_unless(!geis_event_queue_is_empty(g_queue), "queue is unexpectedly empty");
54
status = geis_event_queue_enqueue(g_queue, event2);
55
fail_unless(status == GEIS_STATUS_SUCCESS, "failure at enqueue(event2)");
57
ev = geis_event_queue_dequeue(g_queue);
58
fail_unless(ev != NULL, "failure at dequeue(1)");
59
fail_unless(ev == event1, "unexpected value returned from front(1)");
61
ev = geis_event_queue_dequeue(g_queue);
62
fail_unless(ev != NULL, "failure at dequeue(2)");
63
fail_unless(ev == event2, "unexpected value returned from front(2)");
65
ev = geis_event_queue_dequeue(g_queue);
66
fail_unless(ev == NULL, "failure at dequeue(3)");
67
fail_unless(geis_event_queue_is_empty(g_queue), "queue is not empty");
71
/* verify event_queue remove_if */
73
_is_event_type(GeisEvent event, void* context)
75
GeisEventType event_type = *(GeisEventType*)context;
76
return geis_event_type(event) == event_type;
81
GeisStatus status = GEIS_STATUS_UNKNOWN_ERROR;
82
GeisEvent event1 = geis_event_new(GEIS_EVENT_GESTURE_BEGIN);
83
status = geis_event_queue_enqueue(g_queue, event1);
84
fail_unless(status == GEIS_STATUS_SUCCESS, "failure at enqueue(event1)");
86
GeisEvent event2 = geis_event_new(GEIS_EVENT_USER_DEFINED);
87
status = geis_event_queue_enqueue(g_queue, event2);
88
fail_unless(status == GEIS_STATUS_SUCCESS, "failure at enqueue(event2)");
90
GeisEvent event3 = geis_event_new(GEIS_EVENT_GESTURE_END);
91
status = geis_event_queue_enqueue(g_queue, event3);
92
fail_unless(status == GEIS_STATUS_SUCCESS, "failure at enqueue(event3)");
94
GeisEventType event_type = GEIS_EVENT_USER_DEFINED;
95
geis_event_queue_remove_if(g_queue, _is_event_type, &event_type);
97
event_type = GEIS_EVENT_GESTURE_BEGIN;
98
geis_event_queue_remove_if(g_queue, _is_event_type, &event_type);
100
event_type = GEIS_EVENT_GESTURE_END;
101
geis_event_queue_remove_if(g_queue, _is_event_type, &event_type);
103
fail_unless(geis_event_queue_is_empty(g_queue), "queue is not empty");
109
make_event_queue_suite()
111
Suite *s = suite_create("geis2-event-queue");
113
TCase *create = tcase_create("event-queue-creation");
114
tcase_add_test(create, construction);
115
suite_add_tcase(s, create);
117
TCase *usage = tcase_create("event-queue-operation");
118
tcase_add_checked_fixture(usage, construct_event_queue, destroy_event_queue);
119
tcase_add_test(usage, enqueue_dequeue);
120
tcase_add_test(usage, remove_if);
121
suite_add_tcase(s, usage);