]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
Revert "remove option feeder automatic"
authorBastian Dehn <hhaalo@arcor.de>
Fri, 27 Dec 2024 08:11:46 +0000 (09:11 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Fri, 27 Dec 2024 08:11:46 +0000 (09:11 +0100)
This reverts commit 75f1f7fd983309d72910b333f58c088ea792aa60.

src/kds_s2000w_handler.c
src/kds_s2000w_handler_opts.c
src/kds_s2000w_net.c
src/kds_s2000w_option_descriptors.c
tests/kds_s2000w_net_tests.c
tests/kds_s2000w_net_tests.h
tests/kds_s2000w_net_tests_run.c
tests/kds_s2000w_option_descriptor_tests.c

index 440e0ca978afe44904aff8c124fe2e97980643d2..7088e1644fc78ad4d75f883904916f866fdcb586 100644 (file)
@@ -301,6 +301,7 @@ void kds_s2000w_handler_open(const char* devicename, void** handle)
                return;
        }
 
+
        h->image->size = 0;
        h->image->data = NULL;
 
index 3b9cb89d43bb89f644e138ac816d990f39af8f42..c82ba75cb9828ca528c0d4ce7babfeeec5012ed4 100644 (file)
@@ -133,6 +133,9 @@ void kds_s2000w_handler_get_option(handler* h, int option, void* value, int* inf
                        if (strcmp(value, "DocumentFeeder") == 0)
                                h->current_scan_status->feeder = 1;
 
+                       if (strcmp(value, "Automatic") == 0)
+                               h->current_scan_status->feeder = 2;
+
                        break;
                case 3:
                        value_object = json_object_object_get(config, "ColorMode");
@@ -235,6 +238,9 @@ void kds_s2000w_handler_set_option(handler* h, int option, void* value, int* inf
                        if (strcmp(value, "DocumentFeeder") == 0)
                                h->current_scan_status->feeder = 1;
 
+                       if (strcmp(value, "Automatic") == 0)
+                               h->current_scan_status->feeder = 2;
+
                        break;
                case 3:
                        value_object = json_object_object_get(config, "ColorMode");
index 46d9e4fcc47532deb98e177ccd3c590385a545f5..17b11d3c6a9c3da2668066d97ea9cd524951c0fe 100644 (file)
@@ -175,7 +175,8 @@ SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle)
                kds_s2000w_handler_start_scan(h);
        }
 
-       if (h->current_scan_status->downloaded_images > 0
+       if (h->current_scan_status->feeder == 0
+               && h->current_scan_status->downloaded_images > 0
                && h->current_scan_status->available_images < 1)
                return SANE_STATUS_NO_DOCS;
 
index 0adacb6877444ed4b698bf842c9346cfec947e13..4703861cef36fd3b773f6d3635af9615693d0f5c 100644 (file)
@@ -453,8 +453,9 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_scan_source()
 
        constraint_scan_source = malloc(sizeof(SANE_String_Const*) * 4);
        constraint_scan_source[0] = "DocumentFeeder";
-       constraint_scan_source[1] = "Flatbed";
-       constraint_scan_source[2] = NULL;
+       constraint_scan_source[1] = "Automatic";
+       constraint_scan_source[2] = "Flatbed";
+       constraint_scan_source[3] = NULL;
 
        SANE_Option_Descriptor descriptor = {
                SANE_NAME_SCAN_SOURCE,
@@ -462,7 +463,7 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_scan_source()
                SANE_DESC_SCAN_SOURCE,
                SANE_TYPE_STRING,
                SANE_UNIT_NONE,
-               sizeof(SANE_String_Const*) * 3,
+               sizeof(SANE_String_Const*) * 4,
                SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT,
                SANE_CONSTRAINT_STRING_LIST,
                {.string_list = constraint_scan_source}
index 93bafe1711eaf61ab2f453d950d3b3176c5f33cb..c8e3b437aa44d8aab4b1ae5de970de68e228b41c 100644 (file)
@@ -324,6 +324,99 @@ void sane_kds_s2000w_net_start_two_pages_per_feeder(void** state)
        h = NULL;
 }
 
+void sane_kds_s2000w_net_start_slow_two_pages_per_feeder(void** state)
+{
+       response** response_list = (response**) *state;
+       will_return(mock_response, response_list[0]);
+       will_return(__wrap_kds_s2000w_client_start_scan, 0);
+       response* resp_status = kds_s2000w_client_response_init();
+       resp_status->data = realloc(resp_status->data, 205);
+       const char* status = "{ \
+               \"Status\": { \
+                       \"NumImagesScanned\": 1, \
+                       \"NumImagesStored\": 1, \
+                       \"State\": \"Scanning\", \
+                       \"ErrorNum\": 0, \
+                       \"LastError\": \"Status: 200 Success\", \
+                       \"PaperDetected\": \"0\", \
+                       \"PercentAvailable\": 99 \
+               }}\0";
+       memcpy(resp_status->data, status, 205);
+       resp_status->code = 200;
+       resp_status->size = 205;
+       will_return(mock_response, resp_status);
+       will_return(__wrap_kds_s2000w_client_status_session, 0);
+       will_return(mock_response, response_list[2]);
+       will_return(__wrap_kds_s2000w_client_get_image, 0);
+       will_return(mock_response, response_list[0]);
+       will_return(__wrap_kds_s2000w_client_delete_image, 0);
+       expect_function_call(__wrap_kds_s2000w_client_start_scan);
+       expect_function_call(__wrap_kds_s2000w_client_status_session);
+       expect_function_call(__wrap_kds_s2000w_client_get_image);
+       expect_function_call(__wrap_kds_s2000w_client_delete_image);
+
+       handler* h = init_handler();
+       h->current_scan_status->feeder = 1;
+       const char* test_config = "{\"Configuration\": { \"ColorMode\": \"Color\" } }";
+       h->current_scanner_config = json_tokener_parse(test_config);
+
+       int result = _sane_kds_s2000w_net_start(h);
+
+       resp_status->data = realloc(resp_status->data, 210);
+       const char* status2 = "{ \
+               \"Status\": { \
+                       \"NumImagesScanned\": 2, \
+                       \"NumImagesStored\": 1, \
+                       \"State\": \"Done Scanning\", \
+                       \"ErrorNum\": 0, \
+                       \"LastError\": \"Status: 200 Success\", \
+                       \"PaperDetected\": \"0\", \
+                       \"PercentAvailable\": 99 \
+               }}\0";
+       memcpy(resp_status->data, status2, 210);
+       resp_status->code = 200;
+       resp_status->size = 210;
+       will_return(mock_response, resp_status);
+       will_return(__wrap_kds_s2000w_client_status_session, 0);
+       will_return(mock_response, response_list[2]);
+       will_return(__wrap_kds_s2000w_client_get_image, 0);
+       will_return(mock_response, response_list[0]);
+       will_return(__wrap_kds_s2000w_client_delete_image, 0);
+       will_return(mock_response, response_list[0]);
+       will_return(__wrap_kds_s2000w_client_stop_scan, 0);
+       expect_function_call(__wrap_kds_s2000w_client_status_session);
+       expect_function_call(__wrap_kds_s2000w_client_get_image);
+       expect_function_call(__wrap_kds_s2000w_client_delete_image);
+       expect_function_call(__wrap_kds_s2000w_client_stop_scan);
+
+       result = _sane_kds_s2000w_net_start(h);
+
+       assert_int_equal(result, SANE_STATUS_GOOD);
+       assert_int_equal(h->current_scan_status->complete_scanned, 1);
+
+       json_object_put(h->current_scanner_config);
+       h->current_scanner_config = NULL;
+       kds_s2000w_client_response_free(resp_status);
+       resp_status = NULL;
+
+       free_handler(h);
+       h = NULL;
+}
+
+void sane_kds_s2000w_net_get_parameter_cancel()
+{
+       handler* h = init_handler();
+       h->read_info->cancel = 1;
+
+       SANE_Status status = _sane_kds_s2000w_net_get_parameters(h, NULL);
+
+       assert_int_equal(h->read_info->cancel, 0);
+       assert_int_equal(status, SANE_STATUS_CANCELLED);
+
+       free_handler(h);
+       h = NULL;
+}
+
 void sane_kds_s2000w_net_cancel()
 {
        response* resp_status = kds_s2000w_client_response_init();
index de91bbca7e4bad5e1f1e52e1d3f451cb6d373141..34c1bf89ee06f4ae0d968d3572b3778081b75c2e 100644 (file)
@@ -16,6 +16,8 @@ void sane_kds_s2000w_net_start(void** state);
 void sane_kds_s2000w_net_start_one_page_per_flatscan(void** state);
 void sane_kds_s2000w_net_start_one_page_per_feeder(void** state);
 void sane_kds_s2000w_net_start_two_pages_per_feeder(void** state);
+void sane_kds_s2000w_net_start_slow_two_pages_per_feeder(void** state);
+void sane_kds_s2000w_net_get_parameter_cancel();
 void sane_kds_s2000w_net_cancel();
 void sane_kds_s2000w_net_open();
 void sane_kds_s2000w_net_open_busy_device();
index 0a30e9d65ea32bacf6a26e61ac3df51d7eddd532..1b2203eecda16c64b965d6ff2405914bad720e8c 100644 (file)
@@ -78,6 +78,7 @@ int main()
                cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_start_one_page_per_flatscan, setup_net_start, teardown_net_start),
                cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_start_one_page_per_feeder, setup_net_start, teardown_net_start),
                cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_start_two_pages_per_feeder, setup_net_start, teardown_net_start),
+               cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_start_slow_two_pages_per_feeder, setup_net_start, teardown_net_start)
        };
 
        return cmocka_run_group_tests(net_tests, NULL, NULL);
index 55f657476025ab0fd28e1d11920380508e9f04b7..c8e9872a61fc17a48e499e98de10fddcd577c1ff 100644 (file)
@@ -69,12 +69,13 @@ void kds_s2000w_option_get_descriptor_two()
        assert_string_equal(SANE_DESC_SCAN_SOURCE, option->desc);
        assert_int_equal(SANE_TYPE_STRING, option->type);
        assert_int_equal(SANE_UNIT_NONE, option->unit);
-       assert_int_equal(sizeof(SANE_String_Const*) * 3,  option->size);
+       assert_int_equal(sizeof(SANE_String_Const*) * 4,  option->size);
        assert_int_equal(SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT, option->cap);
        assert_int_equal(SANE_CONSTRAINT_STRING_LIST, option->constraint_type);
        assert_string_equal("DocumentFeeder", option->constraint.string_list[0]);
-       assert_string_equal("Flatbed", option->constraint.string_list[1]);
-       assert_null(option->constraint.string_list[2]);
+       assert_string_equal("Automatic", option->constraint.string_list[1]);
+       assert_string_equal("Flatbed", option->constraint.string_list[2]);
+       assert_null(option->constraint.string_list[3]);
 }
 
 void kds_s2000w_option_get_descriptor_three()