mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-01 22:21:13 +00:00
0bb6d590cc
Upstream seems to have stopped doing releases, but we need to update for better Windows and Visual Studio support. This patch only updates the libcheck sources and ignores the compatibility sources for now. https://bugzilla.gnome.org/show_bug.cgi?id=775870
141 lines
4.1 KiB
C
141 lines
4.1 KiB
C
/*
|
|
* Check: a unit test framework for C
|
|
* Copyright (C) 2001, 2002 Arien Malec
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library 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 General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the
|
|
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
|
* MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef CHECK_IMPL_H
|
|
#define CHECK_IMPL_H
|
|
|
|
/* This header should be included by any module that needs
|
|
to know the implementation details of the check structures
|
|
Include stdio.h, time.h, & list.h before this header
|
|
*/
|
|
|
|
#define US_PER_SEC 1000000
|
|
#define NANOS_PER_SECONDS 1000000000
|
|
|
|
/** calculate the difference in useconds out of two "struct timespec"s */
|
|
#define DIFF_IN_USEC(begin, end) \
|
|
( (((end).tv_sec - (begin).tv_sec) * US_PER_SEC) + \
|
|
((end).tv_nsec/1000) - ((begin).tv_nsec/1000) )
|
|
|
|
typedef struct TF
|
|
{
|
|
TFun fn;
|
|
int loop_start;
|
|
int loop_end;
|
|
const char *name;
|
|
int signal;
|
|
signed char allowed_exit_value;
|
|
} TF;
|
|
|
|
struct Suite
|
|
{
|
|
const char *name;
|
|
List *tclst; /* List of test cases */
|
|
};
|
|
|
|
typedef struct Fixture
|
|
{
|
|
int ischecked;
|
|
SFun fun;
|
|
} Fixture;
|
|
|
|
struct TCase
|
|
{
|
|
const char *name;
|
|
struct timespec timeout;
|
|
List *tflst; /* list of test functions */
|
|
List *unch_sflst;
|
|
List *unch_tflst;
|
|
List *ch_sflst;
|
|
List *ch_tflst;
|
|
List *tags;
|
|
};
|
|
|
|
typedef struct TestStats
|
|
{
|
|
int n_checked;
|
|
int n_failed;
|
|
int n_errors;
|
|
} TestStats;
|
|
|
|
struct TestResult
|
|
{
|
|
enum test_result rtype; /* Type of result */
|
|
enum ck_result_ctx ctx; /* When the result occurred */
|
|
char *file; /* File where the test occured */
|
|
int line; /* Line number where the test occurred */
|
|
int iter; /* The iteration value for looping tests */
|
|
int duration; /* duration of this test in microseconds */
|
|
const char *tcname; /* Test case that generated the result */
|
|
const char *tname; /* Test that generated the result */
|
|
char *msg; /* Failure message */
|
|
};
|
|
|
|
TestResult *tr_create (void);
|
|
void tr_reset (TestResult * tr);
|
|
void tr_free (TestResult * tr);
|
|
|
|
enum cl_event
|
|
{
|
|
CLINITLOG_SR, /* Initialize log file */
|
|
CLENDLOG_SR, /* Tests are complete */
|
|
CLSTART_SR, /* Suite runner start */
|
|
CLSTART_S, /* Suite start */
|
|
CLEND_SR, /* Suite runner end */
|
|
CLEND_S, /* Suite end */
|
|
CLSTART_T, /* A test case is about to run */
|
|
CLEND_T /* Test case end */
|
|
};
|
|
|
|
typedef void (*LFun) (SRunner *, FILE *, enum print_output,
|
|
void *, enum cl_event);
|
|
|
|
typedef struct Log
|
|
{
|
|
FILE *lfile;
|
|
LFun lfun;
|
|
int close;
|
|
enum print_output mode;
|
|
} Log;
|
|
|
|
struct SRunner
|
|
{
|
|
List *slst; /* List of Suite objects */
|
|
TestStats *stats; /* Run statistics */
|
|
List *resultlst; /* List of unit test results */
|
|
const char *log_fname; /* name of log file */
|
|
const char *xml_fname; /* name of xml output file */
|
|
const char *tap_fname; /* name of tap output file */
|
|
List *loglst; /* list of Log objects */
|
|
enum fork_status fstat; /* controls if suites are forked or not
|
|
NOTE: Don't use this value directly,
|
|
instead use srunner_fork_status */
|
|
};
|
|
|
|
|
|
void set_fork_status (enum fork_status fstat);
|
|
enum fork_status cur_fork_status (void);
|
|
|
|
clockid_t check_get_clockid (void);
|
|
|
|
unsigned int tcase_matching_tag (TCase * tc, List * check_for);
|
|
List *tag_string_to_list (const char *tags_string);
|
|
|
|
#endif /* CHECK_IMPL_H */
|