About
Contact
QtCreator
KDevelop
Solarized
1
// Copyright (C) 2007 Anthony Williams
2
//
3
// Distributed under the Boost Software License, Version 1.0. (See accompanying
4
// file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt
)
5
6
#define
BOOST_TEST_MODULE
Boost.Threads: thread::get_id test suite
7
8
#include
<boost/thread/thread_only.hpp>
9
#include
<boost/test/unit_test.hpp>
10
#include
<boost/bind/bind.hpp>
11
12
void
do_nothing
()
13
{}
14
15
BOOST_AUTO_TEST_CASE
(
test_thread_id_for_default_constructed_thread_is_default_constructed_id
)
16
{
17
boost::
thread
t
;
18
BOOST_CHECK
(
t
.
get_id
()
==
boost::
thread
::
id
(
));
19
}
20
21
BOOST_AUTO_TEST_CASE
(
test_thread_id_for_running_thread_is_not_default_constructed_id
)
22
{
23
boost::
thread
t
(
&
do_nothing
);
24
BOOST_CHECK
(
t
.
get_id
()
!=
boost::
thread
::
id
(
));
25
t
.
join
();
26
}
27
28
BOOST_AUTO_TEST_CASE
(
test_different_threads_have_different_ids
)
29
{
30
boost::
thread
t
(
do_nothing
);
31
boost::
thread
t2
(
do_nothing
);
32
BOOST_CHECK
(
t
.
get_id
()
!=
t2
.
get_id
());
33
t
.
join
();
34
t2
.
join
();
35
}
36
37
BOOST_AUTO_TEST_CASE
(
test_thread_ids_have_a_total_order
)
38
{
39
boost::
thread
t
(
do_nothing
);
40
boost::
thread
t2
(
do_nothing
);
41
boost::
thread
t3
(
do_nothing
);
42
BOOST_CHECK
(
t
.
get_id
()
!=
t2
.
get_id
());
43
BOOST_CHECK
(
t
.
get_id
()
!=
t3
.
get_id
());
44
BOOST_CHECK
(
t2
.
get_id
()
!=
t3
.
get_id
());
45
46
BOOST_CHECK
((
t
.
get_id
()
<
t2
.
get_id
()) != (
t2
.
get_id
()
<
t
.
get_id
()));
47
BOOST_CHECK
((
t
.
get_id
()
<
t3
.
get_id
()) != (
t3
.
get_id
()
<
t
.
get_id
()));
48
BOOST_CHECK
((
t2
.
get_id
()
<
t3
.
get_id
()) != (
t3
.
get_id
()
<
t2
.
get_id
()));
49
50
BOOST_CHECK
((
t
.
get_id
()
>
t2
.
get_id
()) != (
t2
.
get_id
()
>
t
.
get_id
()));
51
BOOST_CHECK
((
t
.
get_id
()
>
t3
.
get_id
()) != (
t3
.
get_id
()
>
t
.
get_id
()));
52
BOOST_CHECK
((
t2
.
get_id
()
>
t3
.
get_id
()) != (
t3
.
get_id
()
>
t2
.
get_id
()));
53
54
BOOST_CHECK
((
t
.
get_id
()
<
t2
.
get_id
()) == (
t2
.
get_id
()
>
t
.
get_id
()));
55
BOOST_CHECK
((
t2
.
get_id
()
<
t
.
get_id
()) == (
t
.
get_id
()
>
t2
.
get_id
()));
56
BOOST_CHECK
((
t
.
get_id
()
<
t3
.
get_id
()) == (
t3
.
get_id
()
>
t
.
get_id
()));
57
BOOST_CHECK
((
t3
.
get_id
()
<
t
.
get_id
()) == (
t
.
get_id
()
>
t3
.
get_id
()));
58
BOOST_CHECK
((
t2
.
get_id
()
<
t3
.
get_id
()) == (
t3
.
get_id
()
>
t2
.
get_id
()));
59
BOOST_CHECK
((
t3
.
get_id
()
<
t2
.
get_id
()) == (
t2
.
get_id
()
>
t3
.
get_id
()));
60
61
BOOST_CHECK
((
t
.
get_id
()
<
t2
.
get_id
()) == (
t2
.
get_id
()
>=
t
.
get_id
()));
62
BOOST_CHECK
((
t2
.
get_id
()
<
t
.
get_id
()) == (
t
.
get_id
()
>=
t2
.
get_id
()));
63
BOOST_CHECK
((
t
.
get_id
()
<
t3
.
get_id
()) == (
t3
.
get_id
()
>=
t
.
get_id
()));
64
BOOST_CHECK
((
t3
.
get_id
()
<
t
.
get_id
()) == (
t
.
get_id
()
>=
t3
.
get_id
()));
65
BOOST_CHECK
((
t2
.
get_id
()
<
t3
.
get_id
()) == (
t3
.
get_id
()
>=
t2
.
get_id
()));
66
BOOST_CHECK
((
t3
.
get_id
()
<
t2
.
get_id
()) == (
t2
.
get_id
()
>=
t3
.
get_id
()));
67
68
BOOST_CHECK
((
t
.
get_id
()
<=
t2
.
get_id
()) == (
t2
.
get_id
()
>
t
.
get_id
()));
69
BOOST_CHECK
((
t2
.
get_id
()
<=
t
.
get_id
()) == (
t
.
get_id
()
>
t2
.
get_id
()));
70
BOOST_CHECK
((
t
.
get_id
()
<=
t3
.
get_id
()) == (
t3
.
get_id
()
>
t
.
get_id
()));
71
BOOST_CHECK
((
t3
.
get_id
()
<=
t
.
get_id
()) == (
t
.
get_id
()
>
t3
.
get_id
()));
72
BOOST_CHECK
((
t2
.
get_id
()
<=
t3
.
get_id
()) == (
t3
.
get_id
()
>
t2
.
get_id
()));
73
BOOST_CHECK
((
t3
.
get_id
()
<=
t2
.
get_id
()) == (
t2
.
get_id
()
>
t3
.
get_id
()));
74
75
if
((
t
.
get_id
()
<
t2
.
get_id
()) && (
t2
.
get_id
()
<
t3
.
get_id
()))
76
{
77
BOOST_CHECK
(
t
.
get_id
()
<
t3
.
get_id
());
78
}
79
else
if
((
t
.
get_id
()
<
t3
.
get_id
()) && (
t3
.
get_id
()
<
t2
.
get_id
()))
80
{
81
BOOST_CHECK
(
t
.
get_id
()
<
t2
.
get_id
());
82
}
83
else
if
((
t2
.
get_id
()
<
t3
.
get_id
()) && (
t3
.
get_id
()
<
t
.
get_id
()))
84
{
85
BOOST_CHECK
(
t2
.
get_id
()
<
t
.
get_id
());
86
}
87
else
if
((
t2
.
get_id
()
<
t
.
get_id
()) && (
t
.
get_id
()
<
t3
.
get_id
()))
88
{
89
BOOST_CHECK
(
t2
.
get_id
()
<
t3
.
get_id
());
90
}
91
else
if
((
t3
.
get_id
()
<
t
.
get_id
()) && (
t
.
get_id
()
<
t2
.
get_id
()))
92
{
93
BOOST_CHECK
(
t3
.
get_id
()
<
t2
.
get_id
());
94
}
95
else
if
((
t3
.
get_id
()
<
t2
.
get_id
()) && (
t2
.
get_id
()
<
t
.
get_id
()))
96
{
97
BOOST_CHECK
(
t3
.
get_id
()
<
t
.
get_id
());
98
}
99
else
100
{
101
BOOST_CHECK
(
false
);
102
}
103
104
boost::
thread
::
id
default_id
;
105
106
BOOST_CHECK
(
default_id
<
t
.
get_id
());
107
BOOST_CHECK
(
default_id
<
t2
.
get_id
());
108
BOOST_CHECK
(
default_id
<
t3
.
get_id
());
109
110
BOOST_CHECK
(
default_id
<=
t
.
get_id
());
111
BOOST_CHECK
(
default_id
<=
t2
.
get_id
());
112
BOOST_CHECK
(
default_id
<=
t3
.
get_id
());
113
114
BOOST_CHECK
(!(
default_id
>
t
.
get_id
()));
115
BOOST_CHECK
(!(
default_id
>
t2
.
get_id
()));
116
BOOST_CHECK
(!(
default_id
>
t3
.
get_id
()));
117
118
BOOST_CHECK
(!(
default_id
>=
t
.
get_id
()));
119
BOOST_CHECK
(!(
default_id
>=
t2
.
get_id
()));
120
BOOST_CHECK
(!(
default_id
>=
t3
.
get_id
()));
121
122
t
.
join
();
123
t2
.
join
();
124
t3
.
join
();
125
}
126
127
void
get_thread_id
(
boost::
thread
::
id
*
id
)
128
{
129
*
id
=
boost::this_thread::
get_id
();
130
}
131
132
BOOST_AUTO_TEST_CASE
(
test_thread_id_of_running_thread_returned_by_this_thread_get_id
)
133
{
134
boost::
thread
::
id
id
;
135
boost::
thread
t
(
boost::
bind
(
f:
get_thread_id
,
a1:
&
id
));
136
boost::
thread
::
id
t_id
=
t
.
get_id
();
137
t
.
join
();
138
BOOST_CHECK
(
id
==
t_id
);
139
}
140