From 4d5549e75b12e828af0d2ef84b30577812c86930 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 23 Mar 2024 21:45:07 +0100 Subject: [PATCH] add test for start method --- CMakeLists.txt | 6 ++ tests/kds_s2000w_net_read_tests.c | 37 ++++++++++- tests/kds_s2000w_net_tests.c | 91 ++++++++++++++++++++++++++++ tests/kds_s2000w_net_tests.h | 1 + tests/kds_s2000w_net_tests_run.c | 1 + tests/kds_s2000w_read_config_tests.c | 37 ++++++++++- 6 files changed, 167 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 815c532..d58040a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,8 +11,14 @@ ELSE() -g \ -fsanitize=address \ -Wl,--wrap,kds_s2000w_client_get_option,\ +--wrap,kds_s2000w_client_start_scan,\ --wrap,kds_s2000w_client_stop_scan,\ --wrap,kds_s2000w_client_open_session,\ +--wrap,kds_s2000w_client_status_session,\ +--wrap,kds_s2000w_client_get_image,\ +--wrap,kds_s2000w_client_get_metadata,\ +--wrap,kds_s2000w_convert_jpg_to_pnm,\ +--wrap,kds_s2000w_client_delete_image,\ --wrap,load_config" CACHE STRING "test coverage compiler flags" FORCE) ENDIF() diff --git a/tests/kds_s2000w_net_read_tests.c b/tests/kds_s2000w_net_read_tests.c index 254c11b..56ff920 100644 --- a/tests/kds_s2000w_net_read_tests.c +++ b/tests/kds_s2000w_net_read_tests.c @@ -6,10 +6,11 @@ #include "../src/kds_s2000w_client.h" #include "../src/kds_s2000w_handler.h" #include "../src/kds_s2000w_net.h" +#include "../src/kds_s2000w_image_converter.h" int __wrap_kds_s2000w_client_open_session(response* response) { - return 0; + return mock_type(int); } void __wrap_load_config(program_config* config, const char* config_stream) @@ -19,12 +20,42 @@ void __wrap_load_config(program_config* config, const char* config_stream) int __wrap_kds_s2000w_client_stop_scan(int64_t sessionid, response* response) { - return 0; + return mock_type(int); } int __wrap_kds_s2000w_client_get_option(int64_t sessionid, response* response) { - return 0; + return mock_type(int); +} + +int __wrap_kds_s2000w_client_status_session(int64_t sessionid, response* response) +{ + return mock_type(int); +} + +int __wrap_kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* response) +{ + return mock_type(int); +} + +int __wrap_kds_s2000w_client_get_metadata(int64_t sessionid, int img_number, response* response) +{ + return mock_type(int); +} + +void __wrap_kds_s2000w_convert_jpg_to_pnm(blobdata* in, blobdata* out) +{ + return; +} + +int __wrap_kds_s2000w_client_delete_image(int64_t sessionid, int img_number, response* response) +{ + return mock_type(int); +} + +int __wrap_kds_s2000w_client_start_scan(int64_t sessionid, response* response) +{ + return mock_type(int); } void sane_kds_s2000w_net_read_cancel_test() diff --git a/tests/kds_s2000w_net_tests.c b/tests/kds_s2000w_net_tests.c index 2f868df..5b97ce9 100644 --- a/tests/kds_s2000w_net_tests.c +++ b/tests/kds_s2000w_net_tests.c @@ -6,6 +6,7 @@ #include "../src/kds_s2000w_client.h" #include "../src/kds_s2000w_net.h" #include "../src/kds_s2000w_handler.h" +#include "../src/kds_s2000w_image_converter.h" void __wrap_load_config(program_config* config, const char* config_stream) { @@ -68,6 +69,68 @@ int __wrap_kds_s2000w_client_stop_scan(int64_t sessionid, response* response) return mock_type(int); } +int __wrap_kds_s2000w_client_status_session(int64_t sessionid, response* response) +{ + response->data = realloc(response->data, 205); + const char* responsedata = "{ \ + \"Status\": { \ + \"NumImagesScanned\": 1, \ + \"NumImagesStored\": 2, \ + \"State\": \"Scanning\", \ + \"ErrorNum\": 0, \ + \"LastError\": \"Status: 200 Success\", \ + \"PaperDetected\": \"0\", \ + \"PercentAvailable\": 99 \ + }}\0"; + + memcpy(response->data, responsedata, 205); + + response->code = 200; + response->size = sizeof(response->data); + + return mock_type(int); +} + +int __wrap_kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* response) +{ + return mock_type(int); +} + +int __wrap_kds_s2000w_client_get_metadata(int64_t sessionid, int img_number, response* response) +{ + response->data = realloc(response->data, 131); + const char* responsedata = "{\ + \"Metadata\": {\ + \"BitDepth\": 8, \ + \"ImageSize\": 1, \ + \"ImageWidth\": 1000, \ + \"ImageHeight\": 1000, \ + \"ImageHeight\": 1000, \ + }\ + }\0"; + memcpy(response->data, responsedata, 131); + + response->code = 200; + response->size = sizeof(response->data); + + return mock_type(int); +} + +void __wrap_kds_s2000w_convert_jpg_to_pnm(blobdata* in, blobdata* out) +{ + return; +} + +int __wrap_kds_s2000w_client_delete_image(int64_t sessionid, int img_number, response* response) +{ + return mock_type(int); +} + +int __wrap_kds_s2000w_client_start_scan(int64_t sessionid, response* response) +{ + return mock_type(int); +} + int __wrap_kds_s2000w_client_open_session(response* response) { response->data = realloc(response->data, 28); @@ -514,6 +577,34 @@ void sane_kds_s2000w_net_start_cancel() h = NULL; } +void sane_kds_s2000w_net_start() +{ + will_return(__wrap_kds_s2000w_client_start_scan, 0); + will_return(__wrap_kds_s2000w_client_status_session, 0); + will_return(__wrap_kds_s2000w_client_get_image, 0); + will_return(__wrap_kds_s2000w_client_get_metadata, 0); + will_return(__wrap_kds_s2000w_client_delete_image, 0); + handler* h = init_handler(); + const char* test_config = "{\"Configuration\": { \"ColorMode\": \"Color\" } }"; + h->current_scanner_config = json_tokener_parse(test_config); + + int result = _sane_kds_s2000w_net_start(h); + + assert_int_equal(result, SANE_STATUS_GOOD); + assert_int_equal(h->current_metadata->depth, 8); + assert_int_equal(h->current_metadata->channels, 3); + assert_int_equal(h->current_metadata->format, 1); + assert_int_equal(h->current_metadata->pixels_per_line, 1000); + assert_int_equal(h->current_metadata->lines, 1000); + assert_int_equal(h->current_metadata->valid, 1); + assert_int_equal(h->current_metadata->is_last, 1); + + json_object_put(h->current_scanner_config); + h->current_scanner_config = NULL; + free_handler(h); + h = NULL; +} + void sane_kds_s2000w_net_get_parameter_cancel() { handler* h = init_handler(); diff --git a/tests/kds_s2000w_net_tests.h b/tests/kds_s2000w_net_tests.h index 3f2334c..ab586f7 100644 --- a/tests/kds_s2000w_net_tests.h +++ b/tests/kds_s2000w_net_tests.h @@ -34,6 +34,7 @@ void sane_kds_s2000w_net_control_get_option_twenty(); void sane_kds_s2000w_net_control_get_option_twentyone(); void sane_kds_s2000w_net_control_get_option_twentytwo(); void sane_kds_s2000w_net_start_cancel(); +void sane_kds_s2000w_net_start(); void sane_kds_s2000w_net_get_parameter_cancel(); void sane_kds_s2000w_net_cancel(); void sane_kds_s2000w_net_open(); diff --git a/tests/kds_s2000w_net_tests_run.c b/tests/kds_s2000w_net_tests_run.c index 58f92f8..3db7cc7 100644 --- a/tests/kds_s2000w_net_tests_run.c +++ b/tests/kds_s2000w_net_tests_run.c @@ -31,6 +31,7 @@ int main() cmocka_unit_test(sane_kds_s2000w_net_control_get_option_twentyone), cmocka_unit_test(sane_kds_s2000w_net_control_get_option_twentytwo), cmocka_unit_test(sane_kds_s2000w_net_start_cancel), + cmocka_unit_test(sane_kds_s2000w_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) diff --git a/tests/kds_s2000w_read_config_tests.c b/tests/kds_s2000w_read_config_tests.c index 779cef0..925a6f0 100644 --- a/tests/kds_s2000w_read_config_tests.c +++ b/tests/kds_s2000w_read_config_tests.c @@ -3,12 +3,13 @@ #include "kds_s2000w_read_config_tests.h" #include "../src/kds_s2000w_client.h" #include "../src/kds_s2000w_config.h" +#include "../src/kds_s2000w_image_converter.h" extern typeof (load_config) __real_load_config; int __wrap_kds_s2000w_client_open_session(response* response) { - return 0; + return mock_type(int); } void __wrap_load_config(program_config* config, const char* config_stream) @@ -18,12 +19,42 @@ void __wrap_load_config(program_config* config, const char* config_stream) int __wrap_kds_s2000w_client_stop_scan(int64_t sessionid, response* response) { - return 0; + return mock_type(int); } int __wrap_kds_s2000w_client_get_option(int64_t sessionid, response* response) { - return 0; + return mock_type(int); +} + +int __wrap_kds_s2000w_client_status_session(int64_t sessionid, response* response) +{ + return mock_type(int); +} + +int __wrap_kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* response) +{ + return mock_type(int); +} + +int __wrap_kds_s2000w_client_get_metadata(int64_t sessionid, int img_number, response* response) +{ + return mock_type(int); +} + +void __wrap_kds_s2000w_convert_jpg_to_pnm(blobdata* in, blobdata* out) +{ + return; +} + +int __wrap_kds_s2000w_client_delete_image(int64_t sessionid, int img_number, response* response) +{ + return mock_type(int); +} + +int __wrap_kds_s2000w_client_start_scan(int64_t sessionid, response* response) +{ + return mock_type(int); } void kds_s2000w_config_read_parameter() -- 2.39.5