libcopp
2.3.1
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
y
Functions
_
a
c
d
f
g
h
i
m
o
p
r
s
t
w
y
Variables
_
a
b
c
d
e
f
g
h
l
m
o
p
r
s
t
u
w
x
Typedefs
Enumerations
Enumerator
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
y
~
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
y
~
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Typedefs
_
a
b
c
d
e
f
h
i
j
l
m
n
o
p
r
s
t
u
v
w
Enumerations
Enumerator
e
l
s
u
Related Symbols
_
d
e
i
l
o
r
s
w
Files
File List
Globals
All
_
b
c
e
g
j
l
m
o
p
r
s
t
u
w
Functions
b
c
g
j
m
o
p
r
s
t
Variables
b
c
g
m
s
t
Typedefs
Enumerations
Enumerator
c
e
Macros
_
c
l
m
s
t
u
w
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
Loading...
Searching...
No Matches
test
frame
test_macros.h
Go to the documentation of this file.
1
/*
2
* test_macros.h
3
*
4
* Created on: 2014年3月11日
5
* Author: owent
6
*
7
* Released under the MIT license
8
*/
9
10
#ifndef TEST_MACROS_H_
11
#define TEST_MACROS_H_
12
13
#pragma once
14
15
#include <cstdio>
16
#include <iostream>
17
#include <sstream>
18
19
#ifdef _MSC_VER
20
# ifndef WIN32_LEAN_AND_MEAN
21
# define WIN32_LEAN_AND_MEAN
22
# endif
23
# include <Windows.h>
24
#endif
25
26
#ifdef UTILS_TEST_MACRO_TEST_ENABLE_GTEST
27
# include "gtest/gtest.h"
28
29
# define CASE_TEST(test_name, case_name) TEST(test_name, case_name)
30
31
# define CASE_EXPECT_ERROR(msg) GTEST_NONFATAL_FAILURE_(msg)
32
# define CASE_EXPECT_TRUE(c) EXPECT_TRUE(c)
33
# define CASE_EXPECT_FALSE(c) EXPECT_FALSE(c)
34
# define CASE_EXPECT_EQ(l, r) EXPECT_EQ(l, r)
35
# define CASE_EXPECT_NE(l, r) EXPECT_NE(l, r)
36
# define CASE_EXPECT_LT(l, r) EXPECT_LT(l, r)
37
# define CASE_EXPECT_LE(l, r) EXPECT_LE(l, r)
38
# define CASE_EXPECT_GT(l, r) EXPECT_GT(l, r)
39
# define CASE_EXPECT_GE(l, r) EXPECT_GE(l, r)
40
41
#else
42
# include "
test_manager.h
"
43
44
# define test_case_func_name(test_name, case_name) test_func_test_##test_name##_case_##case_name##_
45
# define test_case_obj_name(test_name, case_name) test_obj_test_##test_name##_case_##case_name##_
46
47
# define CASE_TEST(test_name, case_name) \
48
static void test_case_func_name(test_name, case_name)(); \
49
static test_case_base test_case_obj_name(test_name, case_name)(#test_name, #case_name, \
50
test_case_func_name(test_name, case_name)); \
51
void test_case_func_name(test_name, case_name)()
47
# define CASE_TEST(test_name, case_name) \
…
52
53
# define test_event_on_start_func_name(event_name) test_func_event_on_start_##event_name##_
54
# define test_event_on_start_obj_name(event_name) test_obj_event_on_start_##event_name##_
55
# define test_event_on_exit_func_name(event_name) test_func_event_on_exit_##event_name##_
56
# define test_event_on_exit_obj_name(event_name) test_obj_event_on_exit_##event_name##_
57
58
# ifdef _MSC_VER
59
# define CASE_TEST_EVENT_ON_START(event_name, ...) \
60
static void test_event_on_start_func_name(event_name)(); \
61
static test_on_start_base test_event_on_start_obj_name(event_name)( \
62
#event_name, test_event_on_start_func_name(event_name), __VA_ARGS__); \
63
void test_event_on_start_func_name(event_name)()
64
65
# define CASE_TEST_EVENT_ON_EXIT(event_name, ...) \
66
static void test_event_on_exit_func_name(event_name)(); \
67
static test_on_exit_base test_event_on_exit_obj_name(event_name)( \
68
#event_name, test_event_on_exit_func_name(event_name), __VA_ARGS__); \
69
void test_event_on_exit_func_name(event_name)()
70
# else
71
# define CASE_TEST_EVENT_ON_START(event_name, args...) \
72
static void test_event_on_start_func_name(event_name)(); \
73
static test_on_start_base test_event_on_start_obj_name(event_name)( \
74
#event_name, test_event_on_start_func_name(event_name), ##args); \
75
void test_event_on_start_func_name(event_name)()
71
# define CASE_TEST_EVENT_ON_START(event_name, args...) \
…
76
77
# define CASE_TEST_EVENT_ON_EXIT(event_name, args...) \
78
static void test_event_on_exit_func_name(event_name)(); \
79
static test_on_exit_base test_event_on_exit_obj_name(event_name)( \
80
#event_name, test_event_on_exit_func_name(event_name), ##args); \
81
void test_event_on_exit_func_name(event_name)()
77
# define CASE_TEST_EVENT_ON_EXIT(event_name, args...) \
…
82
# endif
83
84
# ifdef UTILS_TEST_MACRO_TEST_ENABLE_BOOST_TEST
85
# define CASE_EXPECT_ERROR(msg) BOOST_ERROR(msg)
86
# define CASE_EXPECT_TRUE(c) BOOST_CHECK(c)
87
# define CASE_EXPECT_FALSE(c) BOOST_CHECK(!(c))
88
# define CASE_EXPECT_EQ(l, r) BOOST_CHECK_EQUAL(l, r)
89
# define CASE_EXPECT_NE(l, r) BOOST_CHECK_NE(l, r)
90
# define CASE_EXPECT_LT(l, r) BOOST_CHECK_LT(l, r)
91
# define CASE_EXPECT_LE(l, r) BOOST_CHECK_LE(l, r)
92
# define CASE_EXPECT_GT(l, r) BOOST_CHECK_GT(l, r)
93
# define CASE_EXPECT_GE(l, r) BOOST_CHECK_GE(l, r)
94
95
# else
96
# define CASE_EXPECT_ERROR(msg) test_manager::me().expect_false(true, msg, __FILE__, __LINE__)
97
# define CASE_EXPECT_TRUE(c) test_manager::me().expect_true((c), #c, __FILE__, __LINE__)
98
# define CASE_EXPECT_FALSE(c) test_manager::me().expect_false((c), #c, __FILE__, __LINE__)
99
# define CASE_EXPECT_EQ(l, r) test_manager::me().expect_eq((l), (r), #l, #r, __FILE__, __LINE__)
100
# define CASE_EXPECT_NE(l, r) test_manager::me().expect_ne((l), (r), #l, #r, __FILE__, __LINE__)
101
# define CASE_EXPECT_LT(l, r) test_manager::me().expect_lt((l), (r), #l, #r, __FILE__, __LINE__)
102
# define CASE_EXPECT_LE(l, r) test_manager::me().expect_le((l), (r), #l, #r, __FILE__, __LINE__)
103
# define CASE_EXPECT_GT(l, r) test_manager::me().expect_gt((l), (r), #l, #r, __FILE__, __LINE__)
104
# define CASE_EXPECT_GE(l, r) test_manager::me().expect_ge((l), (r), #l, #r, __FILE__, __LINE__)
105
106
# endif
107
108
#endif
109
110
// 前景色: BLACK,RED,GREEN,YELLOW,BLUE,MAGENTA,CYAN,WHITE
111
#define CASE_MSG_FCOLOR(x) util::cli::shell_font_style::SHELL_FONT_COLOR_##x
112
// 背景色: BLACK,RED,GREEN,YELLOW,BLUE,MAGENTA,CYAN,WHITE
113
#define CASE_MSG_BCOLOR(x) util::cli::shell_font_style::SHELL_FONT_BACKGROUND_COLOR_##x
114
// 字体格式: BOLD,UNDERLINE,FLASH,DARK
115
#define CASE_MSG_STYLE(x) util::cli::shell_font_style::SHELL_FONT_SPEC_##x
116
117
#define CASE_MSG_INFO() util::cli::shell_stream(std::cout)() << "[ RUNNING ] "
118
#define CASE_MSG_ERROR() util::cli::shell_stream(std::cerr)() << "[ RUNNING ] "
119
120
// 测试中休眠
121
#if (defined(__cplusplus) && __cplusplus >= 201103L) || (defined(_MSC_VER) && _MSC_VER >= 1800)
122
# include <thread>
123
# define CASE_THREAD_SLEEP_MS(x) std::this_thread::sleep_for(std::chrono::milliseconds(x))
124
# define CASE_THREAD_YIELD() std::this_thread::yield()
125
126
#elif defined(_MSC_VER)
127
# ifndef WIN32_LEAN_AND_MEAN
128
# define WIN32_LEAN_AND_MEAN
129
# endif
130
# include <Windows.h>
131
# define CASE_THREAD_SLEEP_MS(x) Sleep(x)
132
# define CASE_THREAD_YIELD() YieldProcessor()
133
134
#else
135
# include <unistd.h>
136
137
# define CASE_THREAD_SLEEP_MS(x) \
138
((x > 1000) ? sleep(x / 1000) : usleep(0)); \
139
usleep((x % 1000) * 1000)
137
# define CASE_THREAD_SLEEP_MS(x) \
…
140
# if defined(__linux__) || defined(__unix__)
141
# include <sched.h>
142
# define CASE_THREAD_YIELD() sched_yield()
143
# elif defined(__GNUC__) || defined(__clang__)
144
# if defined(__i386__) || defined(__x86_64__)
150
# define CASE_THREAD_YIELD() __asm__ __volatile__("pause")
151
# elif defined(__ia64__) || defined(__ia64)
157
# define CASE_THREAD_YIELD() __asm__ __volatile__("hint @pause")
158
# elif defined(__arm__) && !defined(__ANDROID__)
163
# define CASE_THREAD_YIELD() __asm__ __volatile__("yield")
164
# else
165
# define CASE_THREAD_YIELD()
166
# endif
167
# else
168
# define CASE_THREAD_YIELD()
169
# endif
170
171
#endif
172
173
#endif
/* TEST_MACROS_H_ */
test_manager.h
Generated by
1.9.8