From 89beca7d72369ffe3c74468f2926ed756261b177 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 11 Feb 2024 16:58:48 +0100 Subject: [PATCH] mocking and testing cancel --- src/kds_s2000w_net.c | 36 ++++++++++++++++++++++------------- src/kds_s2000w_net.h | 37 ------------------------------------ tests/CMakeLists.txt | 9 ++++++--- tests/kds_s2000w_net_tests.c | 31 ++++++++++++++++++++++++++---- tests/runtests.c | 3 ++- 5 files changed, 58 insertions(+), 58 deletions(-) delete mode 100644 src/kds_s2000w_net.h diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 65a3811..a981172 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -1,5 +1,10 @@ - -#include "kds_s2000w_net.h" +#include +#include +#include +#include +#include +#include "kds_s2000w_option_descriptors.h" +#include "kds_s2000w_handler.h" SANE_Option_Descriptor* option_descriptors = NULL; SANE_Device* device_info = NULL; @@ -20,6 +25,11 @@ int* get_read_size() return &read_size; } +int* get_cancel() +{ + return &cancel; +} + int _sane_kds_s2000w_net_find_first_data_byte(const char* data) { const int header_spaces = 3; @@ -247,6 +257,17 @@ SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle) SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, SANE_Int max_length, SANE_Int* length) { + if (cancel) { + scan_started = 0; + *length = 0; + kds_s2000w_handler_stop_scan(); + sleep(1); + kds_s2000w_handler_close(); + sleep(1); + kds_s2000w_handler_open(); + return SANE_STATUS_CANCELLED; + } + int skip_header_bytes = _sane_kds_s2000w_net_find_first_data_byte(current_metadata.image); if (read_size <= 0) { @@ -260,17 +281,6 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, return SANE_STATUS_EOF; } - if (cancel) { - scan_started = 0; - *length = 0; - kds_s2000w_handler_stop_scan(); - sleep(1); - kds_s2000w_handler_close(); - sleep(1); - kds_s2000w_handler_open(); - return SANE_STATUS_CANCELLED; - } - int maxlen = 0; if (current_metadata.bytes_per_line < max_length) { maxlen = current_metadata.bytes_per_line - readed_bytes_per_line; diff --git a/src/kds_s2000w_net.h b/src/kds_s2000w_net.h deleted file mode 100644 index 8a7200b..0000000 --- a/src/kds_s2000w_net.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef KDS_S2000W_NET_H -#define KDS_S2000W_NET_H -#include -#include -#include -#include -#include -#include "kds_s2000w_option_descriptors.h" -#include "kds_s2000w_handler.h" - -// test helper method -metadata* get_current_metadata(); -int* get_read_size(); - -int _sane_kds_s2000w_net_find_first_data_byte(const char* data); -SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback authorize); -void _sane_kds_s2000w_net_exit(void); -SANE_Status _sane_kds_s2000w_net_get_devices(SANE_Device*** device_list, - SANE_Bool local_only); -SANE_Status _sane_kds_s2000w_net_open(SANE_String_Const devicename, - SANE_Handle handle); -void _sane_kds_s2000w_net_close(SANE_Handle handle); -const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor( - SANE_Handle handle, SANE_Int option); -SANE_Status _sane_kds_s2000w_net_control_option(SANE_Handle handle, - SANE_Int option, SANE_Action action, void* value, SANE_Int* info); -void _sane_kds_s2000w_net_cancel(SANE_Handle handle); -SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle, - SANE_Parameters* params); -SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle); -SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, - SANE_Int max_length, SANE_Int* length); -SANE_Status _sane_kds_s2000w_net_set_io_mode(SANE_Handle handle, - SANE_Bool non_blocking); -SANE_Status _sane_kds_s2000w_net_get_select_fd(SANE_Handle handle, SANE_Int* fd); -SANE_String_Const _sane_kds_s2000w_net_strstatus(SANE_Status status); -#endif \ No newline at end of file diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 30eb376..62a41f3 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -6,9 +6,12 @@ find_library(MATH NAMES m REQUIRED) add_executable("runtests" "runtests.c" - "kds_s2000w_net_tests.c") -add_dependencies("runtests" "sane-kds_s2000w_net") -target_link_libraries("runtests" check subunit m sane-kds_s2000w_net) + "../src/kds_s2000w_handler.c" + "../src/kds_s2000w_client.c" + "../src/kds_s2000w_image_converter.c" + "../src/kds_s2000w_handler_opts.c" + "../src/kds_s2000w_option_descriptors.c") +target_link_libraries("runtests" check subunit json-c curl MagickCore-6.Q16 m) add_custom_target("runningtests" ALL "./runtests" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} diff --git a/tests/kds_s2000w_net_tests.c b/tests/kds_s2000w_net_tests.c index ac32c54..22ee514 100644 --- a/tests/kds_s2000w_net_tests.c +++ b/tests/kds_s2000w_net_tests.c @@ -1,9 +1,16 @@ #include #include #include -#include "../src/kds_s2000w_net.h" - - +#include "../src/kds_s2000w_handler.h" +#define kds_s2000w_handler_stop_scan void_mock +#define kds_s2000w_handler_close void_mock +#define kds_s2000w_handler_open state_mock +current_state* state_mock() { return NULL; } +void void_mock() {} +#include "../src/kds_s2000w_net.c" +#undef kds_s2000w_handler_stop_scan +#undef kds_s2000w_handler_close +#undef kds_s2000w_handler_open START_TEST(sane_kds_s2000w_net_find_first_data_byte_test) { @@ -20,7 +27,7 @@ START_TEST(sane_kds_s2000w_net_find_first_data_byte_test) } END_TEST -START_TEST(_sane_kds_s2000w_net_read_test) +START_TEST(sane_kds_s2000w_net_read_test) { metadata* current_metadata_ptr = get_current_metadata(); int* read_size = get_read_size(); @@ -51,4 +58,20 @@ START_TEST(_sane_kds_s2000w_net_read_test) free(image); image = NULL; } +END_TEST + +START_TEST(sane_kds_s2000w_net_read_cancel_test) +{ + int* length = malloc(sizeof(int)); + *length = 0; + int* cancel = get_cancel(); + *cancel = 1; + + SANE_Status status = _sane_kds_s2000w_net_read(NULL, NULL, 0, length); + + ck_assert_int_eq(status, SANE_STATUS_CANCELLED); + + free(length); + length = NULL; +} END_TEST \ No newline at end of file diff --git a/tests/runtests.c b/tests/runtests.c index 696908e..8170e45 100644 --- a/tests/runtests.c +++ b/tests/runtests.c @@ -10,7 +10,8 @@ Suite* first_tests() tc_core = tcase_create("core"); tcase_add_test(tc_core, sane_kds_s2000w_net_find_first_data_byte_test); - tcase_add_test(tc_core, _sane_kds_s2000w_net_read_test); + tcase_add_test(tc_core, sane_kds_s2000w_net_read_test); + tcase_add_test(tc_core, sane_kds_s2000w_net_read_cancel_test); suite_add_tcase(suite, tc_core); -- 2.39.5