~ubuntu-branches/ubuntu/saucy/libusbx/saucy-proposed

« back to all changes in this revision

Viewing changes to tests/libusbx_testlib.h

  • Committer: Package Import Robot
  • Author(s): Aurelien Jarno
  • Date: 2013-05-06 17:31:43 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20130506173143-wfbiltvcnn7pvdpa
Tags: 2:1.0.15-1
* New upstream version.
* Fix cross-build (closes: #694912, #705658).
* Add a -dbg package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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