From 44cf8ec67278bd1ab6c7f83a9993f7a5686a9541 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 9 Mar 2024 01:06:44 +0100 Subject: Adding upstream version 0.23.93. Signed-off-by: Daniel Baumann --- test/test_proc.c | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 test/test_proc.c (limited to 'test/test_proc.c') diff --git a/test/test_proc.c b/test/test_proc.c new file mode 100644 index 0000000..46eb992 --- /dev/null +++ b/test/test_proc.c @@ -0,0 +1,170 @@ +/*------------------------------------------------------------------------ + * Copyright 2007-2009 (c) Jeff Brown + * + * This file is part of the ZBar Bar Code Reader. + * + * The ZBar Bar Code Reader is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * The ZBar Bar Code Reader is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser Public License for more details. + * + * You should have received a copy of the GNU Lesser Public License + * along with the ZBar Bar Code Reader; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * http://sourceforge.net/projects/zbar + *------------------------------------------------------------------------*/ + +#include "config.h" +#ifdef HAVE_INTTYPES_H +#include +#endif +#ifdef HAVE_STDLIB_H +#include +#endif +#include +#include +#include +#include + +#include +#include "test_images.h" + +zbar_processor_t *proc = NULL; +int use_threads = 1, use_window = 1; + +int input_wait(int timeout) +{ + if (timeout >= 0) + fprintf(stderr, "waiting %d.%03ds for input...", timeout / 1000, + timeout % 1000); + else + fprintf(stderr, "waiting indefinitely for input..."); + fflush(stderr); + int rc = zbar_processor_user_wait(proc, timeout); + if (rc > 0) + fprintf(stderr, "got input (%02x)\n", rc); + else if (!rc) + fprintf(stderr, "timed out\n"); + else if (zbar_processor_get_error_code(proc) == ZBAR_ERR_CLOSED) + use_window = rc = 0; + fflush(stderr); + return (rc); +} + +int main(int argc, char **argv) +{ + zbar_set_verbosity(127); + char *video_dev = NULL; + uint32_t fmt = 0; + int i, j = 0; + for (i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + if (!strncmp(argv[i], "-thr", 4)) + use_threads = 0; + else if (!strncmp(argv[i], "-win", 4)) + use_window = 0; + else + return (1); + } else if (!j++) + video_dev = argv[i]; + else if (j++ == 1) { + int n = strlen(argv[i]); + if (n > 4) + n = 4; + memcpy((char *)&fmt, argv[i], n); + } + } + if (!fmt) + fmt = fourcc('B', 'G', 'R', '3'); + + proc = zbar_processor_create(use_threads); + assert(proc); + fprintf(stderr, "created processor (%sthreaded)\n", + (!use_threads) ? "un" : ""); + fflush(stderr); + + if (zbar_processor_init(proc, NULL, 0)) + return (2); + fprintf(stderr, "initialized (video=disabled, window=disabled)\n"); + fflush(stderr); + + zbar_image_t *img = zbar_image_create(); + zbar_image_set_size(img, 640, 480); + zbar_image_set_format(img, fmt); + test_image_bars(img); + + if (zbar_process_image(proc, img) < 0) + return (3); + fprintf(stderr, "processed test image\n"); + fflush(stderr); + + if (zbar_processor_init(proc, video_dev, use_window)) + return (2); + fprintf(stderr, "reinitialized (video=%s, window=%s)\n", + (video_dev) ? video_dev : "disabled", + (use_window) ? "enabled" : "disabled"); + fflush(stderr); + + if (use_window) { + if (zbar_processor_set_visible(proc, 1)) + return (4); + fprintf(stderr, "window visible\n"); + fflush(stderr); + } + + if (input_wait((use_window && !video_dev) ? -1 : 2000) < 0) + return (5); + + if (zbar_process_image(proc, img) < 0) + return (3); + fprintf(stderr, "processed test image\n"); + fflush(stderr); + zbar_image_destroy(img); + + if (input_wait((use_window && !video_dev) ? -1 : 3333) < 0) + return (5); + + if (video_dev) { + if (zbar_processor_set_active(proc, 1)) + return (3); + fprintf(stderr, "video activated\n"); + fflush(stderr); + + if (input_wait((use_window) ? -1 : 4000) < 0) + return (5); + + if (zbar_processor_set_active(proc, 0)) + return (3); + fprintf(stderr, "video deactivated\n"); + fflush(stderr); + + if (input_wait((use_window) ? -1 : 4000) < 0) + return (5); + + /* FIXME test process_one() */ + } + + if (zbar_process_image(proc, NULL)) + return (3); + fprintf(stderr, "flushed image\n"); + fflush(stderr); + + if (input_wait((use_window && !video_dev) ? -1 : 2500) < 0) + return (5); + + fprintf(stderr, "cleaning up...\n"); + fflush(stderr); + + zbar_processor_destroy(proc); + proc = NULL; + if (test_image_check_cleanup()) + return (32); + return (0); +} -- cgit v1.2.3