]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
fix busy device error
authorBastian Dehn <hhaalo@arcor.de>
Mon, 25 Mar 2024 19:26:47 +0000 (20:26 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Mon, 25 Mar 2024 19:28:01 +0000 (20:28 +0100)
src/kds_s2000w_handler.c
tests/kds_s2000w_net_tests.c
tests/kds_s2000w_net_tests.h
tests/kds_s2000w_net_tests_run.c

index 3f9c672a91c017307cb7572cbb22eb4f2ebc9960..b83bcba50f01d545e7aeac7fe791821962698b64 100644 (file)
@@ -323,11 +323,8 @@ void kds_s2000w_handler_open(const char* devicename, void** handle)
                return;
        }
 
-       if (resp->code == 423) {
-               kds_s2000w_client_response_free(resp);
-               resp = NULL;
+       if (resp->code == 423)
                h->state = BUSY;
-       }
 
        if (resp->code == 200) {
                h->current_scanner_config = json_tokener_parse(resp->data);
index d33b25bca81677de41c794f76f799ff1f184494a..ccceb5aa092a50fc8c9490e537306ffa81c726e5 100644 (file)
@@ -912,6 +912,30 @@ void sane_kds_s2000w_net_open()
        assert_int_equal(h->sessionid, 1251877821);
        assert_int_equal(status, SANE_STATUS_GOOD);
 
+       free_handler(h);
+       h = NULL;
+       kds_s2000w_client_response_free(resp);
+       resp = NULL;
+       free(hlist);
+       hlist = NULL;
+}
+
+void sane_kds_s2000w_net_open_busy_device()
+{
+       response* resp = kds_s2000w_client_response_init();
+       resp->code = 423;
+       will_return(mock_response, resp);
+       will_return(__wrap_kds_s2000w_client_open_session, 0);
+       expect_function_call(__wrap_kds_s2000w_client_open_session);
+       void** hlist = malloc(sizeof(void*));
+
+       SANE_Status status = _sane_kds_s2000w_net_open("kds_s2000w_net", hlist);
+       handler* h = (handler*) *hlist;
+
+       assert_int_equal(h->sessionid, 0);
+       assert_int_equal(h->state, BUSY);
+       assert_int_equal(status, SANE_STATUS_DEVICE_BUSY);
+
        free_handler(h);
        h = NULL;
        kds_s2000w_client_response_free(resp);
index 61b997c0ee0e44a54a44c8af28cfb4ea1aec9c44..e00bfd3efe50f732f320f598a7911073bd9f5fd4 100644 (file)
@@ -41,5 +41,6 @@ void sane_kds_s2000w_net_start_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();
 
 #endif
\ No newline at end of file
index f3a7959f067c84df9d6ed8c1ba619ba5f0944000..d286f879781487df31a66ef6dc2e1842329ff743 100644 (file)
@@ -126,13 +126,14 @@ int main()
                cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_control_get_option_twentyone, setup_default_get_option, teardown_default_get_option),
                cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_control_get_option_twentytwo, setup_default_get_option, teardown_default_get_option),
                cmocka_unit_test(sane_kds_s2000w_net_start_cancel),
+               cmocka_unit_test(sane_kds_s2000w_net_get_parameter_cancel),
+               cmocka_unit_test(sane_kds_s2000w_net_cancel),
+               cmocka_unit_test(sane_kds_s2000w_net_open),
+               cmocka_unit_test(sane_kds_s2000w_net_open_busy_device),
                cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_start, setup_net_start, teardown_net_start),
                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(sane_kds_s2000w_net_get_parameter_cancel),
-               cmocka_unit_test(sane_kds_s2000w_net_cancel),
-               cmocka_unit_test(sane_kds_s2000w_net_open)
+               cmocka_unit_test_setup_teardown(sane_kds_s2000w_net_start_two_pages_per_feeder, setup_net_start, teardown_net_start)
        };
 
        return cmocka_run_group_tests(net_tests, NULL, NULL);