]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
mocking and testing cancel
authorBastian Dehn <hhaalo@arcor.de>
Sun, 11 Feb 2024 15:58:48 +0000 (16:58 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 11 Feb 2024 15:58:48 +0000 (16:58 +0100)
src/kds_s2000w_net.c
src/kds_s2000w_net.h [deleted file]
tests/CMakeLists.txt
tests/kds_s2000w_net_tests.c
tests/runtests.c

index 65a3811c4f04e2a9e9e4a471df93c1df49649b7a..a98117269950469c05644824cc88d9144139cf23 100644 (file)
@@ -1,5 +1,10 @@
-
-#include "kds_s2000w_net.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sane/sane.h>
+#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 (file)
index 8a7200b..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef KDS_S2000W_NET_H
-#define KDS_S2000W_NET_H
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sane/sane.h>
-#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
index 30eb376f4fd53f9002bd14267e6fc35ec146b8d5..62a41f34263d33deaad132b86932ae045fad8124 100644 (file)
@@ -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}
index ac32c54a454e8adf5512a466f074de871f18d10c..22ee514fc1651a1b2836c12a28c17e704922b6d4 100644 (file)
@@ -1,9 +1,16 @@
 #include <check.h>
 #include <stdlib.h>
 #include <sane/sane.h>
-#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
index 696908e46faf15ad7af03b7909180a85bcd00437..8170e456dfbfafd6864570138acaa5fd25653c9f 100644 (file)
@@ -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);