~ubuntu-branches/ubuntu/trusty/geis/trusty

« back to all changes in this revision

Viewing changes to testsuite/libgeis/check_event_queue.c

  • Committer: Package Import Robot
  • Author(s): Chase Douglas
  • Date: 2012-07-30 08:51:42 UTC
  • Revision ID: package-import@ubuntu.com-20120730085142-jrc33ygjvt0ob1wl
Tags: upstream-2.2.11
ImportĀ upstreamĀ versionĀ 2.2.11

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 * unit tests for the geis_event_queue module
 
3
 */
 
4
#include <check.h>
 
5
 
 
6
#include "geis/geis.h"
 
7
#include "libgeis/geis_event.h"
 
8
#include "libgeis/geis_event_queue.h"
 
9
 
 
10
 
 
11
/* fixtures */
 
12
static GeisEventQueue g_queue;
 
13
 
 
14
/* fixture setup */
 
15
static void
 
16
construct_event_queue()
 
17
{
 
18
  g_queue = geis_event_queue_new();
 
19
}
 
20
 
 
21
/* fixture teardown */
 
22
static void
 
23
destroy_event_queue()
 
24
{
 
25
  geis_event_queue_delete(g_queue);
 
26
}
 
27
 
 
28
 
 
29
/* verify event queue construction/destruction */
 
30
START_TEST(construction)
 
31
{
 
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();
 
36
}
 
37
END_TEST
 
38
 
 
39
 
 
40
/* verify event_queue insertion */
 
41
START_TEST(enqueue_dequeue)
 
42
{
 
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);
 
46
  GeisEvent ev;
 
47
 
 
48
  ev = geis_event_queue_dequeue(g_queue);
 
49
  fail_unless(ev == NULL, "unexpected failure at pop(0)");
 
50
 
 
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)");
 
56
 
 
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)");
 
60
 
 
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)");
 
64
 
 
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");
 
68
}
 
69
END_TEST
 
70
 
 
71
/* verify event_queue remove_if */
 
72
static GeisBoolean
 
73
_is_event_type(GeisEvent event, void* context)
 
74
{
 
75
  GeisEventType event_type = *(GeisEventType*)context;
 
76
  return geis_event_type(event) == event_type;
 
77
}
 
78
 
 
79
START_TEST(remove_if)
 
80
{
 
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)");
 
85
 
 
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)");
 
89
 
 
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)");
 
93
 
 
94
  GeisEventType event_type = GEIS_EVENT_USER_DEFINED;
 
95
  geis_event_queue_remove_if(g_queue, _is_event_type, &event_type);
 
96
 
 
97
  event_type = GEIS_EVENT_GESTURE_BEGIN;
 
98
  geis_event_queue_remove_if(g_queue, _is_event_type, &event_type);
 
99
 
 
100
  event_type = GEIS_EVENT_GESTURE_END;
 
101
  geis_event_queue_remove_if(g_queue, _is_event_type, &event_type);
 
102
 
 
103
  fail_unless(geis_event_queue_is_empty(g_queue), "queue is not empty");
 
104
}
 
105
END_TEST
 
106
 
 
107
/* boilerplate */
 
108
Suite *
 
109
make_event_queue_suite()
 
110
{
 
111
  Suite *s = suite_create("geis2-event-queue");
 
112
 
 
113
  TCase *create = tcase_create("event-queue-creation");
 
114
  tcase_add_test(create, construction);
 
115
  suite_add_tcase(s, create);
 
116
 
 
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);
 
122
 
 
123
  return s;
 
124
}
 
125