]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add read black and white header
authorBastian Dehn <hhaalo@arcor.de>
Tue, 30 Apr 2024 19:02:46 +0000 (21:02 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Tue, 30 Apr 2024 19:15:12 +0000 (21:15 +0200)
src/kds_s2000w_net.c
tests/kds_s2000w_net_read_tests.c
tests/kds_s2000w_net_read_tests.h
tests/kds_s2000w_net_read_tests_run.c

index 8c1764eab5c8fc35e34541870dcdb14c1d612382..fa9563589cc740b4757fea325100da8ec345371e 100644 (file)
 int _sane_kds_s2000w_net_find_first_data_byte(const char* data)
 {
        debug_printf(ALL, "sane_kds_s2000w_net_find_first_data_byte");
-       const int header_spaces = 3;
+       int header_spaces = 3;
+
+       if (strncmp(data, "P4", 2) == 0)
+               header_spaces = 2;
+
        const char space = 0x0a;
        int space_count = 0;
        int byte_count = 0;
index 43862d52f97b104783a4609e1435feb359a33057..4463ed7f9764b3931064090cc72f83f5fd581d7a 100644 (file)
@@ -113,6 +113,41 @@ void sane_kds_s2000w_net_read_test()
        h = NULL;
 }
 
+void sane_kds_s2000w_net_read_bw_test()
+{
+       handler* h = init_handler();
+       h->pnm_image->size = 655541;
+       h->pnm_image->data = malloc(sizeof(char) * 65541);
+       char* imagedata = (char*) h->pnm_image->data;
+       imagedata[0] = 'P';
+       imagedata[1] = '4';
+       for (int i = 2; i < 4; i++) {
+               imagedata[i] = 0x0a;
+       }
+       for (int i = 4; i < 65541; i++) {
+               imagedata[i] = 0xff;
+       }
+
+       SANE_Int maxlen = 65536;
+       char* dataptr = malloc(sizeof(char) * maxlen);
+       SANE_Int* length = malloc(sizeof(SANE_Int));
+
+       _sane_kds_s2000w_net_read(h, (void*) dataptr, maxlen, length);
+
+       assert_int_equal(*length, 65536);
+       assert_memory_equal(dataptr, h->pnm_image->data + 5, 65536);
+       assert_int_equal(h->read_info->read_size, 65540);
+
+       free(dataptr);
+       dataptr = NULL;
+       free(length);
+       length = NULL;
+       free(h->pnm_image->data);
+       h->pnm_image->data = NULL;
+       free_handler(h);
+       h = NULL;
+}
+
 void sane_kds_s2000w_net_read_bytes_per_line_bigger_test()
 {
        handler* h = init_handler();
index 107db579084b439b4f841b0938f7f960125e6487..8b375b4046a1175957f0537f73f2bfe578a9d6f0 100644 (file)
@@ -10,6 +10,7 @@ void sane_kds_s2000w_net_read_cancel_test();
 void sane_kds_s2000w_net_read_without_data();
 void sane_kds_s2000w_net_read_empty_image();
 void sane_kds_s2000w_net_read_test();
+void sane_kds_s2000w_net_read_bw_test();
 void sane_kds_s2000w_net_read_bytes_per_line_bigger_test();
 
 #endif
\ No newline at end of file
index 07cf0664a26cb6349e6817601a5f3dc0c73889a3..4950a01add4e8c0ba62a44d68bbe3d06bdb66b21 100644 (file)
@@ -7,6 +7,7 @@ int main()
                cmocka_unit_test(sane_kds_s2000w_net_read_without_data),
                cmocka_unit_test(sane_kds_s2000w_net_read_empty_image),
                cmocka_unit_test(sane_kds_s2000w_net_read_test),
+               cmocka_unit_test(sane_kds_s2000w_net_read_bw_test),
                cmocka_unit_test(sane_kds_s2000w_net_read_bytes_per_line_bigger_test)
        };