-
-#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;
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;
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) {
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;
+++ /dev/null
-#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
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}
#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)
{
}
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();
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
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);