source: libusb1/trunk/tests/libusb_testlib.h@ 1882

Last change on this file since 1882 was 1880, checked in by Silvan Scherrer, 8 years ago

libusb: update vendor to version 1.0.21

File size: 2.9 KB
Line 
1/*
2 * libusb test library helper functions
3 * Copyright © 2012 Toby Gray <toby.gray@realvnc.com>
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19
20#ifndef LIBUSB_TESTLIB_H
21#define LIBUSB_TESTLIB_H
22
23#include <stdio.h>
24
25#if !defined(bool)
26#define bool int
27#endif
28#if !defined(true)
29#define true (1 == 1)
30#endif
31#if !defined(false)
32#define false (!true)
33#endif
34
35/** Values returned from a test function to indicate test result */
36typedef enum {
37 /** Indicates that the test ran successfully. */
38 TEST_STATUS_SUCCESS,
39 /** Indicates that the test failed one or more test. */
40 TEST_STATUS_FAILURE,
41 /** Indicates that an unexpected error occurred. */
42 TEST_STATUS_ERROR,
43 /** Indicates that the test can't be run. For example this may be
44 * due to no suitable device being connected to perform the tests.*/
45 TEST_STATUS_SKIP
46} libusb_testlib_result;
47
48/**
49 * Context for test library functions
50 */
51typedef struct {
52 char ** test_names;
53 int test_count;
54 bool list_tests;
55 bool verbose;
56 int old_stdout;
57 int old_stderr;
58 FILE* output_file;
59 int null_fd;
60} libusb_testlib_ctx;
61
62/**
63 * Logs some test information or state
64 */
65void libusb_testlib_logf(libusb_testlib_ctx * ctx,
66 const char* fmt, ...);
67
68/**
69 * Function pointer for a libusb test function.
70 *
71 * Should return TEST_STATUS_SUCCESS on success or another TEST_STATUS value.
72 */
73typedef libusb_testlib_result
74(*libusb_testlib_test_function)(libusb_testlib_ctx * ctx);
75
76/**
77 * Structure holding a test description.
78 */
79typedef struct {
80 /** Human readable name of the test. */
81 const char * name;
82 /** The test library will call this function to run the test. */
83 libusb_testlib_test_function function;
84} libusb_testlib_test;
85
86/**
87 * Value to use at the end of a test array to indicate the last
88 * element.
89 */
90#define LIBUSB_NULL_TEST {NULL, NULL}
91
92/**
93 * Runs the tests provided.
94 *
95 * Before running any tests argc and argv will be processed
96 * to determine the mode of operation.
97 *
98 * \param argc The argc from main
99 * \param argv The argv from main
100 * \param tests A NULL_TEST terminated array of tests
101 * \return 0 on success, non-zero on failure
102 */
103int libusb_testlib_run_tests(int argc,
104 char ** argv,
105 const libusb_testlib_test * tests);
106
107#endif //LIBUSB_TESTLIB_H
Note: See TracBrowser for help on using the repository browser.