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)
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);
}
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)
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);
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[] = {
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);