From b85f1ed77323cc9c08837aa5205e265969479c2e Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Thu, 28 Mar 2024 19:20:44 +0100 Subject: [PATCH] reset handler option by cancel --- src/kds_s2000w_net.c | 18 ++++++++++++++++ tests/kds_s2000w_net_read_tests.c | 36 +++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 602b5ed..0b5ac81 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -207,6 +207,24 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, if (h->read_info->cancel) { *length = 0; h->read_info->cancel = 0; + h->current_scan_status->current_image_number = 1; + h->current_scan_status->available_images = 0; + h->current_scan_status->downloaded_images = 0; + h->current_scan_status->complete_scanned = 0; + h->current_metadata->pixels_per_line = 0; + h->current_metadata->lines = 0; + h->current_metadata->valid = 0; + h->current_metadata->scanned_all_complete = 0; + h->read_info->scan_started = 0; + h->read_info->read_size = 0; + h->read_info->readed_bytes_per_line = 0; + h->read_info->readed_lines = 0; + free(h->jpg_image->data); + h->jpg_image->data = NULL; + h->jpg_image->size = 0; + free(h->pnm_image->data); + h->pnm_image->data = NULL; + h->pnm_image->size = 0; kds_s2000w_handler_recreate_session(h); return SANE_STATUS_CANCELLED; } diff --git a/tests/kds_s2000w_net_read_tests.c b/tests/kds_s2000w_net_read_tests.c index f1d9f31..65eca99 100644 --- a/tests/kds_s2000w_net_read_tests.c +++ b/tests/kds_s2000w_net_read_tests.c @@ -24,6 +24,25 @@ void sane_kds_s2000w_net_read_cancel_test() handler* h = init_handler(); h->read_info->scan_started = 1; h->read_info->cancel = 1; + h->sessionid = 123123; + h->current_scan_status->current_image_number = 5; + h->current_scan_status->available_images = 20; + h->current_scan_status->downloaded_images = 4; + h->current_scan_status->complete_scanned = 1; + h->current_metadata->pixels_per_line = 1920; + h->current_metadata->lines = 1080; + h->current_metadata->valid = 1; + h->current_metadata->scanned_all_complete = 1; + h->read_info->scan_started = 1; + h->read_info->read_size = 10240; + h->read_info->readed_bytes_per_line = 1085; + h->read_info->readed_lines = 150; + h->jpg_image->data = malloc(sizeof(char) * 50); + h->jpg_image->size = 50; + h->jpg_image->data = memset(h->jpg_image->data, 15, h->jpg_image->size); + h->pnm_image->data = malloc(sizeof(char) * 100); + h->pnm_image->size = 100; + h->pnm_image->data = memset(h->pnm_image->data, 66, h->pnm_image->size); int* length = malloc(sizeof(int)); *length = 0; response* resp_open_session = kds_s2000w_client_response_init(); @@ -46,6 +65,23 @@ void sane_kds_s2000w_net_read_cancel_test() assert_int_equal(h->read_info->cancel, 0); assert_int_equal(status, SANE_STATUS_CANCELLED); + assert_int_equal(h->sessionid, 8154711); + assert_int_equal(h->current_scan_status->current_image_number, 1); + assert_int_equal(h->current_scan_status->available_images, 0); + assert_int_equal(h->current_scan_status->downloaded_images, 0); + assert_int_equal(h->current_scan_status->complete_scanned, 0); + assert_int_equal(h->current_metadata->pixels_per_line, 0); + assert_int_equal(h->current_metadata->lines, 0); + assert_int_equal(h->current_metadata->valid, 0); + assert_int_equal(h->current_metadata->scanned_all_complete, 0); + assert_int_equal(h->read_info->scan_started, 0); + assert_int_equal(h->read_info->read_size, 0); + assert_int_equal(h->read_info->readed_bytes_per_line, 0); + assert_int_equal(h->read_info->readed_lines, 0); + assert_null(h->jpg_image->data); + assert_int_equal(h->jpg_image->size, 0); + assert_null(h->pnm_image->data); + assert_int_equal(h->pnm_image->size, 0); free(length); length = NULL; -- 2.39.5