Line | Branch | Exec | Source |
---|---|---|---|
1 | /* | ||
2 | * Unit tests for the internal fingerprint drivers API | ||
3 | * Copyright (C) 2019 Marco Trevisan <marco.trevisan@canonical.com> | ||
4 | * | ||
5 | * This library is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU Lesser General Public | ||
7 | * License as published by the Free Software Foundation; either | ||
8 | * version 2.1 of the License, or (at your option) any later version. | ||
9 | * | ||
10 | * This library is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | * Lesser General Public License for more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU Lesser General Public | ||
16 | * License along with this library; if not, write to the Free Software | ||
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
18 | */ | ||
19 | |||
20 | #include "fp-device.h" | ||
21 | #include "fp-enums.h" | ||
22 | #include <libfprint/fprint.h> | ||
23 | |||
24 | #define FP_COMPONENT "device" | ||
25 | |||
26 | #include "fpi-device.h" | ||
27 | #include "fpi-compat.h" | ||
28 | #include "fpi-log.h" | ||
29 | #include "test-device-fake.h" | ||
30 | #include "fp-print-private.h" | ||
31 | |||
32 | /* gcc 12.0.1 is complaining about dangling pointers in the auto_close* functions */ | ||
33 | #if G_GNUC_CHECK_VERSION (12, 0) | ||
34 | #pragma GCC diagnostic push | ||
35 | #pragma GCC diagnostic ignored "-Wdangling-pointer" | ||
36 | #endif | ||
37 | |||
38 | /* Utility functions */ | ||
39 | |||
40 | typedef FpDevice FpAutoCloseDevice; | ||
41 | |||
42 | static FpAutoCloseDevice * | ||
43 | 33 | auto_close_fake_device_new (void) | |
44 | { | ||
45 | 66 | g_autoptr(GError) error = NULL; | |
46 | 33 | FpAutoCloseDevice *device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
47 | |||
48 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 33 times.
|
33 | if (!fp_device_open_sync (device, NULL, &error)) |
49 | ✗ | g_error ("Could not open device: %s", error->message); | |
50 | |||
51 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 33 times.
|
33 | return device; |
52 | } | ||
53 | |||
54 | static void | ||
55 | 50 | auto_close_fake_device_free (FpAutoCloseDevice *device) | |
56 | { | ||
57 | 100 | g_autoptr(GError) error = NULL; | |
58 | 50 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
59 | |||
60 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 48 times.
|
50 | if (fake_dev->return_action_error) |
61 | { | ||
62 | 2 | fake_dev->return_action_error = FALSE; | |
63 | 2 | fake_dev->ret_error = NULL; | |
64 | } | ||
65 | |||
66 |
2/2✓ Branch 1 taken 46 times.
✓ Branch 2 taken 4 times.
|
50 | if (fp_device_is_open (device)) |
67 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 46 times.
|
46 | if (!fp_device_close_sync (device, NULL, &error)) |
68 | ✗ | g_error ("Could not close device: %s", error->message); | |
69 | |||
70 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 50 times.
|
50 | g_object_unref (device); |
71 | 50 | } | |
72 | 3 | G_DEFINE_AUTOPTR_CLEANUP_FUNC (FpAutoCloseDevice, auto_close_fake_device_free) | |
73 | |||
74 | #if G_GNUC_CHECK_VERSION (12, 0) | ||
75 | #pragma GCC diagnostic pop | ||
76 | #endif | ||
77 | |||
78 | typedef FpDeviceClass FpAutoResetClass; | ||
79 | static FpAutoResetClass default_fake_dev_class = {0}; | ||
80 | |||
81 | static FpAutoResetClass * | ||
82 | 51 | auto_reset_device_class (void) | |
83 | { | ||
84 | 102 | g_autoptr(FpDeviceClass) type_class = NULL; | |
85 | 51 | FpDeviceClass *dev_class = g_type_class_peek_static (FPI_TYPE_DEVICE_FAKE); | |
86 | |||
87 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 50 times.
|
51 | if (!dev_class) |
88 | { | ||
89 | 1 | type_class = g_type_class_ref (FPI_TYPE_DEVICE_FAKE); | |
90 | 1 | dev_class = type_class; | |
91 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_nonnull (dev_class); |
92 | } | ||
93 | |||
94 | 51 | default_fake_dev_class = *dev_class; | |
95 | |||
96 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 50 times.
|
51 | return dev_class; |
97 | } | ||
98 | |||
99 | static void | ||
100 | 51 | auto_reset_device_class_cleanup (FpAutoResetClass *dev_class) | |
101 | { | ||
102 | 51 | *dev_class = default_fake_dev_class; | |
103 | |||
104 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 51 times.
|
51 | g_assert_cmpint (memcmp (dev_class, &default_fake_dev_class, |
105 | sizeof (FpAutoResetClass)), ==, 0); | ||
106 | 51 | } | |
107 | 4 | G_DEFINE_AUTOPTR_CLEANUP_FUNC (FpAutoResetClass, auto_reset_device_class_cleanup) | |
108 | |||
109 | |||
110 | static void | ||
111 | 3 | assert_equal_galleries (GPtrArray *g1, | |
112 | GPtrArray *g2) | ||
113 | { | ||
114 | 3 | unsigned i; | |
115 | |||
116 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
3 | g_assert ((g1 && g2) || (!g1 || !g1)); |
117 | |||
118 |
1/2✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
|
3 | if (g1 == g2) |
119 | return; | ||
120 | |||
121 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
|
3 | g_assert_cmpuint (g1->len, ==, g2->len); |
122 | |||
123 |
2/2✓ Branch 0 taken 1500 times.
✓ Branch 1 taken 3 times.
|
1503 | for (i = 0; i < g1->len; i++) |
124 | { | ||
125 | 1500 | FpPrint *print = g_ptr_array_index (g1, i); | |
126 | |||
127 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1500 times.
|
1500 | g_assert_true (g_ptr_array_find_with_equal_func (g2, print, (GEqualFunc) |
128 | fp_print_equal, NULL)); | ||
129 | } | ||
130 | } | ||
131 | |||
132 | static void | ||
133 | 9 | on_device_notify (FpDevice *device, GParamSpec *spec, gpointer user_data) | |
134 | { | ||
135 | 9 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
136 | |||
137 | 9 | fake_dev->last_called_function = on_device_notify; | |
138 | 9 | fake_dev->user_data = g_param_spec_ref (spec); | |
139 | 9 | } | |
140 | |||
141 | static FpPrint * | ||
142 | 5526 | make_fake_print (FpDevice *device, | |
143 | GVariant *print_data) | ||
144 | { | ||
145 | 5526 | FpPrint *enrolled_print = fp_print_new (device); | |
146 | |||
147 | 5526 | fpi_print_set_type (enrolled_print, FPI_PRINT_RAW); | |
148 | |||
149 |
2/2✓ Branch 0 taken 23 times.
✓ Branch 1 taken 5503 times.
|
5526 | if (!print_data) |
150 | 23 | print_data = g_variant_new_string ("Test print private data"); | |
151 | 5526 | g_object_set (G_OBJECT (enrolled_print), "fpi-data", print_data, NULL); | |
152 | |||
153 | 5526 | return enrolled_print; | |
154 | } | ||
155 | |||
156 | static FpPrint * | ||
157 | 4 | make_fake_nbis_print (FpDevice *device) | |
158 | { | ||
159 | 4 | FpPrint *enrolled_print = fp_print_new (device); | |
160 | |||
161 | 4 | fpi_print_set_type (enrolled_print, FPI_PRINT_NBIS); | |
162 | |||
163 | 4 | return enrolled_print; | |
164 | } | ||
165 | |||
166 | static FpPrint * | ||
167 | 5519 | make_fake_print_reffed (FpDevice *device, | |
168 | GVariant *print_data) | ||
169 | { | ||
170 | 5519 | return g_object_ref_sink (make_fake_print (device, print_data)); | |
171 | } | ||
172 | |||
173 | static GPtrArray * | ||
174 | 14 | make_fake_prints_gallery (FpDevice *device, | |
175 | size_t size) | ||
176 | { | ||
177 | 14 | GPtrArray *array; | |
178 | 14 | size_t i; | |
179 | |||
180 | 14 | array = g_ptr_array_new_full (size, g_object_unref); | |
181 | |||
182 |
2/2✓ Branch 1 taken 5500 times.
✓ Branch 2 taken 14 times.
|
5528 | for (i = 0; i < size; i++) |
183 | 5500 | g_ptr_array_add (array, make_fake_print_reffed (device, g_variant_new_uint64 (i))); | |
184 | |||
185 | 14 | return array; | |
186 | } | ||
187 | |||
188 | /* Tests */ | ||
189 | |||
190 | static void | ||
191 | 1 | test_driver_get_driver (void) | |
192 | { | ||
193 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
194 | 1 | g_autoptr(FpDevice) device = NULL; | |
195 | |||
196 | 1 | dev_class->id = "test-fpi-device-driver"; | |
197 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
198 | |||
199 |
2/4✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | g_assert_cmpstr (fp_device_get_driver (device), ==, "test-fpi-device-driver"); |
200 | 1 | } | |
201 | |||
202 | static void | ||
203 | 1 | test_driver_get_device_id (void) | |
204 | { | ||
205 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
206 | |||
207 |
2/4✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | g_assert_cmpstr (fp_device_get_device_id (device), ==, "0"); |
208 | 1 | } | |
209 | |||
210 | static void | ||
211 | 1 | test_driver_get_name (void) | |
212 | { | ||
213 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
214 | 1 | g_autoptr(FpDevice) device = NULL; | |
215 | |||
216 | 1 | dev_class->full_name = "Test Device Full Name!"; | |
217 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
218 | |||
219 |
2/4✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | g_assert_cmpstr (fp_device_get_name (device), ==, "Test Device Full Name!"); |
220 | 1 | } | |
221 | |||
222 | static void | ||
223 | 1 | test_driver_is_open (void) | |
224 | { | ||
225 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
226 | |||
227 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_is_open (device)); |
228 | 1 | fp_device_open_sync (device, NULL, NULL); | |
229 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_is_open (device)); |
230 | 1 | fp_device_close_sync (FP_DEVICE (device), NULL, NULL); | |
231 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_false (fp_device_is_open (device)); |
232 | 1 | } | |
233 | |||
234 | static void | ||
235 | 1 | test_driver_get_scan_type_press (void) | |
236 | { | ||
237 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
238 | 1 | g_autoptr(FpDevice) device = NULL; | |
239 | |||
240 | 1 | dev_class->scan_type = FP_SCAN_TYPE_PRESS; | |
241 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
242 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_cmpuint (fp_device_get_scan_type (device), ==, FP_SCAN_TYPE_PRESS); |
243 | 1 | } | |
244 | |||
245 | static void | ||
246 | 1 | test_driver_get_scan_type_swipe (void) | |
247 | { | ||
248 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
249 | 1 | g_autoptr(FpDevice) device = NULL; | |
250 | |||
251 | 1 | dev_class->scan_type = FP_SCAN_TYPE_SWIPE; | |
252 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
253 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_cmpuint (fp_device_get_scan_type (device), ==, FP_SCAN_TYPE_SWIPE); |
254 | 1 | } | |
255 | |||
256 | static void | ||
257 | 1 | test_driver_set_scan_type_press (void) | |
258 | { | ||
259 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
260 | 1 | g_autoptr(GParamSpec) pspec = NULL; | |
261 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
262 | |||
263 | 1 | g_signal_connect (device, "notify::scan-type", G_CALLBACK (on_device_notify), NULL); | |
264 | |||
265 | 1 | fpi_device_set_scan_type (device, FP_SCAN_TYPE_PRESS); | |
266 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fp_device_get_scan_type (device), ==, FP_SCAN_TYPE_PRESS); |
267 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == on_device_notify); |
268 | |||
269 | 1 | pspec = g_steal_pointer (&fake_dev->user_data); | |
270 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpstr (pspec->name, ==, "scan-type"); |
271 | 1 | } | |
272 | |||
273 | static void | ||
274 | 1 | test_driver_set_scan_type_swipe (void) | |
275 | { | ||
276 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
277 | 1 | g_autoptr(GParamSpec) pspec = NULL; | |
278 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
279 | |||
280 | 1 | g_signal_connect (device, "notify::scan-type", G_CALLBACK (on_device_notify), NULL); | |
281 | |||
282 | 1 | fpi_device_set_scan_type (device, FP_SCAN_TYPE_SWIPE); | |
283 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fp_device_get_scan_type (device), ==, FP_SCAN_TYPE_SWIPE); |
284 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == on_device_notify); |
285 | |||
286 | 1 | pspec = g_steal_pointer (&fake_dev->user_data); | |
287 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpstr (pspec->name, ==, "scan-type"); |
288 | 1 | } | |
289 | |||
290 | static void | ||
291 | 1 | test_driver_finger_status_inactive (void) | |
292 | { | ||
293 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
294 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
295 | 1 | FpFingerStatusFlags finger_status; | |
296 | |||
297 | 1 | g_signal_connect (device, "notify::finger-status", G_CALLBACK (on_device_notify), NULL); | |
298 | |||
299 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fpi_device_report_finger_status (device, FP_FINGER_STATUS_NONE)); |
300 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fp_device_get_finger_status (device), ==, FP_FINGER_STATUS_NONE); |
301 | |||
302 | 1 | g_object_get (fake_dev, "finger-status", &finger_status, NULL); | |
303 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (finger_status, ==, FP_FINGER_STATUS_NONE); |
304 | |||
305 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function != on_device_notify); |
306 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (g_steal_pointer (&fake_dev->user_data)); |
307 | 1 | } | |
308 | |||
309 | static void | ||
310 | 1 | test_driver_finger_status_needed (void) | |
311 | { | ||
312 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
313 | 1 | g_autoptr(GParamSpec) pspec = NULL; | |
314 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
315 | 1 | FpFingerStatusFlags finger_status; | |
316 | |||
317 | 1 | g_signal_connect (device, "notify::finger-status", G_CALLBACK (on_device_notify), NULL); | |
318 | |||
319 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fpi_device_report_finger_status (device, FP_FINGER_STATUS_NEEDED)); |
320 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fp_device_get_finger_status (device), ==, FP_FINGER_STATUS_NEEDED); |
321 | |||
322 | 1 | g_object_get (fake_dev, "finger-status", &finger_status, NULL); | |
323 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (finger_status, ==, FP_FINGER_STATUS_NEEDED); |
324 | |||
325 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == on_device_notify); |
326 | 1 | pspec = g_steal_pointer (&fake_dev->user_data); | |
327 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpstr (pspec->name, ==, "finger-status"); |
328 | |||
329 | 1 | fake_dev->last_called_function = NULL; | |
330 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fpi_device_report_finger_status (device, FP_FINGER_STATUS_NEEDED)); |
331 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (fake_dev->last_called_function); |
332 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (g_steal_pointer (&fake_dev->user_data)); |
333 | 1 | } | |
334 | |||
335 | static void | ||
336 | 1 | test_driver_finger_status_present (void) | |
337 | { | ||
338 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
339 | 1 | g_autoptr(GParamSpec) pspec = NULL; | |
340 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
341 | 1 | FpFingerStatusFlags finger_status; | |
342 | |||
343 | 1 | g_signal_connect (device, "notify::finger-status", G_CALLBACK (on_device_notify), NULL); | |
344 | |||
345 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fpi_device_report_finger_status (device, FP_FINGER_STATUS_PRESENT)); |
346 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fp_device_get_finger_status (device), ==, FP_FINGER_STATUS_PRESENT); |
347 | |||
348 | 1 | g_object_get (fake_dev, "finger-status", &finger_status, NULL); | |
349 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (finger_status, ==, FP_FINGER_STATUS_PRESENT); |
350 | |||
351 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == on_device_notify); |
352 | 1 | pspec = g_steal_pointer (&fake_dev->user_data); | |
353 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpstr (pspec->name, ==, "finger-status"); |
354 | |||
355 | 1 | fake_dev->last_called_function = NULL; | |
356 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fpi_device_report_finger_status (device, FP_FINGER_STATUS_PRESENT)); |
357 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (fake_dev->last_called_function); |
358 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (g_steal_pointer (&fake_dev->user_data)); |
359 | 1 | } | |
360 | |||
361 | static void | ||
362 | 2 | driver_finger_status_changes_check (FpDevice *device, gboolean add) | |
363 | { | ||
364 | 2 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
365 | |||
366 | 2 | g_autoptr(GFlagsClass) status_class = g_type_class_ref (FP_TYPE_FINGER_STATUS_FLAGS); | |
367 | 2 | guint expected_status; | |
368 | 2 | guint initial_value; | |
369 | 2 | guint i; | |
370 | 2 | gulong signal_id; | |
371 | |||
372 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
|
2 | if (add) |
373 | initial_value = FP_FINGER_STATUS_NONE; | ||
374 | else | ||
375 | 1 | initial_value = status_class->mask; | |
376 | |||
377 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
|
2 | g_assert_cmpuint (fp_device_get_finger_status (device), ==, initial_value); |
378 | |||
379 | 2 | signal_id = g_signal_connect (device, "notify::finger-status", | |
380 | G_CALLBACK (on_device_notify), NULL); | ||
381 | |||
382 |
2/2✓ Branch 1 taken 6 times.
✓ Branch 2 taken 2 times.
|
10 | for (i = 0, expected_status = initial_value; i < status_class->n_values; ++i) |
383 | { | ||
384 | 6 | g_autoptr(GParamSpec) pspec = NULL; | |
385 | 6 | FpFingerStatusFlags finger_status = status_class->values[i].value; | |
386 |
2/2✓ Branch 0 taken 3 times.
✓ Branch 1 taken 3 times.
|
6 | FpFingerStatusFlags added_status = add ? finger_status : FP_FINGER_STATUS_NONE; |
387 | 3 | FpFingerStatusFlags removed_status = add ? FP_FINGER_STATUS_NONE : finger_status; | |
388 | 6 | gboolean ret; | |
389 | |||
390 | 6 | fake_dev->last_called_function = NULL; | |
391 | 6 | ret = fpi_device_report_finger_status_changes (device, | |
392 | added_status, | ||
393 | removed_status); | ||
394 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 2 times.
|
6 | if (finger_status != FP_FINGER_STATUS_NONE) |
395 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
|
4 | g_assert_true (ret); |
396 | else | ||
397 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
2 | g_assert_false (ret); |
398 | |||
399 | 6 | expected_status |= added_status; | |
400 | 6 | expected_status &= ~removed_status; | |
401 | |||
402 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
|
6 | g_assert_cmpuint (fp_device_get_finger_status (device), ==, expected_status); |
403 | |||
404 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 2 times.
|
6 | if (finger_status != FP_FINGER_STATUS_NONE) |
405 | { | ||
406 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
|
4 | g_assert (fake_dev->last_called_function == on_device_notify); |
407 | 4 | pspec = g_steal_pointer (&fake_dev->user_data); | |
408 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | g_assert_cmpstr (pspec->name, ==, "finger-status"); |
409 | } | ||
410 | |||
411 | 6 | fake_dev->last_called_function = NULL; | |
412 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
|
6 | g_assert_false (fpi_device_report_finger_status_changes (device, |
413 | added_status, | ||
414 | removed_status)); | ||
415 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
|
6 | g_assert_null (fake_dev->last_called_function); |
416 |
3/4✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 2 times.
|
6 | g_assert_null (g_steal_pointer (&fake_dev->user_data)); |
417 | } | ||
418 | |||
419 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
|
2 | if (add) |
420 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fp_device_get_finger_status (device), ==, status_class->mask); |
421 | else | ||
422 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fp_device_get_finger_status (device), ==, FP_FINGER_STATUS_NONE); |
423 | |||
424 | 2 | fake_dev->last_called_function = NULL; | |
425 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
|
2 | g_assert_false (fpi_device_report_finger_status_changes (device, |
426 | FP_FINGER_STATUS_NONE, | ||
427 | FP_FINGER_STATUS_NONE)); | ||
428 | |||
429 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
2 | g_assert_null (fake_dev->last_called_function); |
430 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
2 | g_assert_null (g_steal_pointer (&fake_dev->user_data)); |
431 | |||
432 | 2 | g_signal_handler_disconnect (device, signal_id); | |
433 | 2 | } | |
434 | |||
435 | static void | ||
436 | 1 | test_driver_finger_status_changes (void) | |
437 | { | ||
438 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
439 | |||
440 | 1 | driver_finger_status_changes_check (device, TRUE); | |
441 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | driver_finger_status_changes_check (device, FALSE); |
442 | 1 | } | |
443 | |||
444 | static void | ||
445 | 1 | test_driver_get_nr_enroll_stages (void) | |
446 | { | ||
447 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
448 | 1 | g_autoptr(FpDevice) device = NULL; | |
449 | 1 | int expected_stages = g_random_int_range (G_MININT32, G_MAXINT32); | |
450 | |||
451 | 1 | dev_class->nr_enroll_stages = expected_stages; | |
452 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
453 | |||
454 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_cmpint (fp_device_get_nr_enroll_stages (device), ==, expected_stages); |
455 | 1 | } | |
456 | |||
457 | static void | ||
458 | 1 | test_driver_set_nr_enroll_stages (void) | |
459 | { | ||
460 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
461 | 1 | g_autoptr(GParamSpec) pspec = NULL; | |
462 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
463 | 1 | int expected_stages = g_random_int_range (1, G_MAXINT32); | |
464 | |||
465 | 1 | g_signal_connect (device, "notify::nr-enroll-stages", G_CALLBACK (on_device_notify), NULL); | |
466 | 1 | fpi_device_set_nr_enroll_stages (device, expected_stages); | |
467 | |||
468 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (fp_device_get_nr_enroll_stages (device), ==, expected_stages); |
469 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == on_device_notify); |
470 | |||
471 | 1 | pspec = g_steal_pointer (&fake_dev->user_data); | |
472 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpstr (pspec->name, ==, "nr-enroll-stages"); |
473 | |||
474 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
475 | "*enroll_stages > 0*"); | ||
476 | 1 | fpi_device_set_nr_enroll_stages (device, 0); | |
477 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (fp_device_get_nr_enroll_stages (device), ==, expected_stages); |
478 | 1 | g_test_assert_expected_messages (); | |
479 | |||
480 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
481 | "*enroll_stages > 0*"); | ||
482 | 1 | fpi_device_set_nr_enroll_stages (device, -2); | |
483 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (fp_device_get_nr_enroll_stages (device), ==, expected_stages); |
484 | 1 | g_test_assert_expected_messages (); | |
485 | 1 | } | |
486 | |||
487 | static void | ||
488 | 1 | test_driver_get_usb_device (void) | |
489 | { | ||
490 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
491 | 1 | g_autoptr(FpDevice) device = NULL; | |
492 | |||
493 | 1 | dev_class->type = FP_DEVICE_TYPE_USB; | |
494 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, "fpi-usb-device", NULL, NULL); | |
495 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_null (fpi_device_get_usb_device (device)); |
496 | |||
497 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_clear_object (&device); |
498 | 1 | dev_class->type = FP_DEVICE_TYPE_VIRTUAL; | |
499 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
500 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
501 | "*assertion*type*FP_DEVICE_TYPE_USB*failed*"); | ||
502 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_null (fpi_device_get_usb_device (device)); |
503 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | g_test_assert_expected_messages (); |
504 | 1 | } | |
505 | |||
506 | static void | ||
507 | 1 | test_driver_get_virtual_env (void) | |
508 | { | ||
509 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
510 | 1 | g_autoptr(FpDevice) device = NULL; | |
511 | |||
512 | 1 | dev_class->type = FP_DEVICE_TYPE_VIRTUAL; | |
513 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, "fpi-environ", "TEST_VIRTUAL_ENV_GETTER", NULL); | |
514 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | g_assert_cmpstr (fpi_device_get_virtual_env (device), ==, "TEST_VIRTUAL_ENV_GETTER"); |
515 | |||
516 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_clear_object (&device); |
517 | 1 | dev_class->type = FP_DEVICE_TYPE_USB; | |
518 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
519 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
520 | "*assertion*type*FP_DEVICE_TYPE_VIRTUAL*failed*"); | ||
521 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_null (fpi_device_get_virtual_env (device)); |
522 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | g_test_assert_expected_messages (); |
523 | 1 | } | |
524 | |||
525 | static void | ||
526 | 1 | test_driver_get_driver_data (void) | |
527 | { | ||
528 | 2 | g_autoptr(FpDevice) device = NULL; | |
529 | 1 | guint64 driver_data; | |
530 | |||
531 | 1 | driver_data = g_random_int (); | |
532 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, "fpi-driver-data", driver_data, NULL); | |
533 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_cmpuint (fpi_device_get_driver_data (device), ==, driver_data); |
534 | 1 | } | |
535 | |||
536 | static void | ||
537 | 1 | test_driver_features_probe_updates (void) | |
538 | { | ||
539 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
540 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); |
541 | 1 | FpiDeviceFake *fake_dev; | |
542 | |||
543 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (dev_class->features, !=, FP_DEVICE_FEATURE_NONE); |
544 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_CAPTURE); |
545 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_IDENTIFY); |
546 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_VERIFY); |
547 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_DUPLICATES_CHECK); |
548 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE); |
549 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_LIST); |
550 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_DELETE); |
551 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_CLEAR); |
552 | |||
553 | /* Effectively clears FP_DEVICE_FEATURE_STORAGE_DELETE */ | ||
554 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
555 | 1 | fake_dev->probe_features_update = FP_DEVICE_FEATURE_STORAGE_LIST | FP_DEVICE_FEATURE_STORAGE_DELETE; | |
556 | 1 | fake_dev->probe_features_value = FP_DEVICE_FEATURE_STORAGE_LIST; | |
557 | |||
558 | 1 | g_async_initable_init_async (G_ASYNC_INITABLE (device), | |
559 | G_PRIORITY_DEFAULT, NULL, NULL, NULL); | ||
560 |
2/2✓ Branch 2 taken 2 times.
✓ Branch 3 taken 1 times.
|
3 | while (g_main_context_iteration (NULL, FALSE)) |
561 | 2 | continue; | |
562 | |||
563 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_CAPTURE)); |
564 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_IDENTIFY)); |
565 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_VERIFY)); |
566 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_has_feature (device, FP_DEVICE_FEATURE_DUPLICATES_CHECK)); |
567 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_STORAGE)); |
568 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_STORAGE_LIST)); |
569 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_has_feature (device, FP_DEVICE_FEATURE_STORAGE_DELETE)); |
570 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_STORAGE_CLEAR)); |
571 | |||
572 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fp_device_get_features (device), |
573 | ==, | ||
574 | FP_DEVICE_FEATURE_CAPTURE | | ||
575 | FP_DEVICE_FEATURE_IDENTIFY | | ||
576 | FP_DEVICE_FEATURE_VERIFY | | ||
577 | FP_DEVICE_FEATURE_STORAGE | | ||
578 | FP_DEVICE_FEATURE_STORAGE_LIST | | ||
579 | FP_DEVICE_FEATURE_STORAGE_CLEAR); | ||
580 | 1 | } | |
581 | |||
582 | static void | ||
583 | 1 | test_driver_initial_features (void) | |
584 | { | ||
585 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
586 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); |
587 | |||
588 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (dev_class->features, !=, FP_DEVICE_FEATURE_NONE); |
589 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_CAPTURE); |
590 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_IDENTIFY); |
591 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_VERIFY); |
592 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_DUPLICATES_CHECK); |
593 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE); |
594 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_LIST); |
595 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_DELETE); |
596 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_CLEAR); |
597 | |||
598 | 1 | g_async_initable_init_async (G_ASYNC_INITABLE (device), | |
599 | G_PRIORITY_DEFAULT, NULL, NULL, NULL); | ||
600 |
2/2✓ Branch 2 taken 2 times.
✓ Branch 3 taken 1 times.
|
3 | while (g_main_context_iteration (NULL, FALSE)) |
601 | 2 | continue; | |
602 | |||
603 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_CAPTURE)); |
604 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_IDENTIFY)); |
605 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_VERIFY)); |
606 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_has_feature (device, FP_DEVICE_FEATURE_DUPLICATES_CHECK)); |
607 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_STORAGE)); |
608 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_STORAGE_LIST)); |
609 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_STORAGE_DELETE)); |
610 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_STORAGE_CLEAR)); |
611 | |||
612 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fp_device_get_features (device), |
613 | ==, | ||
614 | FP_DEVICE_FEATURE_CAPTURE | | ||
615 | FP_DEVICE_FEATURE_IDENTIFY | | ||
616 | FP_DEVICE_FEATURE_VERIFY | | ||
617 | FP_DEVICE_FEATURE_STORAGE | | ||
618 | FP_DEVICE_FEATURE_STORAGE_LIST | | ||
619 | FP_DEVICE_FEATURE_STORAGE_DELETE | | ||
620 | FP_DEVICE_FEATURE_STORAGE_CLEAR); | ||
621 | 1 | } | |
622 | |||
623 | static void | ||
624 | 1 | test_driver_initial_features_none (void) | |
625 | { | ||
626 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
627 | |||
628 | 1 | dev_class->list = NULL; | |
629 | 1 | dev_class->capture = NULL; | |
630 | 1 | dev_class->verify = NULL; | |
631 | 1 | dev_class->identify = NULL; | |
632 | 1 | dev_class->delete = NULL; | |
633 | 1 | dev_class->clear_storage = NULL; | |
634 | 1 | dev_class->features = FP_DEVICE_FEATURE_NONE; | |
635 | |||
636 | 1 | fpi_device_class_auto_initialize_features (dev_class); | |
637 | |||
638 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (dev_class->features, ==, FP_DEVICE_FEATURE_NONE); |
639 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_CAPTURE); |
640 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_IDENTIFY); |
641 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_VERIFY); |
642 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_DUPLICATES_CHECK); |
643 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_STORAGE); |
644 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_STORAGE_LIST); |
645 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_STORAGE_DELETE); |
646 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_STORAGE_CLEAR); |
647 | 1 | } | |
648 | |||
649 | static void | ||
650 | 1 | test_driver_initial_features_no_capture (void) | |
651 | { | ||
652 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
653 | |||
654 | 1 | dev_class->capture = NULL; | |
655 | 1 | dev_class->features = FP_DEVICE_FEATURE_NONE; | |
656 | |||
657 | 1 | fpi_device_class_auto_initialize_features (dev_class); | |
658 | |||
659 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (dev_class->features, !=, FP_DEVICE_FEATURE_NONE); |
660 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_CAPTURE); |
661 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_IDENTIFY); |
662 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_VERIFY); |
663 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_DUPLICATES_CHECK); |
664 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE); |
665 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_LIST); |
666 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_DELETE); |
667 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_CLEAR); |
668 | 1 | } | |
669 | |||
670 | static void | ||
671 | 1 | test_driver_initial_features_no_verify (void) | |
672 | { | ||
673 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
674 | |||
675 | 1 | dev_class->verify = NULL; | |
676 | 1 | dev_class->features = FP_DEVICE_FEATURE_NONE; | |
677 | |||
678 | 1 | fpi_device_class_auto_initialize_features (dev_class); | |
679 | |||
680 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (dev_class->features, !=, FP_DEVICE_FEATURE_NONE); |
681 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_CAPTURE); |
682 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_IDENTIFY); |
683 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_VERIFY); |
684 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_DUPLICATES_CHECK); |
685 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE); |
686 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_LIST); |
687 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_DELETE); |
688 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_CLEAR); |
689 | 1 | } | |
690 | |||
691 | static void | ||
692 | 1 | test_driver_initial_features_no_identify (void) | |
693 | { | ||
694 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
695 | |||
696 | 1 | dev_class->identify = NULL; | |
697 | 1 | dev_class->features = FP_DEVICE_FEATURE_NONE; | |
698 | |||
699 | 1 | fpi_device_class_auto_initialize_features (dev_class); | |
700 | |||
701 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (dev_class->features, !=, FP_DEVICE_FEATURE_NONE); |
702 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_CAPTURE); |
703 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_IDENTIFY); |
704 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_VERIFY); |
705 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_DUPLICATES_CHECK); |
706 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE); |
707 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_LIST); |
708 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_DELETE); |
709 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_CLEAR); |
710 | 1 | } | |
711 | |||
712 | static void | ||
713 | 1 | test_driver_initial_features_no_storage (void) | |
714 | { | ||
715 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
716 | |||
717 | 1 | dev_class->delete = NULL; | |
718 | 1 | dev_class->features = FP_DEVICE_FEATURE_NONE; | |
719 | |||
720 | 1 | fpi_device_class_auto_initialize_features (dev_class); | |
721 | |||
722 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (dev_class->features, !=, FP_DEVICE_FEATURE_NONE); |
723 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_CAPTURE); |
724 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_IDENTIFY); |
725 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_VERIFY); |
726 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_DUPLICATES_CHECK); |
727 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_STORAGE); |
728 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_LIST); |
729 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_STORAGE_DELETE); |
730 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_CLEAR); |
731 | 1 | } | |
732 | |||
733 | static void | ||
734 | 1 | test_driver_initial_features_no_list (void) | |
735 | { | ||
736 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
737 | |||
738 | 1 | dev_class->list = NULL; | |
739 | 1 | dev_class->features = FP_DEVICE_FEATURE_NONE; | |
740 | |||
741 | 1 | fpi_device_class_auto_initialize_features (dev_class); | |
742 | |||
743 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (dev_class->features, !=, FP_DEVICE_FEATURE_NONE); |
744 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_CAPTURE); |
745 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_IDENTIFY); |
746 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_VERIFY); |
747 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_DUPLICATES_CHECK); |
748 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE); |
749 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_STORAGE_LIST); |
750 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_DELETE); |
751 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_CLEAR); |
752 | 1 | } | |
753 | |||
754 | static void | ||
755 | 1 | test_driver_initial_features_no_delete (void) | |
756 | { | ||
757 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
758 | |||
759 | 1 | dev_class->delete = NULL; | |
760 | 1 | dev_class->features = FP_DEVICE_FEATURE_NONE; | |
761 | |||
762 | 1 | fpi_device_class_auto_initialize_features (dev_class); | |
763 | |||
764 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (dev_class->features, !=, FP_DEVICE_FEATURE_NONE); |
765 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_CAPTURE); |
766 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_IDENTIFY); |
767 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_VERIFY); |
768 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_DUPLICATES_CHECK); |
769 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_STORAGE); |
770 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_LIST); |
771 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_STORAGE_DELETE); |
772 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_CLEAR); |
773 | 1 | } | |
774 | |||
775 | static void | ||
776 | 1 | test_driver_initial_features_no_clear (void) | |
777 | { | ||
778 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
779 | |||
780 | 1 | dev_class->clear_storage = NULL; | |
781 | 1 | dev_class->features = FP_DEVICE_FEATURE_NONE; | |
782 | |||
783 | 1 | fpi_device_class_auto_initialize_features (dev_class); | |
784 | |||
785 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_cmpuint (dev_class->features, !=, FP_DEVICE_FEATURE_NONE); |
786 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_CAPTURE); |
787 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_IDENTIFY); |
788 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_VERIFY); |
789 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_DUPLICATES_CHECK); |
790 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE); |
791 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_LIST); |
792 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (dev_class->features & FP_DEVICE_FEATURE_STORAGE_DELETE); |
793 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (dev_class->features & FP_DEVICE_FEATURE_STORAGE_CLEAR); |
794 | 1 | } | |
795 | |||
796 | static void | ||
797 | 1 | on_driver_probe_async (GObject *initable, GAsyncResult *res, gpointer user_data) | |
798 | { | ||
799 | 2 | g_autoptr(GError) error = NULL; | |
800 | 1 | FpDevice **out_device = user_data; | |
801 | 1 | FpDevice *device; | |
802 | 1 | FpDeviceClass *dev_class; | |
803 | 1 | FpiDeviceFake *fake_dev; | |
804 | |||
805 | 1 | device = FP_DEVICE (g_async_initable_new_finish (G_ASYNC_INITABLE (initable), res, &error)); | |
806 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | dev_class = FP_DEVICE_GET_CLASS (device); |
807 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
808 | |||
809 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->probe); |
810 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
811 | |||
812 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_is_open (device)); |
813 | |||
814 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | *out_device = device; |
815 | 1 | } | |
816 | |||
817 | static void | ||
818 | 1 | test_driver_probe (void) | |
819 | { | ||
820 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
821 | 1 | g_autoptr(FpDevice) device = NULL; | |
822 | |||
823 | 1 | dev_class->id = "Probed device ID"; | |
824 | 1 | dev_class->full_name = "Probed device name"; | |
825 | 1 | g_async_initable_new_async (FPI_TYPE_DEVICE_FAKE, G_PRIORITY_DEFAULT, NULL, | |
826 | on_driver_probe_async, &device, NULL); | ||
827 | |||
828 |
2/2✓ Branch 2 taken 2 times.
✓ Branch 3 taken 1 times.
|
3 | while (!FP_IS_DEVICE (device)) |
829 | 2 | g_main_context_iteration (NULL, TRUE); | |
830 | |||
831 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_is_open (device)); |
832 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | g_assert_cmpstr (fp_device_get_device_id (device), ==, "Probed device ID"); |
833 |
2/4✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | g_assert_cmpstr (fp_device_get_name (device), ==, "Probed device name"); |
834 | 1 | } | |
835 | |||
836 | static void | ||
837 | 1 | fake_device_probe_error (FpDevice *device) | |
838 | { | ||
839 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
840 | |||
841 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fpi_device_get_current_action (device), ==, FPI_DEVICE_ACTION_PROBE); |
842 | |||
843 | 1 | fpi_device_probe_complete (device, dev_class->id, dev_class->full_name, | |
844 | fpi_device_error_new (FP_DEVICE_ERROR_NOT_SUPPORTED)); | ||
845 | 1 | } | |
846 | |||
847 | static void | ||
848 | 1 | fake_device_probe_action_error (FpDevice *device) | |
849 | { | ||
850 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fpi_device_get_current_action (device), ==, FPI_DEVICE_ACTION_PROBE); |
851 | |||
852 | 1 | fpi_device_action_error (device, fpi_device_error_new (FP_DEVICE_ERROR_NOT_SUPPORTED)); | |
853 | 1 | } | |
854 | |||
855 | static void | ||
856 | 2 | on_driver_probe_error_async (GObject *initable, GAsyncResult *res, gpointer user_data) | |
857 | { | ||
858 | 4 | g_autoptr(GError) error = NULL; | |
859 | 2 | gboolean *out_done = user_data; | |
860 | 2 | FpDevice *device; | |
861 | |||
862 | 2 | device = FP_DEVICE (g_async_initable_new_finish (G_ASYNC_INITABLE (initable), res, &error)); | |
863 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
2 | g_assert_null (device); |
864 | |||
865 |
3/6✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
|
2 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_NOT_SUPPORTED); |
866 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2 | *out_done = TRUE; |
867 | 2 | } | |
868 | |||
869 | static void | ||
870 | 1 | test_driver_probe_error (void) | |
871 | { | ||
872 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
873 | 1 | gboolean done = FALSE; | |
874 | |||
875 | 1 | dev_class->id = "Error device ID"; | |
876 | 1 | dev_class->probe = fake_device_probe_error; | |
877 | 1 | g_async_initable_new_async (FPI_TYPE_DEVICE_FAKE, G_PRIORITY_DEFAULT, NULL, | |
878 | on_driver_probe_error_async, &done, NULL); | ||
879 | |||
880 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
3 | while (!done) |
881 | 2 | g_main_context_iteration (NULL, TRUE); | |
882 | 1 | } | |
883 | |||
884 | static void | ||
885 | 1 | test_driver_probe_action_error (void) | |
886 | { | ||
887 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
888 | 1 | gboolean done = FALSE; | |
889 | |||
890 | 1 | dev_class->id = "Error device ID"; | |
891 | 1 | dev_class->probe = fake_device_probe_action_error; | |
892 | 1 | g_async_initable_new_async (FPI_TYPE_DEVICE_FAKE, G_PRIORITY_DEFAULT, NULL, | |
893 | on_driver_probe_error_async, &done, NULL); | ||
894 | |||
895 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
3 | while (!done) |
896 | 2 | g_main_context_iteration (NULL, TRUE); | |
897 | 1 | } | |
898 | |||
899 | static void | ||
900 | 1 | test_driver_open (void) | |
901 | { | ||
902 | 2 | g_autoptr(GError) error = NULL; | |
903 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
2 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); |
904 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); |
905 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
906 | |||
907 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function != dev_class->probe); |
908 | |||
909 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, &error)); |
910 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->open); |
911 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
912 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_is_open (device)); |
913 | |||
914 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_close_sync (FP_DEVICE (device), NULL, &error)); |
915 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
916 | 1 | } | |
917 | |||
918 | static void | ||
919 | 1 | test_driver_open_error (void) | |
920 | { | ||
921 | 2 | g_autoptr(GError) error = NULL; | |
922 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); |
923 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
924 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
925 | |||
926 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
927 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_open_sync (device, NULL, &error)); |
928 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->open); |
929 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
930 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_is_open (device)); |
931 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
932 | 1 | } | |
933 | |||
934 | static void | ||
935 | 1 | test_driver_close (void) | |
936 | { | ||
937 | 2 | g_autoptr(GError) error = NULL; | |
938 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
939 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
940 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
941 | |||
942 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_close_sync (device, NULL, &error)); |
943 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->close); |
944 | |||
945 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
946 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_is_open (device)); |
947 | 1 | } | |
948 | |||
949 | static void | ||
950 | 1 | test_driver_close_error (void) | |
951 | { | ||
952 | 2 | g_autoptr(GError) error = NULL; | |
953 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
954 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
955 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
956 | |||
957 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
958 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_close_sync (device, NULL, &error)); |
959 | |||
960 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->close); |
961 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
962 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
963 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_is_open (device)); |
964 | 1 | } | |
965 | |||
966 | static void | ||
967 | 1 | test_driver_enroll (void) | |
968 | { | ||
969 | 2 | g_autoptr(GError) error = NULL; | |
970 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
971 | 2 | g_autoptr(FpPrint) template_print = fp_print_new (device); | |
972 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
973 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
974 | 1 | FpPrint *out_print = NULL; | |
975 | |||
976 | 1 | out_print = | |
977 | 1 | fp_device_enroll_sync (device, template_print, NULL, NULL, NULL, &error); | |
978 | |||
979 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->enroll); |
980 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->action_data == template_print); |
981 | |||
982 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
983 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | g_assert (out_print == template_print); |
984 | 1 | } | |
985 | |||
986 | static void | ||
987 | 1 | test_driver_enroll_error (void) | |
988 | { | ||
989 | 2 | g_autoptr(GError) error = NULL; | |
990 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
991 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
992 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
993 | 1 | FpPrint *template_print = fp_print_new (device); | |
994 | 1 | FpPrint *out_print = NULL; | |
995 | |||
996 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
997 | 1 | out_print = | |
998 | 1 | fp_device_enroll_sync (device, template_print, NULL, NULL, NULL, &error); | |
999 | |||
1000 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->enroll); |
1001 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
1002 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
1003 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (out_print); |
1004 | 1 | } | |
1005 | |||
1006 | static void | ||
1007 | 3 | test_driver_enroll_complete_simple (FpDevice *device) | |
1008 | { | ||
1009 | 3 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1010 | |||
1011 | 3 | fake_dev->last_called_function = test_driver_enroll_complete_simple; | |
1012 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
|
3 | g_assert_cmpuint (fpi_device_get_current_action (device), ==, FPI_DEVICE_ACTION_ENROLL); |
1013 | |||
1014 | 3 | fpi_device_enroll_complete (device, fake_dev->ret_print, fake_dev->ret_error); | |
1015 | 3 | } | |
1016 | |||
1017 | static void | ||
1018 | 1 | test_driver_enroll_error_no_print (void) | |
1019 | { | ||
1020 | 2 | g_autoptr(GError) error = NULL; | |
1021 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); |
1022 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1023 | 1 | g_autoptr(FpPrint) out_print = NULL; | |
1024 | 1 | FpiDeviceFake *fake_dev; | |
1025 | |||
1026 | 1 | dev_class->enroll = test_driver_enroll_complete_simple; | |
1027 | 1 | device = auto_close_fake_device_new (); | |
1028 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
1029 | |||
1030 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1031 | "*Driver did not provide a valid print and failed to provide an error*"); | ||
1032 | 2 | out_print = | |
1033 | 1 | fp_device_enroll_sync (device, fp_print_new (device), NULL, NULL, NULL, &error); | |
1034 | |||
1035 | 1 | g_test_assert_expected_messages (); | |
1036 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->enroll); |
1037 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
1038 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (out_print); |
1039 | 1 | g_clear_error (&error); | |
1040 | |||
1041 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1042 | "*Driver passed an error but also provided a print, returning error*"); | ||
1043 | |||
1044 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
1045 | 1 | fake_dev->ret_print = make_fake_print_reffed (device, NULL); | |
1046 | 1 | g_object_add_weak_pointer (G_OBJECT (fake_dev->ret_print), | |
1047 | 1 | (gpointer) (&fake_dev->ret_print)); | |
1048 | 2 | out_print = | |
1049 | 1 | fp_device_enroll_sync (device, fp_print_new (device), NULL, NULL, NULL, &error); | |
1050 | |||
1051 | 1 | g_test_assert_expected_messages (); | |
1052 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->enroll); |
1053 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
1054 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (error == g_steal_pointer (&fake_dev->ret_error)); |
1055 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (out_print); |
1056 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (fake_dev->ret_print); |
1057 | 1 | g_clear_error (&error); | |
1058 | |||
1059 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1060 | "*Driver did not set the type on the returned print*"); | ||
1061 | |||
1062 | 1 | fake_dev->ret_error = NULL; | |
1063 | 1 | fake_dev->ret_print = fp_print_new (device); /* Type not set. */ | |
1064 | 1 | g_object_add_weak_pointer (G_OBJECT (fake_dev->ret_print), | |
1065 | (gpointer) (&fake_dev->ret_print)); | ||
1066 | 2 | out_print = | |
1067 | 1 | fp_device_enroll_sync (device, fp_print_new (device), NULL, NULL, NULL, &error); | |
1068 | |||
1069 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->enroll); |
1070 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
1071 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (out_print); |
1072 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (fake_dev->ret_print); |
1073 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_clear_error (&error); |
1074 | 1 | } | |
1075 | |||
1076 | static void | ||
1077 | 1 | test_driver_enroll_update_nbis (void) | |
1078 | { | ||
1079 | 2 | g_autoptr(GError) error = NULL; | |
1080 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); |
1081 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1082 | 1 | g_autoptr(FpPrint) template_print = NULL; | |
1083 | 1 | FpiDeviceFake *fake_dev = NULL; | |
1084 | 1 | FpPrint *out_print = NULL; | |
1085 | |||
1086 | 1 | dev_class->features |= FP_DEVICE_FEATURE_UPDATE_PRINT; | |
1087 | 1 | device = auto_close_fake_device_new (); | |
1088 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
1089 | |||
1090 | 1 | template_print = make_fake_nbis_print (device); | |
1091 | 1 | fake_dev->ret_print = template_print; | |
1092 | |||
1093 | 1 | out_print = | |
1094 | 1 | fp_device_enroll_sync (device, template_print, NULL, NULL, NULL, &error); | |
1095 | |||
1096 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->enroll); |
1097 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->action_data == template_print); |
1098 | |||
1099 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
1100 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | g_assert (out_print == template_print); |
1101 | 1 | } | |
1102 | |||
1103 | static void | ||
1104 | 1 | test_driver_enroll_update_nbis_wrong_device (void) | |
1105 | { | ||
1106 | 2 | g_autoptr(GError) error = NULL; | |
1107 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); |
1108 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1109 | 1 | g_autoptr(FpPrint) template_print = NULL; | |
1110 | 1 | FpiDeviceFake *fake_dev = NULL; | |
1111 | 1 | FpPrint *out_print = NULL; | |
1112 | |||
1113 | 1 | dev_class->features |= FP_DEVICE_FEATURE_UPDATE_PRINT; | |
1114 | |||
1115 | 1 | device = auto_close_fake_device_new (); | |
1116 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
1117 | |||
1118 | 1 | template_print = make_fake_nbis_print (device); | |
1119 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_clear_pointer (&template_print->device_id, g_free); |
1120 | 1 | template_print->device_id = g_strdup ("wrong_device"); | |
1121 | 1 | fake_dev->ret_print = template_print; | |
1122 | |||
1123 | 1 | out_print = | |
1124 | 1 | fp_device_enroll_sync (device, template_print, NULL, NULL, NULL, &error); | |
1125 | |||
1126 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
1127 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (out_print == NULL); |
1128 | 1 | } | |
1129 | |||
1130 | static void | ||
1131 | 1 | test_driver_enroll_update_nbis_wrong_driver (void) | |
1132 | { | ||
1133 | 2 | g_autoptr(GError) error = NULL; | |
1134 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); |
1135 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1136 | 1 | g_autoptr(FpPrint) template_print = NULL; | |
1137 | 1 | FpiDeviceFake *fake_dev = NULL; | |
1138 | 1 | FpPrint *out_print = NULL; | |
1139 | |||
1140 | 1 | dev_class->features |= FP_DEVICE_FEATURE_UPDATE_PRINT; | |
1141 | |||
1142 | 1 | device = auto_close_fake_device_new (); | |
1143 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
1144 | |||
1145 | 1 | template_print = make_fake_nbis_print (device); | |
1146 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_clear_pointer (&template_print->driver, g_free); |
1147 | 1 | template_print->driver = g_strdup ("wrong_driver"); | |
1148 | 1 | fake_dev->ret_print = template_print; | |
1149 | |||
1150 | 1 | out_print = | |
1151 | 1 | fp_device_enroll_sync (device, template_print, NULL, NULL, NULL, &error); | |
1152 | |||
1153 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
1154 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (out_print == NULL); |
1155 | 1 | } | |
1156 | |||
1157 | static void | ||
1158 | 1 | test_driver_enroll_update_nbis_missing_feature (void) | |
1159 | { | ||
1160 | 2 | g_autoptr(GError) error = NULL; | |
1161 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); |
1162 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1163 | 1 | g_autoptr(FpPrint) template_print = NULL; | |
1164 | 1 | FpiDeviceFake *fake_dev = NULL; | |
1165 | 1 | FpPrint *out_print = NULL; | |
1166 | |||
1167 | 1 | device = auto_close_fake_device_new (); | |
1168 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
1169 | |||
1170 | 1 | template_print = make_fake_nbis_print (device); | |
1171 | 1 | fake_dev->ret_print = template_print; | |
1172 | |||
1173 | 1 | out_print = | |
1174 | 1 | fp_device_enroll_sync (device, template_print, NULL, NULL, NULL, &error); | |
1175 | |||
1176 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->open); |
1177 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->action_data == NULL); |
1178 | |||
1179 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
1180 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | g_assert (out_print == NULL); |
1181 | 1 | } | |
1182 | |||
1183 | typedef struct | ||
1184 | { | ||
1185 | gint completed_stages; | ||
1186 | FpPrint *print; | ||
1187 | GError *error; | ||
1188 | } ExpectedEnrollData; | ||
1189 | |||
1190 | static void | ||
1191 | 3 | test_driver_enroll_progress_callback (FpDevice *device, | |
1192 | gint completed_stages, | ||
1193 | FpPrint *print, | ||
1194 | gpointer user_data, | ||
1195 | GError *error) | ||
1196 | { | ||
1197 | 3 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1198 | 3 | ExpectedEnrollData *expected_data = user_data; | |
1199 | |||
1200 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
|
3 | g_assert_cmpint (expected_data->completed_stages, ==, completed_stages); |
1201 |
1/2✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
|
3 | g_assert (expected_data->print == print); |
1202 |
3/4✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
3 | g_assert_true (print == NULL || FP_IS_PRINT (print)); |
1203 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
|
3 | g_assert (expected_data->error == error); |
1204 | |||
1205 | 3 | fake_dev->last_called_function = test_driver_enroll_progress_callback; | |
1206 | 3 | } | |
1207 | |||
1208 | static void | ||
1209 | 1 | test_driver_enroll_progress_vfunc (FpDevice *device) | |
1210 | { | ||
1211 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1212 | 1 | ExpectedEnrollData *expected_data = fake_dev->user_data; | |
1213 | |||
1214 | 2 | g_autoptr(GError) error = NULL; | |
1215 | |||
1216 | 2 | expected_data->completed_stages = | |
1217 | 1 | g_random_int_range (fp_device_get_nr_enroll_stages (device), G_MAXINT32); | |
1218 | 1 | expected_data->print = fp_print_new (device); | |
1219 | 1 | expected_data->error = NULL; | |
1220 | |||
1221 | 1 | g_object_add_weak_pointer (G_OBJECT (expected_data->print), | |
1222 | 1 | (gpointer) & expected_data->print); | |
1223 | |||
1224 | 1 | fpi_device_enroll_progress (device, expected_data->completed_stages, | |
1225 | expected_data->print, expected_data->error); | ||
1226 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == test_driver_enroll_progress_callback); |
1227 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (expected_data->print); |
1228 | |||
1229 | |||
1230 | 2 | expected_data->completed_stages = | |
1231 | 1 | g_random_int_range (fp_device_get_nr_enroll_stages (device), G_MAXINT32); | |
1232 | 1 | expected_data->print = NULL; | |
1233 | 1 | expected_data->error = fpi_device_retry_new (FP_DEVICE_RETRY_TOO_SHORT); | |
1234 | |||
1235 | 1 | fpi_device_enroll_progress (device, expected_data->completed_stages, | |
1236 | expected_data->print, expected_data->error); | ||
1237 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == test_driver_enroll_progress_callback); |
1238 | |||
1239 | |||
1240 | 2 | expected_data->completed_stages = | |
1241 | 1 | g_random_int_range (fp_device_get_nr_enroll_stages (device), G_MAXINT32); | |
1242 | 1 | expected_data->print = make_fake_print_reffed (device, | |
1243 | g_variant_new_int32 (expected_data->completed_stages)); | ||
1244 | 1 | expected_data->error = NULL; | |
1245 | |||
1246 | 1 | error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
1247 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
1248 | "*assertion*error*FP_DEVICE_RETRY*failed"); | ||
1249 | 1 | fpi_device_enroll_progress (device, expected_data->completed_stages, | |
1250 | expected_data->print, error); | ||
1251 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == test_driver_enroll_progress_callback); |
1252 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_clear_object (&expected_data->print); |
1253 | 1 | g_test_assert_expected_messages (); | |
1254 | |||
1255 | 2 | expected_data->completed_stages = | |
1256 | 1 | g_random_int_range (fp_device_get_nr_enroll_stages (device), G_MAXINT32); | |
1257 | 1 | expected_data->print = NULL; | |
1258 | 1 | expected_data->error = fpi_device_retry_new (FP_DEVICE_RETRY_TOO_SHORT); | |
1259 | |||
1260 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1261 | "*Driver passed an error and also provided a print*"); | ||
1262 | 1 | fpi_device_enroll_progress (device, expected_data->completed_stages, | |
1263 | fp_print_new (device), expected_data->error); | ||
1264 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == test_driver_enroll_progress_callback); |
1265 | 1 | g_test_assert_expected_messages (); | |
1266 | |||
1267 | 1 | default_fake_dev_class.enroll (device); | |
1268 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | fake_dev->last_called_function = test_driver_enroll_progress_vfunc; |
1269 | 1 | } | |
1270 | |||
1271 | static void | ||
1272 | 1 | test_driver_enroll_progress (void) | |
1273 | { | ||
1274 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
1275 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1276 | 1 | G_GNUC_UNUSED g_autoptr(FpPrint) enrolled_print = NULL; | |
1277 | 1 | ExpectedEnrollData expected_enroll_data = {0}; | |
1278 | 1 | FpiDeviceFake *fake_dev; | |
1279 | |||
1280 | 1 | dev_class->nr_enroll_stages = g_random_int_range (10, G_MAXINT32); | |
1281 | 1 | dev_class->enroll = test_driver_enroll_progress_vfunc; | |
1282 | 1 | device = auto_close_fake_device_new (); | |
1283 | |||
1284 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
1285 | "*assertion*current_action*FPI_DEVICE_ACTION_ENROLL*failed"); | ||
1286 | 1 | fpi_device_enroll_progress (device, 0, NULL, NULL); | |
1287 | 1 | g_test_assert_expected_messages (); | |
1288 | |||
1289 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
1290 | 1 | fake_dev->user_data = &expected_enroll_data; | |
1291 | |||
1292 | 1 | enrolled_print = fp_device_enroll_sync (device, fp_print_new (device), NULL, | |
1293 | test_driver_enroll_progress_callback, | ||
1294 | &expected_enroll_data, NULL); | ||
1295 | |||
1296 |
2/4✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | g_assert (fake_dev->last_called_function == test_driver_enroll_progress_vfunc); |
1297 | 1 | } | |
1298 | |||
1299 | typedef struct | ||
1300 | { | ||
1301 | gboolean called; | ||
1302 | FpPrint *match; | ||
1303 | FpPrint *print; | ||
1304 | GPtrArray *gallery; | ||
1305 | GError *error; | ||
1306 | } MatchCbData; | ||
1307 | |||
1308 | static void | ||
1309 | 28 | test_driver_match_data_clear (MatchCbData *data) | |
1310 | { | ||
1311 | 28 | data->called = FALSE; | |
1312 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 22 times.
|
28 | g_clear_object (&data->match); |
1313 |
2/2✓ Branch 0 taken 8 times.
✓ Branch 1 taken 20 times.
|
28 | g_clear_object (&data->print); |
1314 | 28 | g_clear_error (&data->error); | |
1315 | 28 | } | |
1316 | |||
1317 | static void | ||
1318 | 20 | test_driver_match_data_free (MatchCbData *data) | |
1319 | { | ||
1320 | 20 | test_driver_match_data_clear (data); | |
1321 | 20 | g_free (data); | |
1322 | 20 | } | |
1323 |
1/2✓ Branch 0 taken 20 times.
✗ Branch 1 not taken.
|
20 | G_DEFINE_AUTOPTR_CLEANUP_FUNC (MatchCbData, test_driver_match_data_free); |
1324 | |||
1325 | static void | ||
1326 | 16 | test_driver_match_cb (FpDevice *device, | |
1327 | FpPrint *match, | ||
1328 | FpPrint *print, | ||
1329 | gpointer user_data, | ||
1330 | GError *error) | ||
1331 | { | ||
1332 | 16 | MatchCbData *data = user_data; | |
1333 | |||
1334 |
1/2✓ Branch 0 taken 16 times.
✗ Branch 1 not taken.
|
16 | g_assert (data->called == FALSE); |
1335 | 16 | data->called = TRUE; | |
1336 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 12 times.
|
16 | if (match) |
1337 | 4 | data->match = g_object_ref (match); | |
1338 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 10 times.
|
16 | if (print) |
1339 | 6 | data->print = g_object_ref (print); | |
1340 |
2/2✓ Branch 0 taken 9 times.
✓ Branch 1 taken 7 times.
|
16 | if (error) |
1341 | { | ||
1342 | 9 | data->error = g_error_copy (error); | |
1343 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 9 times.
|
9 | g_assert_null (match); |
1344 | } | ||
1345 | |||
1346 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 12 times.
|
16 | if (match) |
1347 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
|
4 | g_assert_no_error (error); |
1348 | |||
1349 | /* Compar gallery if this is an identify operation */ | ||
1350 |
2/2✓ Branch 0 taken 3 times.
✓ Branch 1 taken 13 times.
|
16 | if (data->gallery) |
1351 | { | ||
1352 | 3 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1353 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
|
3 | g_assert_false (fake_dev->action_data == data->gallery); |
1354 | 3 | assert_equal_galleries (fake_dev->action_data, data->gallery); | |
1355 | } | ||
1356 | 16 | } | |
1357 | |||
1358 | static void | ||
1359 | 1 | fake_device_stub_verify (FpDevice *device) | |
1360 | { | ||
1361 | 1 | } | |
1362 | |||
1363 | static void | ||
1364 | 1 | test_driver_verify (void) | |
1365 | { | ||
1366 | 2 | g_autoptr(GError) error = NULL; | |
1367 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
1368 | 2 | g_autoptr(FpPrint) enrolled_print = make_fake_print_reffed (device, NULL); | |
1369 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) out_print = NULL; |
1370 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); |
1371 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
1372 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1373 | 1 | gboolean match; | |
1374 | |||
1375 | 1 | fake_dev->ret_result = FPI_MATCH_SUCCESS; | |
1376 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_verify_sync (device, enrolled_print, NULL, |
1377 | test_driver_match_cb, match_data, | ||
1378 | &match, &out_print, &error)); | ||
1379 | |||
1380 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->verify); |
1381 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->action_data == enrolled_print); |
1382 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
1383 | |||
1384 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
1385 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_nonnull (match_data->match); |
1386 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->print == out_print); |
1387 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->match == enrolled_print); |
1388 | |||
1389 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (out_print == enrolled_print); |
1390 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match); |
1391 | 1 | } | |
1392 | |||
1393 | static void | ||
1394 | 1 | test_driver_verify_not_supported (void) | |
1395 | { | ||
1396 | 2 | g_autoptr(GError) error = NULL; | |
1397 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) enrolled_print = NULL; |
1398 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) out_print = NULL; |
1399 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); |
1400 | 2 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
1401 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1402 | 1 | FpiDeviceFake *fake_dev; | |
1403 | 1 | gboolean match; | |
1404 | |||
1405 | 1 | dev_class->features &= ~FP_DEVICE_FEATURE_VERIFY; | |
1406 | |||
1407 | 1 | device = auto_close_fake_device_new (); | |
1408 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
1409 | 1 | fake_dev->last_called_function = NULL; | |
1410 | |||
1411 | 1 | enrolled_print = make_fake_print_reffed (device, g_variant_new_uint64 (3)); | |
1412 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, |
1413 | test_driver_match_cb, match_data, | ||
1414 | &match, &out_print, &error)); | ||
1415 | |||
1416 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (fake_dev->last_called_function); |
1417 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_NOT_SUPPORTED); |
1418 | |||
1419 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match_data->called); |
1420 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (match_data->error); |
1421 | |||
1422 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (out_print); |
1423 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match); |
1424 | 1 | } | |
1425 | |||
1426 | static void | ||
1427 | 1 | test_driver_verify_fail (void) | |
1428 | { | ||
1429 | 2 | g_autoptr(GError) error = NULL; | |
1430 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
1431 | 1 | g_autoptr(FpPrint) enrolled_print = NULL; | |
1432 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) out_print = NULL; |
1433 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); |
1434 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
1435 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1436 | 1 | gboolean match; | |
1437 | |||
1438 | 1 | enrolled_print = make_fake_print_reffed (device, g_variant_new_uint64 (3)); | |
1439 | 1 | fake_dev->ret_result = FPI_MATCH_FAIL; | |
1440 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_verify_sync (device, enrolled_print, NULL, |
1441 | test_driver_match_cb, match_data, | ||
1442 | &match, &out_print, &error)); | ||
1443 | |||
1444 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->verify); |
1445 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
1446 | |||
1447 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
1448 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (match_data->error); |
1449 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->print == out_print); |
1450 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (match_data->match); |
1451 | |||
1452 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (out_print == enrolled_print); |
1453 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match); |
1454 | 1 | } | |
1455 | |||
1456 | static void | ||
1457 | 1 | test_driver_verify_retry (void) | |
1458 | { | ||
1459 | 2 | g_autoptr(GError) error = NULL; | |
1460 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
1461 | 2 | g_autoptr(FpPrint) enrolled_print = make_fake_print_reffed (device, NULL); | |
1462 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) out_print = NULL; |
1463 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); |
1464 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
1465 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1466 | 1 | gboolean match; | |
1467 | |||
1468 | 1 | fake_dev->ret_result = FPI_MATCH_ERROR; | |
1469 | 1 | fake_dev->ret_error = fpi_device_retry_new (FP_DEVICE_RETRY_GENERAL); | |
1470 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, |
1471 | test_driver_match_cb, match_data, | ||
1472 | &match, &out_print, &error)); | ||
1473 | |||
1474 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
1475 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (match_data->match); |
1476 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (match_data->error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_GENERAL); |
1477 | |||
1478 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->verify); |
1479 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_GENERAL); |
1480 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
1481 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match); |
1482 | 1 | } | |
1483 | |||
1484 | static void | ||
1485 | 1 | test_driver_verify_error (void) | |
1486 | { | ||
1487 | 2 | g_autoptr(GError) error = NULL; | |
1488 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
1489 | 2 | g_autoptr(FpPrint) enrolled_print = make_fake_print_reffed (device, NULL); | |
1490 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) out_print = NULL; |
1491 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); |
1492 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
1493 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1494 | 1 | gboolean match; | |
1495 | |||
1496 | 1 | fake_dev->ret_result = FPI_MATCH_ERROR; | |
1497 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
1498 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, |
1499 | test_driver_match_cb, match_data, | ||
1500 | &match, &out_print, &error)); | ||
1501 | |||
1502 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match_data->called); |
1503 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (match_data->match); |
1504 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (match_data->error); |
1505 | |||
1506 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->verify); |
1507 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
1508 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
1509 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match); |
1510 | 1 | } | |
1511 | |||
1512 | static void | ||
1513 | 1 | fake_device_verify_immediate_complete (FpDevice *device) | |
1514 | { | ||
1515 | 1 | fpi_device_verify_complete (device, NULL); | |
1516 | 1 | } | |
1517 | |||
1518 | static void | ||
1519 | 1 | test_driver_verify_not_reported (void) | |
1520 | { | ||
1521 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
1522 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1523 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) enrolled_print = NULL; |
1524 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(GError) error = NULL; |
1525 | |||
1526 | 1 | dev_class->verify = fake_device_verify_immediate_complete; | |
1527 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
1528 | 1 | enrolled_print = make_fake_print_reffed (device, NULL); | |
1529 | |||
1530 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
1531 | |||
1532 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1533 | "*reported successful verify complete*not report*result*"); | ||
1534 | |||
1535 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, |
1536 | NULL, NULL, | ||
1537 | NULL, NULL, &error)); | ||
1538 | |||
1539 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
1540 | |||
1541 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | g_test_assert_expected_messages (); |
1542 | 1 | } | |
1543 | |||
1544 | static void | ||
1545 | 6 | fake_device_verify_complete_error (FpDevice *device) | |
1546 | { | ||
1547 | 6 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1548 | 6 | GError *complete_error = fake_dev->user_data; | |
1549 | |||
1550 | 6 | fake_dev->last_called_function = fake_device_verify_complete_error; | |
1551 | |||
1552 | 6 | fpi_device_verify_report (device, fake_dev->ret_result, fake_dev->ret_print, fake_dev->ret_error); | |
1553 | 6 | fpi_device_verify_complete (device, complete_error); | |
1554 | 6 | } | |
1555 | |||
1556 | static void | ||
1557 | 1 | test_driver_verify_report_no_callback (void) | |
1558 | { | ||
1559 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
1560 | 2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); | |
1561 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1562 | 1 | g_autoptr(FpPrint) enrolled_print = NULL; | |
1563 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) print = NULL; |
1564 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(GError) error = NULL; |
1565 | 1 | FpiDeviceFake *fake_dev; | |
1566 | 1 | gboolean match; | |
1567 | |||
1568 | 1 | dev_class->verify = fake_device_verify_complete_error; | |
1569 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
1570 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
1571 | 1 | enrolled_print = make_fake_print_reffed (device, NULL); | |
1572 | |||
1573 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
1574 | |||
1575 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1576 | "*Driver reported a verify error that was not in the retry domain*"); | ||
1577 | |||
1578 | 1 | fake_dev->ret_result = FPI_MATCH_ERROR; | |
1579 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_NOT_SUPPORTED); | |
1580 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, |
1581 | test_driver_match_cb, match_data, | ||
1582 | &match, &print, &error)); | ||
1583 | |||
1584 | 1 | g_test_assert_expected_messages (); | |
1585 | |||
1586 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match_data->called); |
1587 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (match_data->match); |
1588 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (match_data->error); |
1589 | |||
1590 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->verify); |
1591 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_NOT_SUPPORTED); |
1592 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
1593 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | g_assert_false (match); |
1594 | 1 | } | |
1595 | |||
1596 | static void | ||
1597 | 1 | test_driver_verify_complete_retry (void) | |
1598 | { | ||
1599 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
1600 | 2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); | |
1601 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1602 | 1 | g_autoptr(FpPrint) enrolled_print = NULL; | |
1603 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) print = NULL; |
1604 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(GError) error = NULL; |
1605 | 1 | FpiDeviceFake *fake_dev; | |
1606 | 1 | gboolean match; | |
1607 | |||
1608 | 1 | dev_class->verify = fake_device_verify_complete_error; | |
1609 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
1610 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
1611 | 1 | enrolled_print = make_fake_print_reffed (device, NULL); | |
1612 | |||
1613 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
1614 | |||
1615 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1616 | "*Driver reported an error code without setting match result to error*"); | ||
1617 | |||
1618 | 1 | test_driver_match_data_clear (match_data); | |
1619 | 1 | fake_dev->ret_result = FPI_MATCH_FAIL; | |
1620 | 1 | fake_dev->ret_error = fpi_device_retry_new (FP_DEVICE_RETRY_TOO_SHORT); | |
1621 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, test_driver_match_cb, |
1622 | match_data, &match, &print, &error)); | ||
1623 | 1 | g_test_assert_expected_messages (); | |
1624 | |||
1625 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (error == g_steal_pointer (&fake_dev->ret_error)); |
1626 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_TOO_SHORT); |
1627 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match); |
1628 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
1629 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (match_data->error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_TOO_SHORT); |
1630 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (print); |
1631 | 1 | g_clear_error (&error); | |
1632 | |||
1633 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1634 | "*Driver reported an error code without setting match result to error*"); | ||
1635 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1636 | "*Driver reported a retry error to fpi_device_verify_complete" | ||
1637 | "*reporting general verification failure*"); | ||
1638 | |||
1639 | 1 | test_driver_match_data_clear (match_data); | |
1640 | 1 | fake_dev->ret_result = FPI_MATCH_FAIL; | |
1641 | 1 | fake_dev->ret_error = fpi_device_retry_new (FP_DEVICE_RETRY_TOO_SHORT); | |
1642 | 1 | fake_dev->user_data = g_error_copy (fake_dev->ret_error); | |
1643 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, test_driver_match_cb, |
1644 | match_data, &match, &print, &error)); | ||
1645 | |||
1646 | 1 | g_test_assert_expected_messages (); | |
1647 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (error != g_steal_pointer (&fake_dev->ret_error)); |
1648 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_steal_pointer (&fake_dev->user_data); |
1649 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
1650 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
1651 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (match_data->error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_TOO_SHORT); |
1652 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match); |
1653 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (print); |
1654 | 1 | g_clear_error (&error); | |
1655 | |||
1656 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1657 | "*Driver reported a retry error to fpi_device_verify_complete" | ||
1658 | "*reporting general verification failure*"); | ||
1659 | |||
1660 | 1 | test_driver_match_data_clear (match_data); | |
1661 | 1 | fake_dev->ret_result = FPI_MATCH_ERROR; | |
1662 | 1 | fake_dev->ret_error = fpi_device_retry_new (FP_DEVICE_RETRY_TOO_SHORT); | |
1663 | 1 | fake_dev->user_data = g_error_copy (fake_dev->ret_error); | |
1664 | |||
1665 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, test_driver_match_cb, |
1666 | match_data, &match, &print, &error)); | ||
1667 | 1 | g_test_assert_expected_messages (); | |
1668 | |||
1669 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (error != g_steal_pointer (&fake_dev->ret_error)); |
1670 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_steal_pointer (&fake_dev->user_data); |
1671 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
1672 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
1673 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (match_data->error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_TOO_SHORT); |
1674 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match); |
1675 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (print); |
1676 | 1 | g_clear_error (&error); | |
1677 | |||
1678 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1679 | "*Driver reported an error without specifying a retry " | ||
1680 | "code, assuming general retry error*"); | ||
1681 | |||
1682 | 1 | test_driver_match_data_clear (match_data); | |
1683 | 1 | fake_dev->ret_result = FPI_MATCH_ERROR; | |
1684 | |||
1685 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, test_driver_match_cb, |
1686 | match_data, &match, &print, &error)); | ||
1687 | 1 | g_test_assert_expected_messages (); | |
1688 | |||
1689 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (error != g_steal_pointer (&fake_dev->ret_error)); |
1690 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_steal_pointer (&fake_dev->user_data); |
1691 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_GENERAL); |
1692 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
1693 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (match_data->error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_GENERAL); |
1694 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match); |
1695 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (print); |
1696 | 1 | g_clear_error (&error); | |
1697 | |||
1698 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1699 | "*Driver reported a print together with an error*"); | ||
1700 | |||
1701 | 1 | test_driver_match_data_clear (match_data); | |
1702 | 1 | fake_dev->ret_result = FPI_MATCH_ERROR; | |
1703 | 1 | fake_dev->ret_error = fpi_device_retry_new (FP_DEVICE_RETRY_TOO_SHORT); | |
1704 | 1 | fake_dev->ret_print = make_fake_print (device, NULL); | |
1705 | 1 | g_object_add_weak_pointer (G_OBJECT (fake_dev->ret_print), | |
1706 | 1 | (gpointer) (&fake_dev->ret_print)); | |
1707 | |||
1708 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, test_driver_match_cb, |
1709 | match_data, &match, &print, &error)); | ||
1710 | 1 | g_test_assert_expected_messages (); | |
1711 | |||
1712 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_TOO_SHORT); |
1713 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (error == g_steal_pointer (&fake_dev->ret_error)); |
1714 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
1715 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (match_data->error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_TOO_SHORT); |
1716 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (fake_dev->ret_print); |
1717 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match); |
1718 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (print); |
1719 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_clear_error (&error); |
1720 | 1 | } | |
1721 | |||
1722 | static void | ||
1723 | 4 | fake_device_stub_identify (FpDevice *device) | |
1724 | { | ||
1725 | 4 | } | |
1726 | |||
1727 | static void | ||
1728 | 4 | test_driver_identify_cb (FpDevice *device, | |
1729 | GAsyncResult *res, | ||
1730 | gpointer user_data) | ||
1731 | { | ||
1732 | 4 | MatchCbData *data = user_data; | |
1733 | 4 | gboolean r; | |
1734 | |||
1735 |
1/2✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
|
4 | g_assert (data->called == FALSE); |
1736 | 4 | data->called = TRUE; | |
1737 | |||
1738 | 4 | r = fp_device_identify_finish (device, res, &data->match, &data->print, &data->error); | |
1739 | |||
1740 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
|
4 | if (r) |
1741 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
2 | g_assert_no_error (data->error); |
1742 | else | ||
1743 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
2 | g_assert_nonnull (data->error); |
1744 | |||
1745 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
|
4 | if (data->match) |
1746 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
2 | g_assert_no_error (data->error); |
1747 | 4 | } | |
1748 | |||
1749 | static void | ||
1750 | 1 | test_driver_supports_identify (void) | |
1751 | { | ||
1752 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
1753 | 1 | g_autoptr(FpDevice) device = NULL; | |
1754 | |||
1755 | 1 | dev_class->identify = fake_device_stub_identify; | |
1756 | |||
1757 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
1758 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | ||
1759 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_supports_identify (device)); |
1760 | G_GNUC_END_IGNORE_DEPRECATIONS | ||
1761 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_IDENTIFY)); |
1762 | 1 | } | |
1763 | |||
1764 | static void | ||
1765 | 1 | test_driver_do_not_support_identify (void) | |
1766 | { | ||
1767 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
1768 | 1 | g_autoptr(FpDevice) device = NULL; | |
1769 | |||
1770 | 1 | dev_class->features &= ~FP_DEVICE_FEATURE_IDENTIFY; | |
1771 | |||
1772 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
1773 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | ||
1774 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_supports_identify (device)); |
1775 | G_GNUC_END_IGNORE_DEPRECATIONS | ||
1776 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_false (fp_device_has_feature (device, FP_DEVICE_FEATURE_IDENTIFY)); |
1777 | 1 | } | |
1778 | |||
1779 | static void | ||
1780 | 1 | test_driver_identify (void) | |
1781 | { | ||
1782 | 2 | g_autoptr(GError) error = NULL; | |
1783 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(FpPrint) print = NULL; |
1784 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) matched_print = NULL; |
1785 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
1786 | 2 | g_autoptr(GPtrArray) prints = make_fake_prints_gallery (device, 500); | |
1787 | 2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); | |
1788 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
1789 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1790 | 1 | FpPrint *expected_matched; | |
1791 | |||
1792 | 1 | expected_matched = g_ptr_array_index (prints, g_random_int_range (0, 499)); | |
1793 | 1 | fp_print_set_description (expected_matched, "fake-verified"); | |
1794 | |||
1795 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | ||
1796 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_supports_identify (device)); |
1797 | G_GNUC_END_IGNORE_DEPRECATIONS | ||
1798 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_IDENTIFY)); |
1799 | |||
1800 | 1 | match_data->gallery = prints; | |
1801 | |||
1802 | 1 | fake_dev->ret_print = make_fake_print (device, NULL); | |
1803 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_identify_sync (device, prints, NULL, |
1804 | test_driver_match_cb, match_data, | ||
1805 | &matched_print, &print, &error)); | ||
1806 | |||
1807 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
1808 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_nonnull (match_data->match); |
1809 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->match == matched_print); |
1810 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->print == print); |
1811 | |||
1812 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->identify); |
1813 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
1814 | |||
1815 |
2/4✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | g_assert (print != NULL && print == fake_dev->ret_print); |
1816 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (expected_matched == matched_print); |
1817 | 1 | } | |
1818 | |||
1819 | static void | ||
1820 | 1 | test_driver_identify_fail (void) | |
1821 | { | ||
1822 | 2 | g_autoptr(GError) error = NULL; | |
1823 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(FpPrint) print = NULL; |
1824 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) matched_print = NULL; |
1825 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
1826 | 2 | g_autoptr(GPtrArray) prints = make_fake_prints_gallery (device, 500); | |
1827 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); |
1828 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
1829 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1830 | |||
1831 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | ||
1832 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_supports_identify (device)); |
1833 | G_GNUC_END_IGNORE_DEPRECATIONS | ||
1834 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_IDENTIFY)); |
1835 | |||
1836 | 1 | fake_dev->ret_print = make_fake_print (device, NULL); | |
1837 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_identify_sync (device, prints, NULL, |
1838 | test_driver_match_cb, match_data, | ||
1839 | &matched_print, &print, &error)); | ||
1840 | |||
1841 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
1842 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (match_data->match); |
1843 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (match_data->error); |
1844 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->match == matched_print); |
1845 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->print == print); |
1846 | |||
1847 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->identify); |
1848 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
1849 | |||
1850 |
2/4✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | g_assert (print != NULL && print == fake_dev->ret_print); |
1851 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (matched_print); |
1852 | 1 | } | |
1853 | |||
1854 | static void | ||
1855 | 1 | test_driver_identify_retry (void) | |
1856 | { | ||
1857 | 2 | g_autoptr(GError) error = NULL; | |
1858 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) print = NULL; |
1859 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(FpPrint) matched_print = NULL; |
1860 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
1861 | 2 | g_autoptr(GPtrArray) prints = make_fake_prints_gallery (device, 500); | |
1862 | 2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); | |
1863 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
1864 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1865 | 1 | FpPrint *expected_matched; | |
1866 | |||
1867 | 1 | expected_matched = g_ptr_array_index (prints, g_random_int_range (0, 499)); | |
1868 | 1 | fp_print_set_description (expected_matched, "fake-verified"); | |
1869 | |||
1870 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | ||
1871 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_supports_identify (device)); |
1872 | G_GNUC_END_IGNORE_DEPRECATIONS | ||
1873 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_IDENTIFY)); |
1874 | |||
1875 | 1 | fake_dev->ret_error = fpi_device_retry_new (FP_DEVICE_RETRY_GENERAL); | |
1876 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_identify_sync (device, prints, NULL, |
1877 | test_driver_match_cb, match_data, | ||
1878 | &matched_print, &print, &error)); | ||
1879 | |||
1880 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
1881 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (match_data->match); |
1882 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (match_data->error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_GENERAL); |
1883 | |||
1884 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->identify); |
1885 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_GENERAL); |
1886 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
1887 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (matched_print); |
1888 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (print); |
1889 | 1 | } | |
1890 | |||
1891 | static void | ||
1892 | 1 | test_driver_identify_error (void) | |
1893 | { | ||
1894 | 2 | g_autoptr(GError) error = NULL; | |
1895 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) print = NULL; |
1896 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(FpPrint) matched_print = NULL; |
1897 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
1898 | 2 | g_autoptr(GPtrArray) prints = make_fake_prints_gallery (device, 500); | |
1899 | 2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); | |
1900 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
1901 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1902 | 1 | FpPrint *expected_matched; | |
1903 | |||
1904 | 1 | expected_matched = g_ptr_array_index (prints, g_random_int_range (0, 499)); | |
1905 | 1 | fp_print_set_description (expected_matched, "fake-verified"); | |
1906 | |||
1907 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | ||
1908 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_supports_identify (device)); |
1909 | G_GNUC_END_IGNORE_DEPRECATIONS | ||
1910 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_IDENTIFY)); |
1911 | |||
1912 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
1913 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_identify_sync (device, prints, NULL, |
1914 | test_driver_match_cb, match_data, | ||
1915 | &matched_print, &print, &error)); | ||
1916 | |||
1917 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match_data->called); |
1918 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (match_data->match); |
1919 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (match_data->error); |
1920 | |||
1921 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->identify); |
1922 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
1923 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
1924 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (matched_print); |
1925 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (print); |
1926 | 1 | } | |
1927 | |||
1928 | static void | ||
1929 | 1 | fake_device_identify_immediate_complete (FpDevice *device) | |
1930 | { | ||
1931 | 1 | fpi_device_identify_complete (device, NULL); | |
1932 | 1 | } | |
1933 | |||
1934 | static void | ||
1935 | 1 | test_driver_identify_not_reported (void) | |
1936 | { | ||
1937 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
1938 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1939 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(GPtrArray) prints = NULL; |
1940 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(GError) error = NULL; |
1941 | |||
1942 | 1 | dev_class->identify = fake_device_identify_immediate_complete; | |
1943 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
1944 | 1 | prints = make_fake_prints_gallery (device, 500); | |
1945 | |||
1946 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
1947 | |||
1948 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1949 | "*reported successful identify complete*not report*result*"); | ||
1950 | |||
1951 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_identify_sync (device, prints, NULL, |
1952 | NULL, NULL, | ||
1953 | NULL, NULL, &error)); | ||
1954 | |||
1955 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
1956 | |||
1957 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | g_test_assert_expected_messages (); |
1958 | 1 | } | |
1959 | |||
1960 | static void | ||
1961 | 4 | fake_device_identify_complete_error (FpDevice *device) | |
1962 | { | ||
1963 | 4 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
1964 | 4 | GError *complete_error = fake_dev->user_data; | |
1965 | |||
1966 | 4 | fake_dev->last_called_function = fake_device_identify_complete_error; | |
1967 | |||
1968 | 4 | fpi_device_identify_report (device, fake_dev->ret_match, fake_dev->ret_print, fake_dev->ret_error); | |
1969 | 4 | fpi_device_identify_complete (device, complete_error); | |
1970 | 4 | } | |
1971 | |||
1972 | static void | ||
1973 | 1 | test_driver_identify_complete_retry (void) | |
1974 | { | ||
1975 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
1976 | 1 | g_autoptr(GPtrArray) prints = NULL; | |
1977 | 2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); | |
1978 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
1979 | 1 | g_autoptr(FpPrint) print = NULL; | |
1980 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(FpPrint) match = NULL; |
1981 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(GError) error = NULL; |
1982 | 1 | FpiDeviceFake *fake_dev; | |
1983 | |||
1984 | 1 | dev_class->identify = fake_device_identify_complete_error; | |
1985 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
1986 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
1987 | 1 | prints = make_fake_prints_gallery (device, 500); | |
1988 | |||
1989 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
1990 | |||
1991 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
1992 | "*Driver reported a retry error to fpi_device_identify_complete" | ||
1993 | "*reporting general identification failure*"); | ||
1994 | |||
1995 | 1 | test_driver_match_data_clear (match_data); | |
1996 | 1 | fake_dev->ret_error = fpi_device_retry_new (FP_DEVICE_RETRY_TOO_SHORT); | |
1997 | 1 | fake_dev->user_data = g_error_copy (fake_dev->ret_error); | |
1998 | |||
1999 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_identify_sync (device, prints, NULL, |
2000 | test_driver_match_cb, match_data, | ||
2001 | &match, &print, &error)); | ||
2002 | 1 | g_test_assert_expected_messages (); | |
2003 | |||
2004 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (error != g_steal_pointer (&fake_dev->ret_error)); |
2005 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_steal_pointer (&fake_dev->user_data); |
2006 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
2007 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
2008 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (match_data->error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_TOO_SHORT); |
2009 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (match); |
2010 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (print); |
2011 | 1 | g_clear_error (&error); | |
2012 | |||
2013 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
2014 | "*Driver reported a match to a print that was not in the gallery*"); | ||
2015 | |||
2016 | 1 | test_driver_match_data_clear (match_data); | |
2017 | 1 | fake_dev->ret_match = make_fake_print_reffed (device, NULL); | |
2018 | 1 | g_object_add_weak_pointer (G_OBJECT (fake_dev->ret_match), | |
2019 | 1 | (gpointer) (&fake_dev->ret_match)); | |
2020 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_identify_sync (device, prints, NULL, |
2021 | test_driver_match_cb, match_data, | ||
2022 | &match, &print, &error)); | ||
2023 | 1 | g_test_assert_expected_messages (); | |
2024 | |||
2025 | 1 | g_object_unref (fake_dev->ret_match); | |
2026 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (fake_dev->ret_match); |
2027 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
2028 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (match_data->error); |
2029 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
2030 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match); |
2031 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (print); |
2032 | |||
2033 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
2034 | "*Driver reported an error code but also provided a match*"); | ||
2035 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
2036 | "*Driver reported a print together with an error*"); | ||
2037 | |||
2038 | 1 | test_driver_match_data_clear (match_data); | |
2039 | 1 | fake_dev->ret_error = fpi_device_retry_new (FP_DEVICE_RETRY_REMOVE_FINGER); | |
2040 | 1 | fake_dev->ret_match = prints->pdata[0]; | |
2041 | 1 | fake_dev->ret_print = make_fake_print (device, NULL); | |
2042 | 1 | g_object_add_weak_pointer (G_OBJECT (fake_dev->ret_print), | |
2043 | 1 | (gpointer) (&fake_dev->ret_print)); | |
2044 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_identify_sync (device, prints, NULL, |
2045 | test_driver_match_cb, match_data, | ||
2046 | &match, &print, &error)); | ||
2047 | 1 | g_test_assert_expected_messages (); | |
2048 | |||
2049 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_REMOVE_FINGER); |
2050 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (error == g_steal_pointer (&fake_dev->ret_error)); |
2051 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (fake_dev->ret_print); |
2052 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
2053 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (match_data->error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_REMOVE_FINGER); |
2054 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match); |
2055 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (print); |
2056 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_clear_error (&error); |
2057 | 1 | } | |
2058 | |||
2059 | static void | ||
2060 | 1 | test_driver_identify_report_no_callback (void) | |
2061 | { | ||
2062 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2063 | 2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); | |
2064 | 1 | g_autoptr(GPtrArray) prints = NULL; | |
2065 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpAutoCloseDevice) device = NULL; |
2066 | 1 | G_GNUC_UNUSED g_autoptr(FpPrint) enrolled_print = NULL; | |
2067 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) print = NULL; |
2068 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(FpPrint) match = NULL; |
2069 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(GError) error = NULL; |
2070 | 1 | FpiDeviceFake *fake_dev; | |
2071 | |||
2072 | 1 | dev_class->identify = fake_device_identify_complete_error; | |
2073 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2074 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2075 | 1 | prints = make_fake_prints_gallery (device, 0); | |
2076 | 1 | enrolled_print = make_fake_print_reffed (device, NULL); | |
2077 | |||
2078 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
2079 | |||
2080 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
2081 | "*Driver reported a verify error that was not in the retry domain*"); | ||
2082 | |||
2083 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_NOT_SUPPORTED); | |
2084 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_identify_sync (device, prints, NULL, |
2085 | test_driver_match_cb, match_data, | ||
2086 | &match, &print, &error)); | ||
2087 | |||
2088 | 1 | g_test_assert_expected_messages (); | |
2089 | |||
2090 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (match); |
2091 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (print); |
2092 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match_data->called); |
2093 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (match_data->match); |
2094 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (match_data->error); |
2095 | |||
2096 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->identify); |
2097 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_NOT_SUPPORTED); |
2098 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
2099 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | g_assert_false (match); |
2100 | 1 | } | |
2101 | |||
2102 | static void | ||
2103 | 1 | test_driver_identify_suspend_continues (void) | |
2104 | { | ||
2105 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2106 | 2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); | |
2107 | 2 | g_autoptr(MatchCbData) identify_data = g_new0 (MatchCbData, 1); | |
2108 | 1 | g_autoptr(GPtrArray) prints = NULL; | |
2109 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
2110 | 1 | g_autoptr(GError) error = NULL; | |
2111 | 1 | void (*orig_identify) (FpDevice *device); | |
2112 | 1 | FpiDeviceFake *fake_dev; | |
2113 | 1 | FpPrint *expected_matched; | |
2114 | |||
2115 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2116 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2117 | 1 | orig_identify = dev_class->identify; | |
2118 | 1 | dev_class->identify = fake_device_stub_identify; | |
2119 | |||
2120 | 1 | prints = make_fake_prints_gallery (device, 500); | |
2121 | 1 | expected_matched = g_ptr_array_index (prints, g_random_int_range (0, 499)); | |
2122 | 1 | fp_print_set_description (expected_matched, "fake-verified"); | |
2123 | |||
2124 | 1 | match_data->gallery = prints; | |
2125 | |||
2126 | 1 | fake_dev->ret_print = make_fake_print (device, NULL); | |
2127 | |||
2128 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
2129 | |||
2130 | 1 | fp_device_identify (device, prints, NULL, | |
2131 | test_driver_match_cb, match_data, NULL, | ||
2132 | (GAsyncReadyCallback) test_driver_identify_cb, identify_data); | ||
2133 | |||
2134 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | while (g_main_context_iteration (NULL, FALSE)) |
2135 | ✗ | continue; | |
2136 | |||
2137 | 1 | fake_dev->ret_suspend = NULL; | |
2138 | 1 | fp_device_suspend_sync (device, NULL, &error); | |
2139 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->suspend); |
2140 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
2141 | |||
2142 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | while (g_main_context_iteration (NULL, FALSE)) |
2143 | ✗ | continue; | |
2144 | |||
2145 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match_data->called); |
2146 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (identify_data->called); |
2147 | |||
2148 | 1 | fake_dev->ret_resume = NULL; | |
2149 | 1 | fp_device_resume_sync (device, NULL, &error); | |
2150 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->resume); |
2151 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
2152 | |||
2153 | 1 | orig_identify (device); | |
2154 | |||
2155 | /* This currently happens immediately (not ABI though) */ | ||
2156 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
2157 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (match_data->match == expected_matched); |
2158 | |||
2159 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
|
2 | while (g_main_context_iteration (NULL, FALSE)) |
2160 | 1 | continue; | |
2161 | |||
2162 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (identify_data->called); |
2163 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (identify_data->match == expected_matched); |
2164 | |||
2165 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == orig_identify); |
2166 | 1 | } | |
2167 | |||
2168 | static void | ||
2169 | 1 | test_driver_identify_suspend_succeeds (void) | |
2170 | { | ||
2171 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2172 | 2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); | |
2173 | 2 | g_autoptr(MatchCbData) identify_data = g_new0 (MatchCbData, 1); | |
2174 | 1 | g_autoptr(GPtrArray) prints = NULL; | |
2175 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
2176 | 1 | g_autoptr(GError) error = NULL; | |
2177 | 1 | void (*orig_identify) (FpDevice *device); | |
2178 | 1 | FpiDeviceFake *fake_dev; | |
2179 | 1 | FpPrint *expected_matched; | |
2180 | |||
2181 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2182 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2183 | 1 | orig_identify = dev_class->identify; | |
2184 | 1 | dev_class->identify = fake_device_stub_identify; | |
2185 | |||
2186 | 1 | prints = make_fake_prints_gallery (device, 500); | |
2187 | 1 | expected_matched = g_ptr_array_index (prints, g_random_int_range (0, 499)); | |
2188 | 1 | fp_print_set_description (expected_matched, "fake-verified"); | |
2189 | |||
2190 | 1 | match_data->gallery = prints; | |
2191 | |||
2192 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
2193 | |||
2194 | 1 | fake_dev->ret_print = make_fake_print (device, NULL); | |
2195 | 1 | fp_device_identify (device, prints, NULL, | |
2196 | test_driver_match_cb, match_data, NULL, | ||
2197 | (GAsyncReadyCallback) test_driver_identify_cb, identify_data); | ||
2198 | |||
2199 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | while (g_main_context_iteration (NULL, FALSE)) |
2200 | ✗ | continue; | |
2201 | |||
2202 | /* suspend_sync hangs until cancellation, so we need to trigger orig_identify | ||
2203 | * from the mainloop after calling suspend_sync. | ||
2204 | */ | ||
2205 | 1 | fpi_device_add_timeout (device, 0, (FpTimeoutFunc) orig_identify, NULL, NULL); | |
2206 | |||
2207 | 1 | fake_dev->ret_suspend = fpi_device_error_new (FP_DEVICE_ERROR_NOT_SUPPORTED); | |
2208 | 1 | fp_device_suspend_sync (device, NULL, &error); | |
2209 | |||
2210 | /* At this point we are done with everything */ | ||
2211 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == orig_identify); |
2212 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_NOT_SUPPORTED); |
2213 | 1 | g_clear_error (&error); | |
2214 | |||
2215 | /* We suspended, but device reported success and that will be reported. */ | ||
2216 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (match_data->called); |
2217 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (match_data->match == expected_matched); |
2218 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (identify_data->called); |
2219 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (identify_data->match == expected_matched); |
2220 | |||
2221 | /* Resuming the device does not call resume handler, as the action was | ||
2222 | * cancelled already. | ||
2223 | */ | ||
2224 | 1 | fake_dev->last_called_function = NULL; | |
2225 | 1 | fp_device_resume_sync (device, NULL, &error); | |
2226 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2227 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
1 | g_assert_no_error (error); |
2228 | 1 | } | |
2229 | |||
2230 | static void | ||
2231 | 1 | test_driver_identify_suspend_busy_error (void) | |
2232 | { | ||
2233 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2234 | 2 | g_autoptr(MatchCbData) match_data = g_new0 (MatchCbData, 1); | |
2235 | 2 | g_autoptr(MatchCbData) identify_data = g_new0 (MatchCbData, 1); | |
2236 | 1 | g_autoptr(GPtrArray) prints = NULL; | |
2237 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
2238 | 1 | g_autoptr(GError) error = NULL; | |
2239 | 1 | void (*orig_identify) (FpDevice *device); | |
2240 | 1 | FpiDeviceFake *fake_dev; | |
2241 | 1 | FpPrint *expected_matched; | |
2242 | |||
2243 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2244 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2245 | 1 | orig_identify = dev_class->identify; | |
2246 | 1 | dev_class->identify = fake_device_stub_identify; | |
2247 | |||
2248 | 1 | prints = make_fake_prints_gallery (device, 500); | |
2249 | 1 | expected_matched = g_ptr_array_index (prints, g_random_int_range (0, 499)); | |
2250 | 1 | fp_print_set_description (expected_matched, "fake-verified"); | |
2251 | |||
2252 | 1 | match_data->gallery = prints; | |
2253 | |||
2254 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
2255 | |||
2256 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
2257 | 1 | fake_dev->ret_print = make_fake_print (device, NULL); | |
2258 | 1 | fp_device_identify (device, prints, NULL, | |
2259 | test_driver_match_cb, match_data, NULL, | ||
2260 | (GAsyncReadyCallback) test_driver_identify_cb, identify_data); | ||
2261 | |||
2262 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | while (g_main_context_iteration (NULL, FALSE)) |
2263 | ✗ | continue; | |
2264 | |||
2265 | /* suspend_sync hangs until cancellation, so we need to trigger orig_identify | ||
2266 | * from the mainloop after calling suspend_sync. | ||
2267 | */ | ||
2268 | 1 | fpi_device_add_timeout (device, 0, (FpTimeoutFunc) orig_identify, NULL, NULL); | |
2269 | |||
2270 | 1 | fake_dev->ret_suspend = fpi_device_error_new (FP_DEVICE_ERROR_NOT_SUPPORTED); | |
2271 | 1 | fp_device_suspend_sync (device, NULL, &error); | |
2272 | 1 | fake_dev->ret_error = NULL; | |
2273 | |||
2274 | /* At this point we are done with everything */ | ||
2275 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == orig_identify); |
2276 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_NOT_SUPPORTED); |
2277 | 1 | g_clear_error (&error); | |
2278 | |||
2279 | /* The device reported an error, an this error will be overwritten. | ||
2280 | */ | ||
2281 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (match_data->called); |
2282 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (identify_data->called); |
2283 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (identify_data->match); |
2284 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (identify_data->error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_BUSY); |
2285 | |||
2286 | 1 | fake_dev->last_called_function = NULL; | |
2287 | 1 | fp_device_resume_sync (device, NULL, &error); | |
2288 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2289 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
1 | g_assert_no_error (error); |
2290 | 1 | } | |
2291 | |||
2292 | static void | ||
2293 | 1 | test_driver_identify_suspend_while_idle (void) | |
2294 | { | ||
2295 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2296 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpAutoCloseDevice) device = NULL; |
2297 | 1 | g_autoptr(GError) error = NULL; | |
2298 | 1 | FpiDeviceFake *fake_dev; | |
2299 | |||
2300 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2301 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2302 | |||
2303 | /* Suspending and resuming a closed device works */ | ||
2304 | 1 | fp_device_suspend (device, NULL, (GAsyncReadyCallback) fp_device_suspend_finish, &error); | |
2305 |
2/2✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
|
2 | while (g_main_context_iteration (NULL, FALSE)) |
2306 | 1 | continue; | |
2307 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2308 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
2309 | |||
2310 | 1 | fp_device_resume (device, NULL, (GAsyncReadyCallback) fp_device_resume_finish, NULL); | |
2311 |
2/2✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
|
2 | while (g_main_context_iteration (NULL, FALSE)) |
2312 | 1 | continue; | |
2313 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2314 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
2315 | |||
2316 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
2317 | |||
2318 | 1 | fake_dev->last_called_function = NULL; | |
2319 | 1 | fp_device_suspend (device, NULL, (GAsyncReadyCallback) fp_device_suspend_finish, &error); | |
2320 |
2/2✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
|
2 | while (g_main_context_iteration (NULL, FALSE)) |
2321 | 1 | continue; | |
2322 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2323 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
2324 | |||
2325 | 1 | fp_device_resume (device, NULL, (GAsyncReadyCallback) fp_device_resume_finish, NULL); | |
2326 |
2/2✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
|
2 | while (g_main_context_iteration (NULL, FALSE)) |
2327 | 1 | continue; | |
2328 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2329 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
1 | g_assert_no_error (error); |
2330 | 1 | } | |
2331 | |||
2332 | static void | ||
2333 | 1 | test_driver_identify_warmup_cooldown (void) | |
2334 | { | ||
2335 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2336 | 2 | g_autoptr(MatchCbData) identify_data = g_new0 (MatchCbData, 1); | |
2337 | 1 | g_autoptr(GPtrArray) prints = NULL; | |
2338 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpAutoCloseDevice) device = NULL; |
2339 | 1 | g_autoptr(GError) error = NULL; | |
2340 | 1 | void (*orig_identify) (FpDevice *device); | |
2341 | 1 | FpiDeviceFake *fake_dev; | |
2342 | 1 | gint64 start_time; | |
2343 | |||
2344 | 1 | dev_class->temp_hot_seconds = 2; | |
2345 | 1 | dev_class->temp_cold_seconds = 5; | |
2346 | |||
2347 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2348 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2349 | 1 | orig_identify = dev_class->identify; | |
2350 | 1 | dev_class->identify = fake_device_stub_identify; | |
2351 | |||
2352 | 1 | prints = make_fake_prints_gallery (device, 500); | |
2353 | |||
2354 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
2355 | 1 | fake_dev->last_called_function = NULL; | |
2356 | |||
2357 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
2358 | |||
2359 | /* Undefined: Whether match_cb is called. */ | ||
2360 | 1 | fp_device_identify (device, prints, NULL, | |
2361 | NULL, NULL, NULL, | ||
2362 | (GAsyncReadyCallback) test_driver_identify_cb, identify_data); | ||
2363 | |||
2364 | /* Identify is running, the temperature will change after only a short time. | ||
2365 | * Changes are delayed by 100ms and we give 150ms of slack for the test. | ||
2366 | */ | ||
2367 | 1 | start_time = g_get_monotonic_time (); | |
2368 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (fp_device_get_temperature (device), ==, FP_TEMPERATURE_COLD); |
2369 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
3 | while (fp_device_get_temperature (device) == FP_TEMPERATURE_COLD) |
2370 | 2 | g_main_context_iteration (NULL, TRUE); | |
2371 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (fp_device_get_temperature (device), ==, FP_TEMPERATURE_WARM); |
2372 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | g_assert_false (g_cancellable_is_cancelled (fpi_device_get_cancellable (device))); |
2373 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (g_get_monotonic_time () - start_time, <, 0 + 250000); |
2374 | |||
2375 | /* we reach hot 2 seconds later */ | ||
2376 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
3 | while (fp_device_get_temperature (device) == FP_TEMPERATURE_WARM) |
2377 | 2 | g_main_context_iteration (NULL, TRUE); | |
2378 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (fp_device_get_temperature (device), ==, FP_TEMPERATURE_HOT); |
2379 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | g_assert_true (g_cancellable_is_cancelled (fpi_device_get_cancellable (device))); |
2380 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (g_get_monotonic_time () - start_time, <, 2000000 + 250000); |
2381 | |||
2382 | /* cancel vfunc will be called now */ | ||
2383 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2384 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
|
2 | while (g_main_context_iteration (NULL, FALSE)) |
2385 | 1 | continue; | |
2386 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->cancel); |
2387 | |||
2388 | 1 | orig_identify (device); | |
2389 | 1 | fake_dev->ret_error = NULL; | |
2390 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
|
2 | while (g_main_context_iteration (NULL, FALSE)) |
2391 | 1 | continue; | |
2392 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (identify_data->called); |
2393 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (identify_data->error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_TOO_HOT); |
2394 | |||
2395 | /* Try to identify again, and ensure that we fail early */ | ||
2396 | 1 | fp_device_identify_sync (device, prints, NULL, NULL, NULL, NULL, NULL, &error); | |
2397 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_TOO_HOT); |
2398 | 1 | g_clear_error (&error); | |
2399 | |||
2400 | /* Now, wait for it to cool down again; | ||
2401 | * WARM should be reached after about 2s | ||
2402 | * COLD after 5s but give it some more slack. */ | ||
2403 | 1 | start_time = g_get_monotonic_time (); | |
2404 |
2/2✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
|
2 | while (fp_device_get_temperature (device) == FP_TEMPERATURE_HOT) |
2405 | 1 | g_main_context_iteration (NULL, TRUE); | |
2406 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (fp_device_get_temperature (device), ==, FP_TEMPERATURE_WARM); |
2407 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (g_get_monotonic_time () - start_time, <, 2000000 + 250000); |
2408 | |||
2409 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
3 | while (fp_device_get_temperature (device) == FP_TEMPERATURE_WARM) |
2410 | 2 | g_main_context_iteration (NULL, TRUE); | |
2411 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (fp_device_get_temperature (device), ==, FP_TEMPERATURE_COLD); |
2412 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
1 | g_assert_cmpint (g_get_monotonic_time () - start_time, <, 5000000 + 500000); |
2413 | 1 | } | |
2414 | |||
2415 | static void | ||
2416 | ✗ | fake_device_stub_capture (FpDevice *device) | |
2417 | { | ||
2418 | ✗ | } | |
2419 | |||
2420 | static void | ||
2421 | 1 | test_driver_supports_capture (void) | |
2422 | { | ||
2423 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2424 | 1 | g_autoptr(FpDevice) device = NULL; | |
2425 | |||
2426 | 1 | dev_class->features |= FP_DEVICE_FEATURE_CAPTURE; | |
2427 | 1 | dev_class->capture = fake_device_stub_capture; | |
2428 | |||
2429 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2430 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | ||
2431 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_supports_capture (device)); |
2432 | G_GNUC_END_IGNORE_DEPRECATIONS | ||
2433 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_CAPTURE)); |
2434 | 1 | } | |
2435 | |||
2436 | static void | ||
2437 | 1 | test_driver_do_not_support_capture (void) | |
2438 | { | ||
2439 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2440 | 1 | g_autoptr(FpDevice) device = NULL; | |
2441 | |||
2442 | 1 | dev_class->features &= ~FP_DEVICE_FEATURE_CAPTURE; | |
2443 | 1 | dev_class->capture = NULL; | |
2444 | |||
2445 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2446 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | ||
2447 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_supports_capture (device)); |
2448 | G_GNUC_END_IGNORE_DEPRECATIONS | ||
2449 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_false (fp_device_has_feature (device, FP_DEVICE_FEATURE_CAPTURE)); |
2450 | 1 | } | |
2451 | |||
2452 | static void | ||
2453 | 1 | test_driver_capture (void) | |
2454 | { | ||
2455 | 2 | g_autoptr(GError) error = NULL; | |
2456 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(FpImage) image = NULL; |
2457 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
2458 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
2459 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2460 | 1 | gboolean wait_for_finger = TRUE; | |
2461 | |||
2462 | 1 | fake_dev->ret_image = fp_image_new (500, 500); | |
2463 | 1 | image = fp_device_capture_sync (device, wait_for_finger, NULL, &error); | |
2464 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->capture); |
2465 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (GPOINTER_TO_UINT (fake_dev->action_data)); |
2466 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
2467 | |||
2468 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (image == fake_dev->ret_image); |
2469 | 1 | } | |
2470 | |||
2471 | static void | ||
2472 | 1 | test_driver_capture_not_supported (void) | |
2473 | { | ||
2474 | 2 | g_autoptr(GError) error = NULL; | |
2475 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpImage) image = NULL; |
2476 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); |
2477 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
2478 | 1 | gboolean wait_for_finger = TRUE; | |
2479 | 1 | FpiDeviceFake *fake_dev; | |
2480 | |||
2481 | 1 | dev_class->features &= ~FP_DEVICE_FEATURE_CAPTURE; | |
2482 | |||
2483 | 1 | device = auto_close_fake_device_new (); | |
2484 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2485 | 1 | fake_dev->last_called_function = NULL; | |
2486 | |||
2487 | 1 | image = fp_device_capture_sync (device, wait_for_finger, NULL, &error); | |
2488 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (fake_dev->last_called_function); |
2489 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_NOT_SUPPORTED); |
2490 | |||
2491 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (image); |
2492 | 1 | } | |
2493 | |||
2494 | static void | ||
2495 | 1 | test_driver_capture_error (void) | |
2496 | { | ||
2497 | 2 | g_autoptr(GError) error = NULL; | |
2498 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpImage) image = NULL; |
2499 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
2500 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
2501 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2502 | 1 | gboolean wait_for_finger = TRUE; | |
2503 | |||
2504 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
2505 | 1 | image = fp_device_capture_sync (device, wait_for_finger, NULL, &error); | |
2506 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->capture); |
2507 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
2508 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
2509 | |||
2510 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (image); |
2511 | 1 | } | |
2512 | |||
2513 | static void | ||
2514 | 1 | test_driver_has_storage (void) | |
2515 | { | ||
2516 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2517 | 1 | g_autoptr(FpDevice) device = NULL; | |
2518 | |||
2519 | 1 | dev_class->features |= FP_DEVICE_FEATURE_STORAGE; | |
2520 | |||
2521 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2522 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | ||
2523 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_has_storage (device)); |
2524 | G_GNUC_END_IGNORE_DEPRECATIONS | ||
2525 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_true (fp_device_has_feature (device, FP_DEVICE_FEATURE_STORAGE)); |
2526 | 1 | } | |
2527 | |||
2528 | static void | ||
2529 | 1 | test_driver_has_not_storage (void) | |
2530 | { | ||
2531 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2532 | 1 | g_autoptr(FpDevice) device = NULL; | |
2533 | |||
2534 | 1 | dev_class->features &= ~FP_DEVICE_FEATURE_STORAGE; | |
2535 | |||
2536 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2537 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | ||
2538 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_has_storage (device)); |
2539 | G_GNUC_END_IGNORE_DEPRECATIONS | ||
2540 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_false (fp_device_has_feature (device, FP_DEVICE_FEATURE_STORAGE)); |
2541 | 1 | } | |
2542 | |||
2543 | static void | ||
2544 | 1 | test_driver_list (void) | |
2545 | { | ||
2546 | 2 | g_autoptr(GError) error = NULL; | |
2547 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
2548 | 2 | g_autoptr(GPtrArray) prints = make_fake_prints_gallery (device, 500); | |
2549 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
2550 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2551 | |||
2552 | 1 | fake_dev->ret_list = g_steal_pointer (&prints); | |
2553 | 1 | prints = fp_device_list_prints_sync (device, NULL, &error); | |
2554 | |||
2555 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->list); |
2556 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
2557 | |||
2558 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | g_assert (prints == fake_dev->ret_list); |
2559 | 1 | } | |
2560 | |||
2561 | static void | ||
2562 | 1 | test_driver_list_error (void) | |
2563 | { | ||
2564 | 2 | g_autoptr(GError) error = NULL; | |
2565 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
2566 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
2567 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2568 | |||
2569 | 1 | g_autoptr(GPtrArray) prints = NULL; | |
2570 | |||
2571 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
2572 | 1 | prints = fp_device_list_prints_sync (device, NULL, &error); | |
2573 | |||
2574 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->list); |
2575 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
2576 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
2577 | |||
2578 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
1 | g_assert_null (prints); |
2579 | 1 | } | |
2580 | |||
2581 | static void | ||
2582 | 1 | test_driver_list_no_storage (void) | |
2583 | { | ||
2584 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2585 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
2586 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(GPtrArray) prints = NULL; |
2587 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_autoptr(GError) error = NULL; |
2588 | |||
2589 | 1 | dev_class->features &= ~FP_DEVICE_FEATURE_STORAGE; | |
2590 | |||
2591 | 1 | device = auto_close_fake_device_new (); | |
2592 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | ||
2593 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_has_storage (device)); |
2594 | G_GNUC_END_IGNORE_DEPRECATIONS | ||
2595 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_has_feature (device, FP_DEVICE_FEATURE_STORAGE)); |
2596 | |||
2597 | 1 | prints = fp_device_list_prints_sync (device, NULL, &error); | |
2598 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (prints); |
2599 |
4/8✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_NOT_SUPPORTED); |
2600 | 1 | } | |
2601 | |||
2602 | static void | ||
2603 | 1 | test_driver_delete (void) | |
2604 | { | ||
2605 | 2 | g_autoptr(GError) error = NULL; | |
2606 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
2607 | 2 | g_autoptr(FpPrint) enrolled_print = make_fake_print_reffed (device, NULL); | |
2608 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
2609 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2610 | 1 | gboolean ret; | |
2611 | |||
2612 | 1 | ret = fp_device_delete_print_sync (device, enrolled_print, NULL, &error); | |
2613 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->delete); |
2614 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->action_data == enrolled_print); |
2615 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
2616 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | g_assert_true (ret); |
2617 | 1 | } | |
2618 | |||
2619 | static void | ||
2620 | 1 | test_driver_delete_error (void) | |
2621 | { | ||
2622 | 2 | g_autoptr(GError) error = NULL; | |
2623 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
2624 | 2 | g_autoptr(FpPrint) enrolled_print = make_fake_print_reffed (device, NULL); | |
2625 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
2626 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2627 | 1 | gboolean ret; | |
2628 | |||
2629 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
2630 | 1 | ret = fp_device_delete_print_sync (device, enrolled_print, NULL, &error); | |
2631 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->delete); |
2632 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
2633 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
2634 | |||
2635 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | g_assert_false (ret); |
2636 | 1 | } | |
2637 | |||
2638 | static void | ||
2639 | 1 | test_driver_clear_storage (void) | |
2640 | { | ||
2641 | 2 | g_autoptr(GError) error = NULL; | |
2642 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
2643 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
2644 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2645 | 1 | gboolean ret; | |
2646 | |||
2647 | 1 | ret = fp_device_clear_storage_sync (device, NULL, &error); | |
2648 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->clear_storage); |
2649 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_no_error (error); |
2650 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (ret); |
2651 | 1 | } | |
2652 | |||
2653 | static void | ||
2654 | 1 | test_driver_clear_storage_error (void) | |
2655 | { | ||
2656 | 2 | g_autoptr(GError) error = NULL; | |
2657 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
2658 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
2659 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2660 | 1 | gboolean ret; | |
2661 | |||
2662 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_GENERAL); | |
2663 | 1 | ret = fp_device_clear_storage_sync (device, NULL, &error); | |
2664 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->clear_storage); |
2665 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
2666 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (error == g_steal_pointer (&fake_dev->ret_error)); |
2667 | |||
2668 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_false (ret); |
2669 | 1 | } | |
2670 | |||
2671 | static gboolean | ||
2672 | 1 | fake_device_delete_wait_for_cancel_timeout (gpointer data) | |
2673 | { | ||
2674 | 1 | FpDevice *device = data; | |
2675 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2676 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); |
2677 | |||
2678 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == dev_class->cancel); |
2679 | 1 | default_fake_dev_class.delete (device); | |
2680 | |||
2681 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == default_fake_dev_class.delete); |
2682 | 1 | fake_dev->last_called_function = fake_device_delete_wait_for_cancel_timeout; | |
2683 | |||
2684 | 1 | return G_SOURCE_REMOVE; | |
2685 | } | ||
2686 | |||
2687 | static void | ||
2688 | 1 | fake_device_delete_wait_for_cancel (FpDevice *device) | |
2689 | { | ||
2690 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2691 | |||
2692 | 1 | fake_dev->last_called_function = fake_device_delete_wait_for_cancel; | |
2693 | |||
2694 | 1 | g_timeout_add (100, fake_device_delete_wait_for_cancel_timeout, device); | |
2695 | 1 | } | |
2696 | |||
2697 | static void | ||
2698 | 1 | on_driver_cancel_delete (GObject *obj, GAsyncResult *res, gpointer user_data) | |
2699 | { | ||
2700 | 2 | g_autoptr(GError) error = NULL; | |
2701 | 1 | FpDevice *device = FP_DEVICE (obj); | |
2702 | 1 | gboolean *completed = user_data; | |
2703 | |||
2704 | 1 | fp_device_delete_print_finish (device, res, &error); | |
2705 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); |
2706 | |||
2707 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | *completed = TRUE; |
2708 | 1 | } | |
2709 | |||
2710 | static void | ||
2711 | 1 | test_driver_cancel (void) | |
2712 | { | ||
2713 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2714 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
2715 | 1 | g_autoptr(GCancellable) cancellable = NULL; | |
2716 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(FpPrint) enrolled_print = NULL; |
2717 | 1 | gboolean completed = FALSE; | |
2718 | 1 | FpiDeviceFake *fake_dev; | |
2719 | |||
2720 | 1 | dev_class->delete = fake_device_delete_wait_for_cancel; | |
2721 | |||
2722 | 1 | device = auto_close_fake_device_new (); | |
2723 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2724 | 1 | cancellable = g_cancellable_new (); | |
2725 | 1 | enrolled_print = make_fake_print_reffed (device, NULL); | |
2726 | |||
2727 | 1 | fp_device_delete_print (device, enrolled_print, cancellable, | |
2728 | on_driver_cancel_delete, &completed); | ||
2729 | 1 | g_cancellable_cancel (cancellable); | |
2730 | |||
2731 |
2/2✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
|
5 | while (!completed) |
2732 | 4 | g_main_context_iteration (NULL, TRUE); | |
2733 | |||
2734 |
2/4✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | g_assert (fake_dev->last_called_function == fake_device_delete_wait_for_cancel_timeout); |
2735 | 1 | } | |
2736 | |||
2737 | static void | ||
2738 | 1 | test_driver_cancel_fail (void) | |
2739 | { | ||
2740 | 2 | g_autoptr(GError) error = NULL; | |
2741 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
2 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); |
2742 | 2 | g_autoptr(GCancellable) cancellable = g_cancellable_new (); | |
2743 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpPrint) enrolled_print = make_fake_print_reffed (device, NULL); |
2744 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
2745 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2746 | |||
2747 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_delete_print_sync (device, enrolled_print, cancellable, &error)); |
2748 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->delete); |
2749 | 1 | g_cancellable_cancel (cancellable); | |
2750 | |||
2751 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | while (g_main_context_iteration (NULL, FALSE)) |
2752 | ✗ | continue; | |
2753 | |||
2754 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->delete); |
2755 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | g_assert_no_error (error); |
2756 | 1 | } | |
2757 | |||
2758 | static void | ||
2759 | 1 | test_driver_critical (void) | |
2760 | { | ||
2761 | 1 | g_autoptr(FpAutoCloseDevice) device = auto_close_fake_device_new (); | |
2762 | 2 | g_autoptr(GCancellable) cancellable = g_cancellable_new (); | |
2763 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpPrint) enrolled_print = make_fake_print_reffed (device, NULL); |
2764 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); |
2765 | 1 | void (*orig_verify) (FpDevice *device) = dev_class->verify; | |
2766 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2767 | |||
2768 | 1 | fake_dev->last_called_function = NULL; | |
2769 | |||
2770 | 1 | dev_class->verify = fake_device_stub_verify; | |
2771 | 1 | fp_device_verify (device, enrolled_print, cancellable, | |
2772 | NULL, NULL, NULL, | ||
2773 | NULL, NULL); | ||
2774 | |||
2775 | /* We started a verify operation, now emulate a "critical" section */ | ||
2776 | 1 | fpi_device_critical_enter (device); | |
2777 | |||
2778 | /* Throw a suspend and external cancellation against it. */ | ||
2779 | 1 | fp_device_suspend (device, NULL, NULL, NULL); | |
2780 | 1 | g_cancellable_cancel (cancellable); | |
2781 | |||
2782 | /* The only thing that happens is that the cancellable is cancelled */ | ||
2783 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fpi_device_action_is_cancelled (device)); |
2784 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2785 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
|
2 | while (g_main_context_iteration (NULL, FALSE)) |
2786 | 1 | continue; | |
2787 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2788 | |||
2789 | /* Leaving and entering the critical section in the same mainloop iteration | ||
2790 | * does not do anything. */ | ||
2791 | 1 | fpi_device_critical_leave (device); | |
2792 | 1 | fpi_device_critical_enter (device); | |
2793 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | while (g_main_context_iteration (NULL, FALSE)) |
2794 | ✗ | continue; | |
2795 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2796 | |||
2797 | /* Leaving it and running the mainloop will first run the cancel handler */ | ||
2798 | 1 | fpi_device_critical_leave (device); | |
2799 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
1 | while (g_main_context_iteration (NULL, FALSE) && !fake_dev->last_called_function) |
2800 | ✗ | continue; | |
2801 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->cancel); |
2802 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fpi_device_action_is_cancelled (device)); |
2803 | 1 | fake_dev->last_called_function = NULL; | |
2804 | |||
2805 | /* Then the suspend handler */ | ||
2806 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
1 | while (g_main_context_iteration (NULL, FALSE) && !fake_dev->last_called_function) |
2807 | ✗ | continue; | |
2808 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->suspend); |
2809 | 1 | fake_dev->last_called_function = NULL; | |
2810 | |||
2811 | /* Nothing happens afterwards */ | ||
2812 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
|
2 | while (g_main_context_iteration (NULL, FALSE)) |
2813 | 1 | continue; | |
2814 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2815 | |||
2816 | |||
2817 | /* Throw a resume at the system */ | ||
2818 | 1 | fpi_device_critical_enter (device); | |
2819 | 1 | fp_device_resume (device, NULL, NULL, NULL); | |
2820 | |||
2821 | /* Nothing will happen, as the resume is delayed */ | ||
2822 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | while (g_main_context_iteration (NULL, FALSE)) |
2823 | ✗ | continue; | |
2824 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2825 | |||
2826 | /* Finally the resume is called from the mainloop after leaving the critical section */ | ||
2827 | 1 | fpi_device_critical_leave (device); | |
2828 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == NULL); |
2829 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
1 | while (g_main_context_iteration (NULL, FALSE) && !fake_dev->last_called_function) |
2830 | ✗ | continue; | |
2831 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == dev_class->resume); |
2832 | 1 | fake_dev->last_called_function = NULL; | |
2833 | |||
2834 | |||
2835 | /* The "verify" operation is still ongoing, finish it. */ | ||
2836 | 1 | orig_verify (device); | |
2837 |
2/2✓ Branch 2 taken 3 times.
✓ Branch 3 taken 1 times.
|
4 | while (g_main_context_iteration (NULL, FALSE)) |
2838 | 3 | continue; | |
2839 | 1 | } | |
2840 | |||
2841 | static void | ||
2842 | 1 | test_driver_current_action (void) | |
2843 | { | ||
2844 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2845 | |||
2846 |
2/4✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | g_assert_cmpint (fpi_device_get_current_action (device), ==, FPI_DEVICE_ACTION_NONE); |
2847 | 1 | } | |
2848 | |||
2849 | static void | ||
2850 | 1 | test_driver_current_action_open_vfunc (FpDevice *device) | |
2851 | { | ||
2852 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2853 | |||
2854 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fpi_device_get_current_action (device), ==, FPI_DEVICE_ACTION_OPEN); |
2855 | 1 | fake_dev->last_called_function = test_driver_current_action_open_vfunc; | |
2856 | |||
2857 | 1 | fpi_device_open_complete (device, NULL); | |
2858 | 1 | } | |
2859 | |||
2860 | static void | ||
2861 | 1 | test_driver_current_action_open (void) | |
2862 | { | ||
2863 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2864 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
2865 | 1 | FpiDeviceFake *fake_dev; | |
2866 | |||
2867 | 1 | dev_class->open = test_driver_current_action_open_vfunc; | |
2868 | 1 | device = auto_close_fake_device_new (); | |
2869 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2870 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_assert (fake_dev->last_called_function == test_driver_current_action_open_vfunc); |
2871 | |||
2872 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpint (fpi_device_get_current_action (device), ==, FPI_DEVICE_ACTION_NONE); |
2873 | 1 | } | |
2874 | |||
2875 | static void | ||
2876 | 1 | test_driver_action_get_cancellable_open_vfunc (FpDevice *device) | |
2877 | { | ||
2878 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2879 | |||
2880 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fpi_device_get_current_action (device), ==, FPI_DEVICE_ACTION_OPEN); |
2881 | 1 | fake_dev->last_called_function = test_driver_action_get_cancellable_open_vfunc; | |
2882 | |||
2883 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
1 | g_assert_true (G_IS_CANCELLABLE (fpi_device_get_cancellable (device))); |
2884 | |||
2885 | 1 | fpi_device_open_complete (device, NULL); | |
2886 | 1 | } | |
2887 | |||
2888 | static void | ||
2889 | 1 | test_driver_action_get_cancellable_open (void) | |
2890 | { | ||
2891 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2892 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
2893 | 1 | g_autoptr(GCancellable) cancellable = NULL; | |
2894 | 1 | FpiDeviceFake *fake_dev; | |
2895 | |||
2896 | 1 | dev_class->open = test_driver_action_get_cancellable_open_vfunc; | |
2897 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2898 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2899 | |||
2900 | 1 | cancellable = g_cancellable_new (); | |
2901 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, cancellable, NULL)); |
2902 | |||
2903 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | g_assert (fake_dev->last_called_function == test_driver_action_get_cancellable_open_vfunc); |
2904 | 1 | } | |
2905 | |||
2906 | static void | ||
2907 | 1 | test_driver_action_get_cancellable_open_internal_vfunc (FpDevice *device) | |
2908 | { | ||
2909 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2910 | |||
2911 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_cmpuint (fpi_device_get_current_action (device), ==, FPI_DEVICE_ACTION_OPEN); |
2912 | 1 | fake_dev->last_called_function = test_driver_action_get_cancellable_open_internal_vfunc; | |
2913 | |||
2914 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
1 | g_assert_true (G_IS_CANCELLABLE (fpi_device_get_cancellable (device))); |
2915 | |||
2916 | 1 | fpi_device_open_complete (device, NULL); | |
2917 | 1 | } | |
2918 | |||
2919 | static void | ||
2920 | 1 | test_driver_action_get_cancellable_open_internal (void) | |
2921 | { | ||
2922 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2923 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
2924 | 1 | FpiDeviceFake *fake_dev; | |
2925 | |||
2926 | 1 | dev_class->open = test_driver_action_get_cancellable_open_internal_vfunc; | |
2927 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2928 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2929 | |||
2930 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
2931 | |||
2932 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == test_driver_action_get_cancellable_open_internal_vfunc); |
2933 | 1 | } | |
2934 | |||
2935 | static void | ||
2936 | 1 | test_driver_action_get_cancellable_error (void) | |
2937 | { | ||
2938 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2939 | |||
2940 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
2941 | "*assertion*current_action*FPI_DEVICE_ACTION_NONE*failed"); | ||
2942 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_null (fpi_device_get_cancellable (device)); |
2943 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | g_test_assert_expected_messages (); |
2944 | 1 | } | |
2945 | |||
2946 | static void | ||
2947 | 2 | test_driver_action_is_cancelled_open_vfunc (FpDevice *device) | |
2948 | { | ||
2949 | 2 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
2950 | |||
2951 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
|
2 | g_assert_cmpuint (fpi_device_get_current_action (device), ==, FPI_DEVICE_ACTION_OPEN); |
2952 | 2 | fake_dev->last_called_function = test_driver_action_is_cancelled_open_vfunc; | |
2953 | |||
2954 |
3/8✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
2 | g_assert_true (G_IS_CANCELLABLE (fpi_device_get_cancellable (device))); |
2955 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
|
2 | g_assert_false (fpi_device_action_is_cancelled (device)); |
2956 | |||
2957 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
|
2 | if (fake_dev->ext_cancellable) |
2958 | 1 | g_cancellable_cancel (fake_dev->ext_cancellable); | |
2959 | else | ||
2960 | 1 | g_cancellable_cancel (fpi_device_get_cancellable (device)); | |
2961 | |||
2962 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
|
2 | g_assert_true (fpi_device_action_is_cancelled (device)); |
2963 | |||
2964 | 2 | fpi_device_open_complete (device, NULL); | |
2965 | 2 | } | |
2966 | |||
2967 | static void | ||
2968 | 1 | test_driver_action_is_cancelled_open (void) | |
2969 | { | ||
2970 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2971 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
2972 | 1 | g_autoptr(GCancellable) cancellable = NULL; | |
2973 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(GError) error = NULL; |
2974 | 1 | FpiDeviceFake *fake_dev; | |
2975 | |||
2976 | 1 | dev_class->open = test_driver_action_is_cancelled_open_vfunc; | |
2977 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2978 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2979 | |||
2980 | 1 | cancellable = fake_dev->ext_cancellable = g_cancellable_new (); | |
2981 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_open_sync (device, cancellable, &error)); |
2982 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); |
2983 | |||
2984 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | g_assert (fake_dev->last_called_function == test_driver_action_is_cancelled_open_vfunc); |
2985 | 1 | } | |
2986 | |||
2987 | static void | ||
2988 | 1 | test_driver_action_internally_cancelled_open (void) | |
2989 | { | ||
2990 | 1 | g_autoptr(FpAutoResetClass) dev_class = auto_reset_device_class (); | |
2991 | 1 | g_autoptr(FpAutoCloseDevice) device = NULL; | |
2992 | 1 | g_autoptr(GCancellable) cancellable = NULL; | |
2993 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(GError) error = NULL; |
2994 | 1 | FpiDeviceFake *fake_dev; | |
2995 | |||
2996 | 1 | dev_class->open = test_driver_action_is_cancelled_open_vfunc; | |
2997 | 1 | device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
2998 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
2999 | |||
3000 | /* No error, just some internal cancellation but we let nothing happen externally. */ | ||
3001 | 1 | cancellable = g_cancellable_new (); | |
3002 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, cancellable, &error)); |
3003 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (error); |
3004 | |||
3005 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == test_driver_action_is_cancelled_open_vfunc); |
3006 | 1 | } | |
3007 | |||
3008 | static void | ||
3009 | 1 | test_driver_action_is_cancelled_error (void) | |
3010 | { | ||
3011 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
3012 | |||
3013 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
3014 | "*assertion*current_action*FPI_DEVICE_ACTION_NONE*failed"); | ||
3015 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fpi_device_action_is_cancelled (device)); |
3016 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | g_test_assert_expected_messages (); |
3017 | 1 | } | |
3018 | |||
3019 | static void | ||
3020 | 1 | test_driver_complete_actions_errors (void) | |
3021 | { | ||
3022 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
3023 | |||
3024 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
3025 | "*assertion*current_action*failed"); | ||
3026 | 1 | fpi_device_probe_complete (device, NULL, NULL, NULL); | |
3027 | 1 | g_test_assert_expected_messages (); | |
3028 | |||
3029 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
3030 | "*assertion*current_action*failed"); | ||
3031 | 1 | fpi_device_open_complete (device, NULL); | |
3032 | 1 | g_test_assert_expected_messages (); | |
3033 | |||
3034 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
3035 | "*assertion*current_action*failed"); | ||
3036 | 1 | fpi_device_close_complete (device, NULL); | |
3037 | 1 | g_test_assert_expected_messages (); | |
3038 | |||
3039 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
3040 | "*assertion*current_action*failed"); | ||
3041 | 1 | fpi_device_enroll_complete (device, NULL, NULL); | |
3042 | 1 | g_test_assert_expected_messages (); | |
3043 | |||
3044 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
3045 | "*assertion*current_action*failed"); | ||
3046 | 1 | fpi_device_verify_complete (device, NULL); | |
3047 | 1 | g_test_assert_expected_messages (); | |
3048 | |||
3049 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
3050 | "*assertion*current_action*failed"); | ||
3051 | 1 | fpi_device_identify_complete (device, NULL); | |
3052 | 1 | g_test_assert_expected_messages (); | |
3053 | |||
3054 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
3055 | "*assertion*current_action*failed"); | ||
3056 | 1 | fpi_device_capture_complete (device, NULL, NULL); | |
3057 | 1 | g_test_assert_expected_messages (); | |
3058 | |||
3059 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
3060 | "*assertion*current_action*failed"); | ||
3061 | 1 | fpi_device_delete_complete (device, NULL); | |
3062 | 1 | g_test_assert_expected_messages (); | |
3063 | |||
3064 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
3065 | "*assertion*current_action*failed"); | ||
3066 | 1 | fpi_device_list_complete (device, NULL, NULL); | |
3067 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | g_test_assert_expected_messages (); |
3068 | 1 | } | |
3069 | |||
3070 | static void | ||
3071 | 1 | test_driver_action_error_error (void) | |
3072 | { | ||
3073 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
3074 | |||
3075 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, | |
3076 | "*assertion*current_action*FPI_DEVICE_ACTION_NONE*failed"); | ||
3077 | 1 | fpi_device_action_error (device, NULL); | |
3078 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | g_test_assert_expected_messages (); |
3079 | 1 | } | |
3080 | |||
3081 | static void | ||
3082 | 1 | test_driver_action_error_all (void) | |
3083 | { | ||
3084 | 1 | g_autoptr(FpAutoCloseDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
3085 | 2 | g_autoptr(FpPrint) enrolled_print = make_fake_print_reffed (device, NULL); | |
3086 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(GPtrArray) prints = make_fake_prints_gallery (device, 0); |
3087 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(GError) error = NULL; |
3088 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
3089 | 1 | FpiDeviceFake *fake_dev; | |
3090 | |||
3091 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
3092 | 1 | fake_dev->return_action_error = TRUE; | |
3093 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID); | |
3094 | |||
3095 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_open_sync (device, NULL, &error)); |
3096 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->open); |
3097 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
3098 | 1 | g_clear_error (&error); | |
3099 | |||
3100 | 1 | fake_dev->return_action_error = FALSE; | |
3101 | 1 | fake_dev->ret_error = NULL; | |
3102 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
3103 | |||
3104 | 1 | fake_dev->return_action_error = TRUE; | |
3105 | |||
3106 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID); | |
3107 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | g_assert_null (fp_device_enroll_sync (device, fp_print_new (device), NULL, |
3108 | NULL, NULL, &error)); | ||
3109 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->enroll); |
3110 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
3111 | 1 | g_clear_error (&error); | |
3112 | |||
3113 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID); | |
3114 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, |
3115 | NULL, NULL, NULL, NULL, &error)); | ||
3116 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->verify); |
3117 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
3118 | 1 | g_clear_error (&error); | |
3119 | |||
3120 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID); | |
3121 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_identify_sync (device, prints, NULL, |
3122 | NULL, NULL, NULL, NULL, &error)); | ||
3123 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->identify); |
3124 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
3125 | 1 | g_clear_error (&error); | |
3126 | |||
3127 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID); | |
3128 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_null (fp_device_capture_sync (device, TRUE, NULL, &error)); |
3129 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->capture); |
3130 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
3131 | 1 | g_clear_error (&error); | |
3132 | |||
3133 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID); | |
3134 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_null (fp_device_list_prints_sync (device, NULL, &error)); |
3135 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->list); |
3136 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
3137 | 1 | g_clear_error (&error); | |
3138 | |||
3139 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID); | |
3140 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_delete_print_sync (device, enrolled_print, NULL, &error)); |
3141 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->delete); |
3142 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
3143 | 1 | g_clear_error (&error); | |
3144 | |||
3145 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID); | |
3146 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_clear_storage_sync (device, NULL, &error)); |
3147 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->clear_storage); |
3148 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
3149 | 1 | g_clear_error (&error); | |
3150 | |||
3151 | /* Test close last, as we can't operate on a closed device. */ | ||
3152 | 1 | fake_dev->ret_error = fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID); | |
3153 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_close_sync (device, NULL, &error)); |
3154 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->close); |
3155 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_DATA_INVALID); |
3156 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_clear_error (&error); |
3157 | 1 | } | |
3158 | |||
3159 | static void | ||
3160 | 1 | test_driver_action_error_fallback_all (void) | |
3161 | { | ||
3162 | 1 | g_autoptr(FpAutoCloseDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
3163 | 2 | g_autoptr(FpPrint) enrolled_print = make_fake_print_reffed (device, NULL); | |
3164 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(GPtrArray) prints = make_fake_prints_gallery (device, 0); |
3165 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | g_autoptr(GError) error = NULL; |
3166 | 1 | FpDeviceClass *dev_class = FP_DEVICE_GET_CLASS (device); | |
3167 | 1 | FpiDeviceFake *fake_dev; | |
3168 | |||
3169 | 1 | fake_dev = FPI_DEVICE_FAKE (device); | |
3170 | 1 | fake_dev->return_action_error = TRUE; | |
3171 | |||
3172 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
3173 | "*Device failed to pass an error to generic action " | ||
3174 | "error function*"); | ||
3175 | |||
3176 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_open_sync (device, NULL, &error)); |
3177 | 1 | g_test_assert_expected_messages (); | |
3178 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->open); |
3179 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
3180 | 1 | g_clear_error (&error); | |
3181 | |||
3182 | 1 | fake_dev->return_action_error = FALSE; | |
3183 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_true (fp_device_open_sync (device, NULL, NULL)); |
3184 | |||
3185 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
3186 | "*Device failed to pass an error to generic action " | ||
3187 | "error function*"); | ||
3188 | |||
3189 | 1 | fake_dev->return_action_error = TRUE; | |
3190 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
|
1 | g_assert_null (fp_device_enroll_sync (device, fp_print_new (device), NULL, |
3191 | NULL, NULL, &error)); | ||
3192 | 1 | g_test_assert_expected_messages (); | |
3193 | 1 | g_test_assert_expected_messages (); | |
3194 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->enroll); |
3195 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
3196 | 1 | g_clear_error (&error); | |
3197 | |||
3198 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
3199 | "*Device failed to pass an error to generic action " | ||
3200 | "error function*"); | ||
3201 | |||
3202 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_verify_sync (device, enrolled_print, NULL, |
3203 | NULL, NULL, NULL, NULL, &error)); | ||
3204 | 1 | g_test_assert_expected_messages (); | |
3205 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->verify); |
3206 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
3207 | 1 | g_clear_error (&error); | |
3208 | |||
3209 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
3210 | "*Device failed to pass an error to generic action " | ||
3211 | "error function*"); | ||
3212 | |||
3213 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_identify_sync (device, prints, NULL, |
3214 | NULL, NULL, NULL, NULL, &error)); | ||
3215 | 1 | g_test_assert_expected_messages (); | |
3216 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->identify); |
3217 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
3218 | 1 | g_clear_error (&error); | |
3219 | |||
3220 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
3221 | "*Device failed to pass an error to generic action " | ||
3222 | "error function*"); | ||
3223 | |||
3224 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_null (fp_device_capture_sync (device, TRUE, NULL, &error)); |
3225 | 1 | g_test_assert_expected_messages (); | |
3226 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->capture); |
3227 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
3228 | 1 | g_clear_error (&error); | |
3229 | |||
3230 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
3231 | "*Device failed to pass an error to generic action " | ||
3232 | "error function*"); | ||
3233 | |||
3234 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_null (fp_device_list_prints_sync (device, NULL, &error)); |
3235 | 1 | g_test_assert_expected_messages (); | |
3236 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->list); |
3237 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
3238 | 1 | g_clear_error (&error); | |
3239 | |||
3240 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
3241 | "*Device failed to pass an error to generic action " | ||
3242 | "error function*"); | ||
3243 | |||
3244 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_delete_print_sync (device, enrolled_print, NULL, &error)); |
3245 | 1 | g_test_assert_expected_messages (); | |
3246 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->delete); |
3247 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
3248 | 1 | g_clear_error (&error); | |
3249 | |||
3250 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
3251 | "*Device failed to pass an error to generic action " | ||
3252 | "error function*"); | ||
3253 | |||
3254 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_clear_storage_sync (device, NULL, &error)); |
3255 | 1 | g_test_assert_expected_messages (); | |
3256 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->clear_storage); |
3257 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
3258 | 1 | g_clear_error (&error); | |
3259 | |||
3260 | /* Test close last, as we can't operate on a closed device. */ | ||
3261 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, | |
3262 | "*Device failed to pass an error to generic action " | ||
3263 | "error function*"); | ||
3264 | |||
3265 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_assert_false (fp_device_close_sync (device, NULL, &error)); |
3266 | 1 | g_test_assert_expected_messages (); | |
3267 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_true (fake_dev->last_called_function == dev_class->close); |
3268 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
3269 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | g_clear_error (&error); |
3270 | 1 | } | |
3271 | |||
3272 | static void | ||
3273 | 1 | test_driver_add_timeout_func (FpDevice *device, gpointer user_data) | |
3274 | { | ||
3275 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
3276 | |||
3277 | 1 | fake_dev->last_called_function = test_driver_add_timeout_func; | |
3278 | 1 | } | |
3279 | |||
3280 | static void | ||
3281 | 1 | test_driver_add_timeout (void) | |
3282 | { | ||
3283 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
3284 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
3285 | 1 | FpDevice *data_check = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
3286 | |||
3287 | 1 | g_object_add_weak_pointer (G_OBJECT (data_check), (gpointer) & data_check); | |
3288 | 1 | fpi_device_add_timeout (device, 50, test_driver_add_timeout_func, | |
3289 | data_check, g_object_unref); | ||
3290 | |||
3291 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_nonnull (data_check); |
3292 | |||
3293 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
3 | while (FP_IS_DEVICE (data_check)) |
3294 | 2 | g_main_context_iteration (NULL, TRUE); | |
3295 | |||
3296 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (data_check); |
3297 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert (fake_dev->last_called_function == test_driver_add_timeout_func); |
3298 | 1 | } | |
3299 | |||
3300 | static gboolean | ||
3301 | 1 | test_driver_add_timeout_cancelled_timeout (gpointer data) | |
3302 | { | ||
3303 | 1 | GSource *source = data; | |
3304 | |||
3305 | 1 | g_source_destroy (source); | |
3306 | |||
3307 | 1 | return G_SOURCE_REMOVE; | |
3308 | } | ||
3309 | |||
3310 | static void | ||
3311 | 1 | test_driver_add_timeout_cancelled (void) | |
3312 | { | ||
3313 | 1 | g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
3314 | 1 | FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); | |
3315 | 1 | FpDevice *data_check = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); | |
3316 | 1 | GSource *source; | |
3317 | |||
3318 | 1 | g_object_add_weak_pointer (G_OBJECT (data_check), (gpointer) & data_check); | |
3319 | 1 | source = fpi_device_add_timeout (device, 2000, test_driver_add_timeout_func, | |
3320 | data_check, g_object_unref); | ||
3321 | |||
3322 | 1 | g_timeout_add (20, test_driver_add_timeout_cancelled_timeout, source); | |
3323 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_nonnull (data_check); |
3324 | |||
3325 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
3 | while (FP_IS_DEVICE (data_check)) |
3326 | 2 | g_main_context_iteration (NULL, TRUE); | |
3327 | |||
3328 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (data_check); |
3329 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | g_assert_null (fake_dev->last_called_function); |
3330 | 1 | } | |
3331 | |||
3332 | static void | ||
3333 | 1 | test_driver_error_types (void) | |
3334 | { | ||
3335 | 2 | g_autoptr(GError) error = NULL; | |
3336 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(GEnumClass) errors_enum = g_type_class_ref (FP_TYPE_DEVICE_ERROR); |
3337 | 1 | int i; | |
3338 | |||
3339 |
2/2✓ Branch 2 taken 10 times.
✓ Branch 3 taken 1 times.
|
12 | for (i = 0; g_enum_get_value (errors_enum, i); ++i) |
3340 | { | ||
3341 | 10 | g_autoptr(GError) e = NULL; | |
3342 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
10 | g_autoptr(GError) msg_e = NULL; |
3343 | 10 | g_autofree char *expected_msg = NULL; | |
3344 | 20 | g_autofree char *enum_string = g_enum_to_string (FP_TYPE_DEVICE_ERROR, i); | |
3345 | |||
3346 | 10 | e = fpi_device_error_new (i); | |
3347 |
3/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 10 times.
|
10 | g_assert_error (e, FP_DEVICE_ERROR, i); |
3348 | |||
3349 | 10 | expected_msg = g_strdup_printf ("Error message %s", enum_string); | |
3350 | 10 | msg_e = fpi_device_error_new_msg (i, "Error message %s", enum_string); | |
3351 |
3/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 10 times.
|
10 | g_assert_error (msg_e, FP_DEVICE_ERROR, i); |
3352 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
|
10 | g_assert_cmpstr (msg_e->message, ==, expected_msg); |
3353 | } | ||
3354 | |||
3355 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "*Unsupported error*"); | |
3356 | 1 | error = fpi_device_error_new (i + 1); | |
3357 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_ERROR, FP_DEVICE_ERROR_GENERAL); |
3358 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | g_test_assert_expected_messages (); |
3359 | 1 | } | |
3360 | |||
3361 | static void | ||
3362 | 1 | test_driver_retry_error_types (void) | |
3363 | { | ||
3364 | 2 | g_autoptr(GError) error = NULL; | |
3365 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | g_autoptr(GEnumClass) errors_enum = g_type_class_ref (FP_TYPE_DEVICE_RETRY); |
3366 | 1 | int i; | |
3367 | |||
3368 |
2/2✓ Branch 2 taken 4 times.
✓ Branch 3 taken 1 times.
|
6 | for (i = 0; g_enum_get_value (errors_enum, i); ++i) |
3369 | { | ||
3370 | 4 | g_autoptr(GError) e = NULL; | |
3371 |
1/2✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
|
4 | g_autoptr(GError) msg_e = NULL; |
3372 | 4 | g_autofree char *expected_msg = NULL; | |
3373 | 8 | g_autofree char *enum_string = g_enum_to_string (FP_TYPE_DEVICE_RETRY, i); | |
3374 | |||
3375 | 4 | e = fpi_device_retry_new (i); | |
3376 |
3/6✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
|
4 | g_assert_error (e, FP_DEVICE_RETRY, i); |
3377 | |||
3378 | 4 | expected_msg = g_strdup_printf ("Retry error message %s", enum_string); | |
3379 | 4 | msg_e = fpi_device_retry_new_msg (i, "Retry error message %s", enum_string); | |
3380 |
3/6✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
|
4 | g_assert_error (msg_e, FP_DEVICE_RETRY, i); |
3381 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
|
4 | g_assert_cmpstr (msg_e->message, ==, expected_msg); |
3382 | } | ||
3383 | |||
3384 | 1 | g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "*Unsupported error*"); | |
3385 | 1 | error = fpi_device_retry_new (i + 1); | |
3386 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
|
1 | g_assert_error (error, FP_DEVICE_RETRY, FP_DEVICE_RETRY_GENERAL); |
3387 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | g_test_assert_expected_messages (); |
3388 | 1 | } | |
3389 | |||
3390 | int | ||
3391 | 1 | main (int argc, char *argv[]) | |
3392 | { | ||
3393 | 1 | g_test_init (&argc, &argv, NULL); | |
3394 | |||
3395 | 1 | g_test_add_func ("/driver/get_driver", test_driver_get_driver); | |
3396 | 1 | g_test_add_func ("/driver/get_device_id", test_driver_get_device_id); | |
3397 | 1 | g_test_add_func ("/driver/get_name", test_driver_get_name); | |
3398 | 1 | g_test_add_func ("/driver/is_open", test_driver_is_open); | |
3399 | 1 | g_test_add_func ("/driver/get_scan_type/press", test_driver_get_scan_type_press); | |
3400 | 1 | g_test_add_func ("/driver/get_scan_type/swipe", test_driver_get_scan_type_swipe); | |
3401 | 1 | g_test_add_func ("/driver/set_scan_type/press", test_driver_set_scan_type_press); | |
3402 | 1 | g_test_add_func ("/driver/set_scan_type/swipe", test_driver_set_scan_type_swipe); | |
3403 | 1 | g_test_add_func ("/driver/finger_status/inactive", test_driver_finger_status_inactive); | |
3404 | 1 | g_test_add_func ("/driver/finger_status/waiting", test_driver_finger_status_needed); | |
3405 | 1 | g_test_add_func ("/driver/finger_status/present", test_driver_finger_status_present); | |
3406 | 1 | g_test_add_func ("/driver/finger_status/changes", test_driver_finger_status_changes); | |
3407 | 1 | g_test_add_func ("/driver/get_nr_enroll_stages", test_driver_get_nr_enroll_stages); | |
3408 | 1 | g_test_add_func ("/driver/set_nr_enroll_stages", test_driver_set_nr_enroll_stages); | |
3409 | 1 | g_test_add_func ("/driver/supports_identify", test_driver_supports_identify); | |
3410 | 1 | g_test_add_func ("/driver/supports_capture", test_driver_supports_capture); | |
3411 | 1 | g_test_add_func ("/driver/has_storage", test_driver_has_storage); | |
3412 | 1 | g_test_add_func ("/driver/do_not_support_identify", test_driver_do_not_support_identify); | |
3413 | 1 | g_test_add_func ("/driver/do_not_support_capture", test_driver_do_not_support_capture); | |
3414 | 1 | g_test_add_func ("/driver/has_not_storage", test_driver_has_not_storage); | |
3415 | 1 | g_test_add_func ("/driver/get_usb_device", test_driver_get_usb_device); | |
3416 | 1 | g_test_add_func ("/driver/get_virtual_env", test_driver_get_virtual_env); | |
3417 | 1 | g_test_add_func ("/driver/get_driver_data", test_driver_get_driver_data); | |
3418 | 1 | g_test_add_func ("/driver/features/probe_updates", test_driver_features_probe_updates); | |
3419 | 1 | g_test_add_func ("/driver/initial_features", test_driver_initial_features); | |
3420 | 1 | g_test_add_func ("/driver/initial_features/none", test_driver_initial_features_none); | |
3421 | 1 | g_test_add_func ("/driver/initial_features/no_capture", test_driver_initial_features_no_capture); | |
3422 | 1 | g_test_add_func ("/driver/initial_features/no_verify", test_driver_initial_features_no_verify); | |
3423 | 1 | g_test_add_func ("/driver/initial_features/no_identify", test_driver_initial_features_no_identify); | |
3424 | 1 | g_test_add_func ("/driver/initial_features/no_storage", test_driver_initial_features_no_storage); | |
3425 | 1 | g_test_add_func ("/driver/initial_features/no_list", test_driver_initial_features_no_list); | |
3426 | 1 | g_test_add_func ("/driver/initial_features/no_delete", test_driver_initial_features_no_delete); | |
3427 | 1 | g_test_add_func ("/driver/initial_features/no_clear", test_driver_initial_features_no_clear); | |
3428 | |||
3429 | |||
3430 | 1 | g_test_add_func ("/driver/probe", test_driver_probe); | |
3431 | 1 | g_test_add_func ("/driver/probe/error", test_driver_probe_error); | |
3432 | 1 | g_test_add_func ("/driver/probe/action_error", test_driver_probe_action_error); | |
3433 | 1 | g_test_add_func ("/driver/open", test_driver_open); | |
3434 | 1 | g_test_add_func ("/driver/open/error", test_driver_open_error); | |
3435 | 1 | g_test_add_func ("/driver/close", test_driver_close); | |
3436 | 1 | g_test_add_func ("/driver/close/error", test_driver_close_error); | |
3437 | 1 | g_test_add_func ("/driver/enroll", test_driver_enroll); | |
3438 | 1 | g_test_add_func ("/driver/enroll/error", test_driver_enroll_error); | |
3439 | 1 | g_test_add_func ("/driver/enroll/error/no_print", test_driver_enroll_error_no_print); | |
3440 | 1 | g_test_add_func ("/driver/enroll/progress", test_driver_enroll_progress); | |
3441 | 1 | g_test_add_func ("/driver/enroll/update_nbis", test_driver_enroll_update_nbis); | |
3442 | 1 | g_test_add_func ("/driver/enroll/update_nbis_wrong_device", | |
3443 | test_driver_enroll_update_nbis_wrong_device); | ||
3444 | 1 | g_test_add_func ("/driver/enroll/update_nbis_wrong_driver", | |
3445 | test_driver_enroll_update_nbis_wrong_driver); | ||
3446 | 1 | g_test_add_func ("/driver/enroll/update_nbis_missing_feature", | |
3447 | test_driver_enroll_update_nbis_missing_feature); | ||
3448 | 1 | g_test_add_func ("/driver/verify", test_driver_verify); | |
3449 | 1 | g_test_add_func ("/driver/verify/fail", test_driver_verify_fail); | |
3450 | 1 | g_test_add_func ("/driver/verify/retry", test_driver_verify_retry); | |
3451 | 1 | g_test_add_func ("/driver/verify/error", test_driver_verify_error); | |
3452 | 1 | g_test_add_func ("/driver/verify/not_supported", test_driver_verify_not_supported); | |
3453 | 1 | g_test_add_func ("/driver/verify/report_no_cb", test_driver_verify_report_no_callback); | |
3454 | 1 | g_test_add_func ("/driver/verify/not_reported", test_driver_verify_not_reported); | |
3455 | 1 | g_test_add_func ("/driver/verify/complete_retry", test_driver_verify_complete_retry); | |
3456 | 1 | g_test_add_func ("/driver/identify", test_driver_identify); | |
3457 | 1 | g_test_add_func ("/driver/identify/fail", test_driver_identify_fail); | |
3458 | 1 | g_test_add_func ("/driver/identify/retry", test_driver_identify_retry); | |
3459 | 1 | g_test_add_func ("/driver/identify/error", test_driver_identify_error); | |
3460 | 1 | g_test_add_func ("/driver/identify/not_reported", test_driver_identify_not_reported); | |
3461 | 1 | g_test_add_func ("/driver/identify/complete_retry", test_driver_identify_complete_retry); | |
3462 | 1 | g_test_add_func ("/driver/identify/report_no_cb", test_driver_identify_report_no_callback); | |
3463 | |||
3464 | 1 | g_test_add_func ("/driver/identify/suspend_continues", test_driver_identify_suspend_continues); | |
3465 | 1 | g_test_add_func ("/driver/identify/suspend_succeeds", test_driver_identify_suspend_succeeds); | |
3466 | 1 | g_test_add_func ("/driver/identify/suspend_busy_error", test_driver_identify_suspend_busy_error); | |
3467 | 1 | g_test_add_func ("/driver/identify/suspend_while_idle", test_driver_identify_suspend_while_idle); | |
3468 | |||
3469 | 1 | g_test_add_func ("/driver/identify/warmup_cooldown", test_driver_identify_warmup_cooldown); | |
3470 | |||
3471 | 1 | g_test_add_func ("/driver/capture", test_driver_capture); | |
3472 | 1 | g_test_add_func ("/driver/capture/not_supported", test_driver_capture_not_supported); | |
3473 | 1 | g_test_add_func ("/driver/capture/error", test_driver_capture_error); | |
3474 | 1 | g_test_add_func ("/driver/list", test_driver_list); | |
3475 | 1 | g_test_add_func ("/driver/list/error", test_driver_list_error); | |
3476 | 1 | g_test_add_func ("/driver/list/no_storage", test_driver_list_no_storage); | |
3477 | 1 | g_test_add_func ("/driver/delete", test_driver_delete); | |
3478 | 1 | g_test_add_func ("/driver/delete/error", test_driver_delete_error); | |
3479 | 1 | g_test_add_func ("/driver/clear_storage", test_driver_clear_storage); | |
3480 | 1 | g_test_add_func ("/driver/clear_storage/error", test_driver_clear_storage_error); | |
3481 | 1 | g_test_add_func ("/driver/cancel", test_driver_cancel); | |
3482 | 1 | g_test_add_func ("/driver/cancel/fail", test_driver_cancel_fail); | |
3483 | |||
3484 | 1 | g_test_add_func ("/driver/critical", test_driver_critical); | |
3485 | |||
3486 | 1 | g_test_add_func ("/driver/get_current_action", test_driver_current_action); | |
3487 | 1 | g_test_add_func ("/driver/get_current_action/open", test_driver_current_action_open); | |
3488 | 1 | g_test_add_func ("/driver/get_cancellable/error", test_driver_action_get_cancellable_error); | |
3489 | 1 | g_test_add_func ("/driver/get_cancellable/open", test_driver_action_get_cancellable_open); | |
3490 | 1 | g_test_add_func ("/driver/get_cancellable/open/internal", test_driver_action_get_cancellable_open_internal); | |
3491 | 1 | g_test_add_func ("/driver/action_is_cancelled/open", test_driver_action_is_cancelled_open); | |
3492 | 1 | g_test_add_func ("/driver/action_is_cancelled/open/internal", test_driver_action_internally_cancelled_open); | |
3493 | 1 | g_test_add_func ("/driver/action_is_cancelled/error", test_driver_action_is_cancelled_error); | |
3494 | 1 | g_test_add_func ("/driver/complete_action/all/error", test_driver_complete_actions_errors); | |
3495 | 1 | g_test_add_func ("/driver/action_error/error", test_driver_action_error_error); | |
3496 | 1 | g_test_add_func ("/driver/action_error/all", test_driver_action_error_all); | |
3497 | 1 | g_test_add_func ("/driver/action_error/fail", test_driver_action_error_fallback_all); | |
3498 | |||
3499 | 1 | g_test_add_func ("/driver/timeout", test_driver_add_timeout); | |
3500 | 1 | g_test_add_func ("/driver/timeout/cancelled", test_driver_add_timeout_cancelled); | |
3501 | |||
3502 | 1 | g_test_add_func ("/driver/error_types", test_driver_error_types); | |
3503 | 1 | g_test_add_func ("/driver/retry_error_types", test_driver_retry_error_types); | |
3504 | |||
3505 | 1 | return g_test_run (); | |
3506 | } | ||
3507 |