1*86b64dcbSAndroid Build Coastguard Worker /* 2*86b64dcbSAndroid Build Coastguard Worker * libusb test library helper functions 3*86b64dcbSAndroid Build Coastguard Worker * Copyright © 2012 Toby Gray <[email protected]> 4*86b64dcbSAndroid Build Coastguard Worker * 5*86b64dcbSAndroid Build Coastguard Worker * This library is free software; you can redistribute it and/or 6*86b64dcbSAndroid Build Coastguard Worker * modify it under the terms of the GNU Lesser General Public 7*86b64dcbSAndroid Build Coastguard Worker * License as published by the Free Software Foundation; either 8*86b64dcbSAndroid Build Coastguard Worker * version 2.1 of the License, or (at your option) any later version. 9*86b64dcbSAndroid Build Coastguard Worker * 10*86b64dcbSAndroid Build Coastguard Worker * This library is distributed in the hope that it will be useful, 11*86b64dcbSAndroid Build Coastguard Worker * but WITHOUT ANY WARRANTY; without even the implied warranty of 12*86b64dcbSAndroid Build Coastguard Worker * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13*86b64dcbSAndroid Build Coastguard Worker * Lesser General Public License for more details. 14*86b64dcbSAndroid Build Coastguard Worker * 15*86b64dcbSAndroid Build Coastguard Worker * You should have received a copy of the GNU Lesser General Public 16*86b64dcbSAndroid Build Coastguard Worker * License along with this library; if not, write to the Free Software 17*86b64dcbSAndroid Build Coastguard Worker * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18*86b64dcbSAndroid Build Coastguard Worker */ 19*86b64dcbSAndroid Build Coastguard Worker 20*86b64dcbSAndroid Build Coastguard Worker #ifndef LIBUSB_TESTLIB_H 21*86b64dcbSAndroid Build Coastguard Worker #define LIBUSB_TESTLIB_H 22*86b64dcbSAndroid Build Coastguard Worker 23*86b64dcbSAndroid Build Coastguard Worker #include <config.h> 24*86b64dcbSAndroid Build Coastguard Worker 25*86b64dcbSAndroid Build Coastguard Worker /** Values returned from a test function to indicate test result */ 26*86b64dcbSAndroid Build Coastguard Worker typedef enum { 27*86b64dcbSAndroid Build Coastguard Worker /** Indicates that the test ran successfully. */ 28*86b64dcbSAndroid Build Coastguard Worker TEST_STATUS_SUCCESS, 29*86b64dcbSAndroid Build Coastguard Worker /** Indicates that the test failed one or more test. */ 30*86b64dcbSAndroid Build Coastguard Worker TEST_STATUS_FAILURE, 31*86b64dcbSAndroid Build Coastguard Worker /** Indicates that an unexpected error occurred. */ 32*86b64dcbSAndroid Build Coastguard Worker TEST_STATUS_ERROR, 33*86b64dcbSAndroid Build Coastguard Worker /** Indicates that the test can't be run. For example this may be 34*86b64dcbSAndroid Build Coastguard Worker * due to no suitable device being connected to perform the tests. */ 35*86b64dcbSAndroid Build Coastguard Worker TEST_STATUS_SKIP 36*86b64dcbSAndroid Build Coastguard Worker } libusb_testlib_result; 37*86b64dcbSAndroid Build Coastguard Worker 38*86b64dcbSAndroid Build Coastguard Worker /** 39*86b64dcbSAndroid Build Coastguard Worker * Logs some test information or state 40*86b64dcbSAndroid Build Coastguard Worker */ 41*86b64dcbSAndroid Build Coastguard Worker void libusb_testlib_logf(const char *fmt, ...) PRINTF_FORMAT(1, 2); 42*86b64dcbSAndroid Build Coastguard Worker 43*86b64dcbSAndroid Build Coastguard Worker /** 44*86b64dcbSAndroid Build Coastguard Worker * Structure holding a test description. 45*86b64dcbSAndroid Build Coastguard Worker */ 46*86b64dcbSAndroid Build Coastguard Worker typedef struct { 47*86b64dcbSAndroid Build Coastguard Worker /** Human readable name of the test. */ 48*86b64dcbSAndroid Build Coastguard Worker const char *name; 49*86b64dcbSAndroid Build Coastguard Worker /** The test library will call this function to run the test. 50*86b64dcbSAndroid Build Coastguard Worker * 51*86b64dcbSAndroid Build Coastguard Worker * Should return TEST_STATUS_SUCCESS on success or another TEST_STATUS value. 52*86b64dcbSAndroid Build Coastguard Worker */ 53*86b64dcbSAndroid Build Coastguard Worker libusb_testlib_result (*function)(void); 54*86b64dcbSAndroid Build Coastguard Worker } libusb_testlib_test; 55*86b64dcbSAndroid Build Coastguard Worker 56*86b64dcbSAndroid Build Coastguard Worker /** 57*86b64dcbSAndroid Build Coastguard Worker * Value to use at the end of a test array to indicate the last 58*86b64dcbSAndroid Build Coastguard Worker * element. 59*86b64dcbSAndroid Build Coastguard Worker */ 60*86b64dcbSAndroid Build Coastguard Worker #define LIBUSB_NULL_TEST { NULL, NULL } 61*86b64dcbSAndroid Build Coastguard Worker 62*86b64dcbSAndroid Build Coastguard Worker /** 63*86b64dcbSAndroid Build Coastguard Worker * Runs the tests provided. 64*86b64dcbSAndroid Build Coastguard Worker * 65*86b64dcbSAndroid Build Coastguard Worker * Before running any tests argc and argv will be processed 66*86b64dcbSAndroid Build Coastguard Worker * to determine the mode of operation. 67*86b64dcbSAndroid Build Coastguard Worker * 68*86b64dcbSAndroid Build Coastguard Worker * \param argc The argc from main 69*86b64dcbSAndroid Build Coastguard Worker * \param argv The argv from main 70*86b64dcbSAndroid Build Coastguard Worker * \param tests A NULL_TEST terminated array of tests 71*86b64dcbSAndroid Build Coastguard Worker * \return 0 on success, non-zero on failure 72*86b64dcbSAndroid Build Coastguard Worker */ 73*86b64dcbSAndroid Build Coastguard Worker int libusb_testlib_run_tests(int argc, char *argv[], 74*86b64dcbSAndroid Build Coastguard Worker const libusb_testlib_test *tests); 75*86b64dcbSAndroid Build Coastguard Worker 76*86b64dcbSAndroid Build Coastguard Worker #endif //LIBUSB_TESTLIB_H 77