--wrap,kds_s2000w_client_delete_image,\
--wrap,kds_s2000w_client_get_option,\
--wrap,kds_s2000w_client_set_option,\
+--wrap,kds_s2000w_client_get_capabilities,\
--wrap,kds_s2000w_image_converter_to_pnm,\
--wrap,sanei_config_get_paths"
CACHE STRING "test coverage compiler flags" FORCE)
kds_s2000w_client_get_capabilities(resp);
json_object* capabilities = json_tokener_parse(resp->data);
json_object* default_values = json_object_object_get(capabilities, "Defaults");
+
json_object* default_config = json_object_new_object();
- json_object_object_add(default_config, CONFIGURATION, default_values);
+ json_object* copy_default_values = NULL;
+ json_object_deep_copy(default_values, ©_default_values, json_c_shallow_copy_default);
+ json_object_object_add(default_config, CONFIGURATION, copy_default_values);
json_object_put(h->scanner_config);
h->scanner_config = NULL;
h->scanner_config = default_config;
+ json_object_put(capabilities);
+ capabilities = NULL;
kds_s2000w_client_response_free(resp);
resp = NULL;
}
bool _kds_s2000w_opts_validate(SANE_Option_Descriptor* descriptor, const void* value)
{
+ if (descriptor->constraint_type == SANE_CONSTRAINT_NONE)
+ return true;
+
if (descriptor->constraint_type == SANE_CONSTRAINT_WORD_LIST) {
const int32_t* int_value = (const int32_t*) value;
for (int32_t i = 1; i < descriptor->constraint.word_list[0]; i++) {
set_value = NULL;
}
+void kds_s2000w_net_set_option_reset(void** state)
+{
+ int32_t* set_value = malloc(sizeof(int32_t));
+ if (set_value == NULL)
+ return;
+
+ const char* json = "{\"Defaults\": {\"DPI\": 200}}";
+ response_t* defauls_resp = kds_s2000w_client_response_init();
+ defauls_resp->data = malloc(sizeof(char) * 27);
+ memcpy(defauls_resp->data, json, 27);
+ defauls_resp->size = 27;
+ defauls_resp->code = 200;
+
+ *set_value = 1;
+ response_t* resp = (response_t*) *state;
+ handler_t* h = kds_s2000w_handler_init();
+ response_t* set_opt_resp = kds_s2000w_client_response_init();
+ set_opt_resp->code = 200;
+
+ will_return(mock_response, resp);
+ will_return(__wrap_kds_s2000w_client_get_option, 0);
+ will_return(mock_response, set_opt_resp);
+ will_return(__wrap_kds_s2000w_client_set_option, 0);
+ will_return(mock_response, defauls_resp);
+ will_return(__wrap_kds_s2000w_client_get_capabilities, 0);
+ will_return(mock_response, set_opt_resp);
+ will_return(__wrap_kds_s2000w_client_set_option, 0);
+ expect_function_call(__wrap_kds_s2000w_client_get_option);
+ expect_function_call(__wrap_kds_s2000w_client_set_option);
+ expect_function_call(__wrap_kds_s2000w_client_get_capabilities);
+ expect_function_call(__wrap_kds_s2000w_client_set_option);
+
+ SANE_Status status = sane_kds_s2000w_net_control_option(h, 31, SANE_ACTION_SET_VALUE, set_value, NULL);
+
+ json_object* config = json_object_object_get(h->scanner_config, "Configuration");
+ json_object* value_object = json_object_object_get(config, DPI);
+ int32_t value = json_object_get_int(value_object);
+
+ assert_int_equal(status, SANE_STATUS_GOOD);
+ assert_int_equal(value, 200);
+
+ kds_s2000w_client_response_free(defauls_resp);
+ defauls_resp = NULL;
+ kds_s2000w_client_response_free(set_opt_resp);
+ set_opt_resp = NULL;
+ kds_s2000w_handler_free(h);
+ h = NULL;
+ free(set_value);
+ set_value = NULL;
+}
+
void kds_s2000w_net_set_option_int_br_x(void** state)
{
int32_t* set_value = malloc(sizeof(int32_t));
const struct CMUnitTest net_tests[] = {
cmocka_unit_test_setup_teardown(kds_s2000w_net_set_option_string, setup_default_option, teardown_default_option),
cmocka_unit_test_setup_teardown(kds_s2000w_net_set_option_int, setup_default_option, teardown_default_option),
+ cmocka_unit_test_setup_teardown(kds_s2000w_net_set_option_reset, setup_default_option, teardown_default_option),
cmocka_unit_test_setup_teardown(kds_s2000w_net_set_option_int_br_x, setup_default_option, teardown_default_option),
cmocka_unit_test_setup_teardown(kds_s2000w_net_set_option_int_word_list, setup_default_option, teardown_default_option),
cmocka_unit_test_setup_teardown(kds_s2000w_net_set_invalid_option_string, setup_default_option, teardown_default_option),