-#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"
+
+#include "kds_s2000w_net.h"
SANE_Option_Descriptor* option_descriptors = NULL;
SANE_Device* device_info = NULL;
int readed_bytes_per_line = 0;
int readed_lines = 0;
+metadata* get_current_metadata()
+{
+ return ¤t_metadata;
+}
+
int _sane_kds_s2000w_net_find_first_data_byte(const char* data)
{
const int header_spaces = 3;
SANE_Int max_length, SANE_Int* length)
{
printf("is all scanned: %i\n", current_metadata.scanned_all_complete);
-
int skip_header_bytes = _sane_kds_s2000w_net_find_first_data_byte(current_metadata.image);
-
+
if (read_size <= 0) {
read_size += skip_header_bytes;
}
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
+#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 _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
#include <check.h>
-int _sane_kds_s2000w_net_find_first_data_byte(const char* data);
+#include <stdlib.h>
+#include <sane/sane.h>
+#include "../src/kds_s2000w_net.h"
+
+
START_TEST(sane_kds_s2000w_net_find_first_data_byte_test)
{
ck_assert_int_eq(header_bytes, 16);
}
+END_TEST
+
+START_TEST(_sane_kds_s2000w_net_read_test)
+{
+ metadata* current_metadata_ptr = get_current_metadata();
+ current_metadata_ptr->scanned_all_complete = 1;
+ current_metadata_ptr->lines = 1;
+ current_metadata_ptr->bytes_per_line = 65536;
+ char* image = malloc(sizeof(char) * 65536);
+ for (int i = 0; i < 65536; i++) {
+ image[i] = 0x0a;
+ }
+ current_metadata_ptr->image = image;
+
+ SANE_Int maxlen = 65536;
+ char* dataptr = malloc(sizeof(char) * maxlen);
+ SANE_Int* length = malloc(sizeof(SANE_Int));
+
+ _sane_kds_s2000w_net_read(NULL, (void*) dataptr, maxlen, length);
+
+ ck_assert_int_eq(*length, 65536);
+
+ free(dataptr);
+ dataptr = NULL;
+ free(length);
+ length = NULL;
+ free(image);
+ image = 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);
suite_add_tcase(suite, tc_core);