| OLD | NEW |
| (Empty) | |
| 1 /* |
| 2 * libusbx 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 LIBUSBX_TESTLIB_H |
| 21 #define LIBUSBX_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 */ |
| 36 typedef 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 } libusbx_testlib_result; |
| 47 |
| 48 /** |
| 49 * Context for test library functions |
| 50 */ |
| 51 typedef 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 } libusbx_testlib_ctx; |
| 61 |
| 62 /** |
| 63 * Logs some test information or state |
| 64 */ |
| 65 void libusbx_testlib_logf(libusbx_testlib_ctx * ctx, |
| 66 const char* fmt, ...); |
| 67 |
| 68 /** |
| 69 * Function pointer for a libusbx test function. |
| 70 * |
| 71 * Should return TEST_STATUS_SUCCESS on success or another TEST_STATUS value. |
| 72 */ |
| 73 typedef libusbx_testlib_result |
| 74 (*libusbx_testlib_test_function)(libusbx_testlib_ctx * ctx); |
| 75 |
| 76 /** |
| 77 * Structure holding a test description. |
| 78 */ |
| 79 typedef 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 libusbx_testlib_test_function function; |
| 84 } libusbx_testlib_test; |
| 85 |
| 86 /** |
| 87 * Value to use at the end of a test array to indicate the last |
| 88 * element. |
| 89 */ |
| 90 #define LIBUSBX_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 */ |
| 103 int libusbx_testlib_run_tests(int argc, |
| 104 char ** argv, |
| 105 const libusbx_testlib_test * tests); |
| 106 |
| 107 #endif //LIBUSBX_TESTLIB_H |
| OLD | NEW |