]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add load config test io error
authorBastian Dehn <hhaalo@arcor.de>
Sun, 9 Nov 2025 15:22:46 +0000 (16:22 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 9 Nov 2025 15:22:46 +0000 (16:22 +0100)
src/kds_s2000w_handler_opts.c
tests/kds_s2000w_net_get_opt_tests.c

index 06d0276b9c79831e4a6e6c1d714f1842b91e57c4..45d06acca9d825c6207b2577d44cdad5835f932d 100644 (file)
@@ -17,7 +17,8 @@ enum {
 
 enum {
        GOOD = 0,
-       INVAL = 4
+       INVAL = 4,
+       IO_ERROR = 9
 };
 
 void _kds_s2000w_handler_opts_write_value_to_json(json_object* value_object, SANE_Value_Type value_type, void* value)
@@ -193,6 +194,9 @@ void _kds_s2000w_handler_opts_load_config(handler_t* h)
                return;
 
        _kds_s2000w_handler_opts_load_options(h);
+       if (h->scanner_config == NULL)
+               return;
+
        _kds_s2000w_handler_opts_set_autostart_on(h->scanner_config);
        _kds_s2000w_handler_opts_set_options(h);
 }
@@ -541,6 +545,8 @@ void _kds_s2000w_handler_opts_set_depends_opts(const handler_t* h,
 int32_t kds_s2000w_handler_opts_get_option(handler_t* h, uint32_t option, void* value, int32_t* info)
 {
        _kds_s2000w_handler_opts_load_config(h);
+       if (h->scanner_config == NULL)
+               return IO_ERROR;
 
        option_descriptor_t* descriptor = kds_s2000w_option_descriptors_full_get_by_number(option);
        if (strcmp(descriptor->config_name, OPTION_COUNT) == 0)
@@ -569,6 +575,9 @@ int32_t kds_s2000w_handler_opts_set_option(handler_t* h, uint32_t option, void*
                return GOOD;
 
        _kds_s2000w_handler_opts_load_config(h);
+       if (h->scanner_config == NULL)
+               return IO_ERROR;
+
        option_descriptor_t* descriptor = kds_s2000w_option_descriptors_full_get_by_number(option);
        json_object* value_object = json_object_object_get(h->scanner_config, descriptor->config_name);
 
index 6de0aff7c0342ec1e20d912e0404850261b5a127..126fb7ebc8fa0c79a5e39dee515b1f13ff2f9a35 100644 (file)
@@ -953,6 +953,46 @@ void sane_kds_s2000w_net_control_get_option_fourtyseven_test(void** state)
        h = NULL;
 }
 
+void sane_kds_s2000w_net_could_not_load_options_by_get(void** state)
+{
+       handler_t* h = kds_s2000w_handler_init();
+       response_t* resp = kds_s2000w_client_response_init();
+       resp->code = 400;
+
+       will_return(mock_response, resp);
+       will_return(__wrap_kds_s2000w_client_get_option, 0);
+       expect_function_call(__wrap_kds_s2000w_client_get_option);
+
+       SANE_Status status = sane_kds_s2000w_net_control_option(h, 5, SANE_ACTION_GET_VALUE, NULL, NULL);
+
+       assert_int_equal(status, SANE_STATUS_IO_ERROR);
+
+       kds_s2000w_handler_free(h);
+       h = NULL;
+       kds_s2000w_client_response_free(resp);
+       resp = NULL;
+}
+
+void sane_kds_s2000w_net_could_not_load_options_by_set(void** state)
+{
+       handler_t* h = kds_s2000w_handler_init();
+       response_t* resp = kds_s2000w_client_response_init();
+       resp->code = 400;
+
+       will_return(mock_response, resp);
+       will_return(__wrap_kds_s2000w_client_get_option, 0);
+       expect_function_call(__wrap_kds_s2000w_client_get_option);
+
+       SANE_Status status = sane_kds_s2000w_net_control_option(h, 5, SANE_ACTION_SET_VALUE, NULL, NULL);
+
+       assert_int_equal(status, SANE_STATUS_IO_ERROR);
+
+       kds_s2000w_handler_free(h);
+       h = NULL;
+       kds_s2000w_client_response_free(resp);
+       resp = NULL;
+}
+
 int main()
 {
        const struct CMUnitTest net_tests[] = {
@@ -996,7 +1036,9 @@ int main()
                cmocka_unit_test(sane_kds_s2000w_net_control_get_option_fourtyfour_test),
                cmocka_unit_test(sane_kds_s2000w_net_control_get_option_fourtyfive_test),
                cmocka_unit_test(sane_kds_s2000w_net_control_get_option_fourtysix_test),
-               cmocka_unit_test(sane_kds_s2000w_net_control_get_option_fourtyseven_test)
+               cmocka_unit_test(sane_kds_s2000w_net_control_get_option_fourtyseven_test),
+               cmocka_unit_test(sane_kds_s2000w_net_could_not_load_options_by_get),
+               cmocka_unit_test(sane_kds_s2000w_net_could_not_load_options_by_set)
        };
 
        return cmocka_run_group_tests(net_tests, setup, teardown);