1
#include <gtest/gtest.h>
2
#include "oif/frame_backend.h"
8
UFBackendTouch touch_backend = frame_backend_touch_new();
9
ASSERT_TRUE(touch_backend != nullptr);
11
UFTouch touch = frame_backend_touch_get_touch(touch_backend);
12
ASSERT_TRUE(touch != nullptr);
14
ASSERT_EQ(UFTouchStateBegin, frame_touch_get_state(touch));
16
frame_backend_touch_set_id(touch_backend, 123);
17
ASSERT_EQ(123, frame_touch_get_id(touch));
19
frame_backend_touch_set_ended(touch_backend);
20
ASSERT_EQ(UFTouchStateEnd, frame_touch_get_state(touch));
22
frame_backend_touch_set_window_pos(touch_backend, 1.2f, 3.4f);
23
ASSERT_EQ(1.2f, frame_touch_get_window_x(touch));
24
ASSERT_EQ(3.4f, frame_touch_get_window_y(touch));
26
frame_backend_touch_set_time(touch_backend, 852);
27
ASSERT_EQ(852, frame_touch_get_time(touch));
29
frame_backend_touch_set_start_time(touch_backend, 555);
30
ASSERT_EQ(555, frame_touch_get_start_time(touch));
32
frame_backend_touch_set_owned(touch_backend, 1);
34
status = frame_touch_get_property(touch, UFTouchPropertyOwned, &owned);
35
ASSERT_EQ(UFStatusSuccess, status);
38
frame_backend_touch_set_pending_end(touch_backend, 1);
40
status = frame_touch_get_property(touch, UFTouchPropertyPendingEnd, &pending_end);
41
ASSERT_EQ(UFStatusSuccess, status);
42
ASSERT_EQ(1, pending_end);
44
frame_backend_touch_set_value(touch_backend, UFAxisTypeTouchMajor, 987.6f);
45
float touch_major = 0.0f;
46
status = frame_touch_get_value(touch, UFAxisTypeTouchMajor, &touch_major);
47
ASSERT_EQ(UFStatusSuccess, status);
48
ASSERT_EQ(987.6f, touch_major);
51
UFBackendFrame frame = frame_backend_frame_new();
52
frame_backend_frame_give_touch(frame, &touch_backend);
53
frame_backend_frame_delete(frame);
60
UFBackendDevice device_backend = frame_backend_device_new();
61
ASSERT_NE(nullptr, device_backend);
63
UFDevice device = frame_backend_device_get_device(device_backend);
64
ASSERT_NE(nullptr, device);
66
const char *name = nullptr;
67
status = frame_device_get_property(device, UFDevicePropertyName, &name);
68
ASSERT_EQ(UFStatusErrorUnknownProperty, status);
69
frame_backend_device_set_name(device_backend, "Hello World");
70
status = frame_device_get_property(device, UFDevicePropertyName, &name);
71
ASSERT_EQ(UFStatusSuccess, status);
72
ASSERT_STREQ("Hello World", name);
75
status = frame_device_get_property(device, UFDevicePropertyDirect, &direct);
76
ASSERT_EQ(UFStatusErrorUnknownProperty, status);
77
frame_backend_device_set_direct(device_backend, 1);
78
status = frame_device_get_property(device, UFDevicePropertyDirect, &direct);
79
ASSERT_EQ(UFStatusSuccess, status);
83
status = frame_device_get_property(device, UFDevicePropertyIndependent, &independent);
84
ASSERT_EQ(UFStatusErrorUnknownProperty, status);
85
frame_backend_device_set_independent(device_backend, 1);
86
status = frame_device_get_property(device, UFDevicePropertyIndependent, &independent);
87
ASSERT_EQ(UFStatusSuccess, status);
88
ASSERT_EQ(1, independent);
91
status = frame_device_get_property(device, UFDevicePropertySemiMT, &semi_mt);
92
ASSERT_EQ(UFStatusErrorUnknownProperty, status);
93
frame_backend_device_set_semi_mt(device_backend, 1);
94
status = frame_device_get_property(device, UFDevicePropertySemiMT, &semi_mt);
95
ASSERT_EQ(UFStatusSuccess, status);
96
ASSERT_EQ(1, semi_mt);
98
unsigned int max_touches = 0;
99
status = frame_device_get_property(device, UFDevicePropertyMaxTouches, &max_touches);
100
ASSERT_EQ(UFStatusErrorUnknownProperty, status);
101
frame_backend_device_set_max_touches(device_backend, 5);
102
status = frame_device_get_property(device, UFDevicePropertyMaxTouches, &max_touches);
103
ASSERT_EQ(UFStatusSuccess, status);
104
ASSERT_EQ(5, max_touches);
106
frame_backend_device_set_window_resolution(device_backend, 1024.0f, 768.0f);
107
ASSERT_EQ(1024.0f, frame_device_get_window_resolution_x(device));
108
ASSERT_EQ(768.0f, frame_device_get_window_resolution_y(device));
110
unsigned int num_axes = 0;
111
status = frame_device_get_property(device, UFDevicePropertyNumAxes, &num_axes);
112
ASSERT_EQ(UFStatusSuccess, status);
113
ASSERT_EQ(0, num_axes);
114
frame_backend_device_add_axis(device_backend,
115
UFAxisTypePressure, 1.0f, 1000.0f, 3.5f);
116
status = frame_device_get_property(device, UFDevicePropertyNumAxes, &num_axes);
117
ASSERT_EQ(UFStatusSuccess, status);
118
ASSERT_EQ(1, num_axes);
119
UFAxis axis = nullptr;
120
status = frame_device_get_axis_by_type(device, UFAxisTypePressure, &axis);
121
ASSERT_EQ(UFStatusSuccess, status);
122
ASSERT_NE(nullptr, axis);
123
ASSERT_EQ(UFAxisTypePressure, frame_axis_get_type(axis));
124
ASSERT_EQ(1.0f, frame_axis_get_minimum(axis));
125
ASSERT_EQ(1000.0f, frame_axis_get_maximum(axis));
126
ASSERT_EQ(3.5f, frame_axis_get_resolution(axis));
128
frame_backend_device_delete(device_backend);
135
UFBackendFrame frame_backend = frame_backend_frame_new();
136
ASSERT_NE(nullptr, frame_backend);
138
UFFrame frame = frame_backend_frame_get_frame(frame_backend);
139
ASSERT_NE(nullptr, frame);
141
UFBackendDevice device_backend = frame_backend_device_new();
142
UFDevice device = frame_backend_device_get_device(device_backend);
144
frame_backend_frame_set_device(frame_backend, device_backend);
145
ASSERT_EQ(device, frame_frame_get_device(frame));
147
frame_backend_frame_set_window_id(frame_backend, 123);
148
ASSERT_EQ(123, frame_frame_get_window_id(frame));
151
unsigned int active_touches = 0;
152
UFBackendTouch touch_backend = frame_backend_touch_new();
153
UFTouch touch = frame_backend_touch_get_touch(touch_backend);
154
frame_backend_touch_set_id(touch_backend, 10);
155
UFTouch touch_retrieved = nullptr;
156
ASSERT_EQ(0, frame_frame_get_num_touches(frame));
157
status = frame_frame_get_property(frame, UFFramePropertyActiveTouches, &active_touches);
158
ASSERT_EQ(UFStatusSuccess, status);
159
ASSERT_EQ(0, active_touches);
160
status = frame_backend_frame_give_touch(frame_backend, &touch_backend);
161
ASSERT_EQ(UFStatusSuccess, status);
162
ASSERT_EQ(nullptr, touch_backend);
163
ASSERT_EQ(1, frame_frame_get_num_touches(frame));
164
status = frame_frame_get_property(frame, UFFramePropertyActiveTouches, &active_touches);
165
ASSERT_EQ(UFStatusSuccess, status);
166
ASSERT_EQ(1, active_touches);
167
status = frame_frame_get_touch_by_id(frame, 10, &touch_retrieved);
168
ASSERT_EQ(UFStatusSuccess, status);
169
ASSERT_EQ(touch, touch_retrieved);
171
frame_backend_frame_set_active_touches(frame_backend, 3);
172
status = frame_frame_get_property(frame, UFFramePropertyActiveTouches, &active_touches);
173
ASSERT_EQ(UFStatusSuccess, status);
174
ASSERT_EQ(3, active_touches);
176
frame_backend_frame_delete(frame_backend);
177
frame_backend_device_delete(device_backend);
180
TEST(Backend, FrameBorrowInexistentTouch)
184
UFBackendFrame frame_backend = frame_backend_frame_new();
186
UFBackendTouch touch_backend;
187
status = frame_backend_frame_borrow_touch_by_id(frame_backend, 123, &touch_backend);
188
ASSERT_EQ(UFStatusErrorInvalidTouch, status);
191
frame_backend_frame_delete(frame_backend);
194
TEST(Backend, FrameCreateNext)
199
UFBackendTouch touch_backend = frame_backend_touch_new();
200
frame_backend_touch_set_id(touch_backend, 1);
201
UFTouch frame1_touch = frame_backend_touch_get_touch(touch_backend);
203
UFBackendFrame frame1_backend = frame_backend_frame_new();
204
status = frame_backend_frame_give_touch(frame1_backend, &touch_backend);
205
ASSERT_EQ(UFStatusSuccess, status);
208
UFBackendFrame frame2_backend = frame_backend_frame_create_next(frame1_backend);
209
UFFrame frame2 = frame_backend_frame_get_frame(frame2_backend);
211
UFTouch frame2_touch;
212
status = frame_frame_get_touch_by_id(frame2, 1, &frame2_touch);
213
ASSERT_EQ(UFStatusSuccess, status);
216
UFBackendFrame frame3_backend = frame_backend_frame_create_next(frame2_backend);
217
UFFrame frame3 = frame_backend_frame_get_frame(frame3_backend);
219
UFTouch frame3_touch;
220
status = frame_frame_get_touch_by_id(frame3, 1, &frame3_touch);
221
ASSERT_EQ(UFStatusSuccess, status);
224
UFBackendFrame frame4_backend = frame_backend_frame_create_next(frame3_backend);
226
status = frame_backend_frame_borrow_touch_by_id(frame4_backend, 1, &touch_backend);
227
ASSERT_EQ(UFStatusSuccess, status);
228
frame_backend_touch_set_ended(touch_backend);
229
status = frame_backend_frame_give_touch(frame4_backend, &touch_backend);
230
ASSERT_EQ(UFStatusSuccess, status);
232
UFFrame frame4 = frame_backend_frame_get_frame(frame4_backend);
233
UFTouch frame4_touch;
234
status = frame_frame_get_touch_by_id(frame4, 1, &frame4_touch);
235
ASSERT_EQ(UFStatusSuccess, status);
238
UFBackendFrame frame5_backend = frame_backend_frame_create_next(frame4_backend);
239
UFFrame frame5 = frame_backend_frame_get_frame(frame5_backend);
241
/* Test the status of touch 1 throughout all frames */
242
ASSERT_EQ(UFTouchStateBegin, frame_touch_get_state(frame1_touch));
243
ASSERT_EQ(UFTouchStateUpdate, frame_touch_get_state(frame2_touch));
244
ASSERT_EQ(UFTouchStateUpdate, frame_touch_get_state(frame3_touch));
245
ASSERT_EQ(frame2_touch, frame3_touch);
246
ASSERT_EQ(UFTouchStateEnd, frame_touch_get_state(frame4_touch));
247
ASSERT_EQ(0, frame_frame_get_num_touches(frame5));
250
frame_backend_frame_delete(frame1_backend);
251
frame_backend_frame_delete(frame2_backend);
252
frame_backend_frame_delete(frame3_backend);
253
frame_backend_frame_delete(frame4_backend);
254
frame_backend_frame_delete(frame5_backend);
261
UFEvent event = frame_event_new();
262
ASSERT_NE(nullptr, event);
264
frame_event_set_type(event, UFEventTypeDeviceRemoved);
265
ASSERT_EQ(UFEventTypeDeviceRemoved, frame_event_get_type(event));
267
UFBackendDevice device_backend = frame_backend_device_new();
268
UFDevice device = frame_backend_device_get_device(device_backend);
269
UFDevice device_retrieved = nullptr;
270
frame_event_set_device(event, device_backend);
271
status = frame_event_get_property(event, UFEventPropertyDevice, &device_retrieved);
272
ASSERT_EQ(UFStatusSuccess, status);
273
ASSERT_EQ(device, device_retrieved);
275
UFBackendFrame frame_backend = frame_backend_frame_new();
276
UFFrame frame = frame_backend_frame_get_frame(frame_backend);
277
UFFrame frame_retrieved = nullptr;
278
frame_event_set_frame(event, frame_backend);
279
status = frame_event_get_property(event, UFEventPropertyFrame, &frame_retrieved);
280
ASSERT_EQ(UFStatusSuccess, status);
281
ASSERT_EQ(frame, frame_retrieved);
283
frame_event_set_time(event, 1234);
284
ASSERT_EQ(1234, frame_event_get_time(event));
286
frame_event_unref(event);
287
frame_backend_device_delete(device_backend);
288
frame_backend_frame_delete(frame_backend);