From 0483c86add2f496021560b82476d22e2497006be Mon Sep 17 00:00:00 2001 From: Matthias Vogelgesang Date: Mon, 5 Mar 2012 16:12:53 +0100 Subject: Complete async xfer infrastructure --- test/test-mock.c | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/test-mock.c b/test/test-mock.c index 5831951..5340166 100644 --- a/test/test-mock.c +++ b/test/test-mock.c @@ -32,14 +32,14 @@ static void test_recording(Fixture *fixture, gconstpointer data) UcaCamera *camera = UCA_CAMERA(fixture->camera); uca_camera_stop_recording(camera, &error); - g_assert(error != NULL); + g_assert_error(error, UCA_CAMERA_ERROR, UCA_CAMERA_ERROR_NOT_RECORDING); g_error_free(error); error = NULL; uca_camera_start_recording(camera, &error); - g_assert(error == NULL); + g_assert_no_error(error); uca_camera_stop_recording(camera, &error); - g_assert(error == NULL); + g_assert_no_error(error); } static void test_recording_signal(Fixture *fixture, gconstpointer data) @@ -57,6 +57,34 @@ static void test_recording_signal(Fixture *fixture, gconstpointer data) g_assert(success == TRUE); } +static void grab_func(gpointer data, gpointer user_data) +{ + gboolean *success = (gboolean *) user_data; + *success = TRUE; +} + +static void test_recording_async(Fixture *fixture, gconstpointer data) +{ + UcaCamera *camera = UCA_CAMERA(fixture->camera); + + gboolean success = FALSE; + uca_camera_set_grab_func(camera, grab_func, &success); + + g_object_set(G_OBJECT(camera), + "framerate", 10, + "transfer-asynchronously", TRUE, + NULL); + + GError *error = NULL; + uca_camera_start_recording(camera, &error); + g_assert_no_error(error); + + g_usleep(G_USEC_PER_SEC / 8); + + uca_camera_stop_recording(camera, &error); + g_assert_no_error(error); +} + static void test_recording_property(Fixture *fixture, gconstpointer data) { UcaCamera *camera = UCA_CAMERA(fixture->camera); @@ -124,6 +152,7 @@ int main(int argc, char *argv[]) g_test_add("/recording", Fixture, NULL, fixture_setup, test_recording, fixture_teardown); g_test_add("/recording/signal", Fixture, NULL, fixture_setup, test_recording_signal, fixture_teardown); + g_test_add("/recording/asynchronous", Fixture, NULL, fixture_setup, test_recording_async, fixture_teardown); g_test_add("/properties/base", Fixture, NULL, fixture_setup, test_base_properties, fixture_teardown); g_test_add("/properties/recording", Fixture, NULL, fixture_setup, test_recording_property, fixture_teardown); g_test_add("/properties/binnings", Fixture, NULL, fixture_setup, test_binnings_properties, fixture_teardown); -- cgit v1.2.3