~ubuntu-branches/ubuntu/wily/davix/wily

« back to all changes in this revision

Viewing changes to deps/boost_intern/src/thread/test/test_thread_id.cpp

  • Committer: Package Import Robot
  • Author(s): Mattias Ellert
  • Date: 2015-07-31 13:17:55 UTC
  • mfrom: (5.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20150731131755-mizprbmn7ogv33te
Tags: 0.4.1-1
* Update to version 0.4.1
* Implement Multi-Arch support

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
#include <boost/thread/thread_only.hpp>
6
 
#include <boost/test/unit_test.hpp>
7
 
#include <boost/bind.hpp>
8
 
 
9
 
void do_nothing()
10
 
{}
11
 
 
12
 
void test_thread_id_for_default_constructed_thread_is_default_constructed_id()
13
 
{
14
 
    boost::thread t;
15
 
    BOOST_CHECK(t.get_id()==boost::thread::id());
16
 
}
17
 
 
18
 
void test_thread_id_for_running_thread_is_not_default_constructed_id()
19
 
{
20
 
    boost::thread t(do_nothing);
21
 
    BOOST_CHECK(t.get_id()!=boost::thread::id());
22
 
    t.join();
23
 
}
24
 
 
25
 
void test_different_threads_have_different_ids()
26
 
{
27
 
    boost::thread t(do_nothing);
28
 
    boost::thread t2(do_nothing);
29
 
    BOOST_CHECK(t.get_id()!=t2.get_id());
30
 
    t.join();
31
 
    t2.join();
32
 
}
33
 
 
34
 
void test_thread_ids_have_a_total_order()
35
 
{
36
 
    boost::thread t(do_nothing);
37
 
    boost::thread t2(do_nothing);
38
 
    boost::thread t3(do_nothing);
39
 
    BOOST_CHECK(t.get_id()!=t2.get_id());
40
 
    BOOST_CHECK(t.get_id()!=t3.get_id());
41
 
    BOOST_CHECK(t2.get_id()!=t3.get_id());
42
 
 
43
 
    BOOST_CHECK((t.get_id()<t2.get_id()) != (t2.get_id()<t.get_id()));
44
 
    BOOST_CHECK((t.get_id()<t3.get_id()) != (t3.get_id()<t.get_id()));
45
 
    BOOST_CHECK((t2.get_id()<t3.get_id()) != (t3.get_id()<t2.get_id()));
46
 
 
47
 
    BOOST_CHECK((t.get_id()>t2.get_id()) != (t2.get_id()>t.get_id()));
48
 
    BOOST_CHECK((t.get_id()>t3.get_id()) != (t3.get_id()>t.get_id()));
49
 
    BOOST_CHECK((t2.get_id()>t3.get_id()) != (t3.get_id()>t2.get_id()));
50
 
 
51
 
    BOOST_CHECK((t.get_id()<t2.get_id()) == (t2.get_id()>t.get_id()));
52
 
    BOOST_CHECK((t2.get_id()<t.get_id()) == (t.get_id()>t2.get_id()));
53
 
    BOOST_CHECK((t.get_id()<t3.get_id()) == (t3.get_id()>t.get_id()));
54
 
    BOOST_CHECK((t3.get_id()<t.get_id()) == (t.get_id()>t3.get_id()));
55
 
    BOOST_CHECK((t2.get_id()<t3.get_id()) == (t3.get_id()>t2.get_id()));
56
 
    BOOST_CHECK((t3.get_id()<t2.get_id()) == (t2.get_id()>t3.get_id()));
57
 
 
58
 
    BOOST_CHECK((t.get_id()<t2.get_id()) == (t2.get_id()>=t.get_id()));
59
 
    BOOST_CHECK((t2.get_id()<t.get_id()) == (t.get_id()>=t2.get_id()));
60
 
    BOOST_CHECK((t.get_id()<t3.get_id()) == (t3.get_id()>=t.get_id()));
61
 
    BOOST_CHECK((t3.get_id()<t.get_id()) == (t.get_id()>=t3.get_id()));
62
 
    BOOST_CHECK((t2.get_id()<t3.get_id()) == (t3.get_id()>=t2.get_id()));
63
 
    BOOST_CHECK((t3.get_id()<t2.get_id()) == (t2.get_id()>=t3.get_id()));
64
 
 
65
 
    BOOST_CHECK((t.get_id()<=t2.get_id()) == (t2.get_id()>t.get_id()));
66
 
    BOOST_CHECK((t2.get_id()<=t.get_id()) == (t.get_id()>t2.get_id()));
67
 
    BOOST_CHECK((t.get_id()<=t3.get_id()) == (t3.get_id()>t.get_id()));
68
 
    BOOST_CHECK((t3.get_id()<=t.get_id()) == (t.get_id()>t3.get_id()));
69
 
    BOOST_CHECK((t2.get_id()<=t3.get_id()) == (t3.get_id()>t2.get_id()));
70
 
    BOOST_CHECK((t3.get_id()<=t2.get_id()) == (t2.get_id()>t3.get_id()));
71
 
 
72
 
    if((t.get_id()<t2.get_id()) && (t2.get_id()<t3.get_id()))
73
 
    {
74
 
        BOOST_CHECK(t.get_id()<t3.get_id());
75
 
    }
76
 
    else if((t.get_id()<t3.get_id()) && (t3.get_id()<t2.get_id()))
77
 
    {
78
 
        BOOST_CHECK(t.get_id()<t2.get_id());
79
 
    }
80
 
    else if((t2.get_id()<t3.get_id()) && (t3.get_id()<t.get_id()))
81
 
    {
82
 
        BOOST_CHECK(t2.get_id()<t.get_id());
83
 
    }
84
 
    else if((t2.get_id()<t.get_id()) && (t.get_id()<t3.get_id()))
85
 
    {
86
 
        BOOST_CHECK(t2.get_id()<t3.get_id());
87
 
    }
88
 
    else if((t3.get_id()<t.get_id()) && (t.get_id()<t2.get_id()))
89
 
    {
90
 
        BOOST_CHECK(t3.get_id()<t2.get_id());
91
 
    }
92
 
    else if((t3.get_id()<t2.get_id()) && (t2.get_id()<t.get_id()))
93
 
    {
94
 
        BOOST_CHECK(t3.get_id()<t.get_id());
95
 
    }
96
 
    else
97
 
    {
98
 
        BOOST_CHECK(false);
99
 
    }
100
 
 
101
 
    boost::thread::id default_id;
102
 
 
103
 
    BOOST_CHECK(default_id < t.get_id());
104
 
    BOOST_CHECK(default_id < t2.get_id());
105
 
    BOOST_CHECK(default_id < t3.get_id());
106
 
 
107
 
    BOOST_CHECK(default_id <= t.get_id());
108
 
    BOOST_CHECK(default_id <= t2.get_id());
109
 
    BOOST_CHECK(default_id <= t3.get_id());
110
 
 
111
 
    BOOST_CHECK(!(default_id > t.get_id()));
112
 
    BOOST_CHECK(!(default_id > t2.get_id()));
113
 
    BOOST_CHECK(!(default_id > t3.get_id()));
114
 
 
115
 
    BOOST_CHECK(!(default_id >= t.get_id()));
116
 
    BOOST_CHECK(!(default_id >= t2.get_id()));
117
 
    BOOST_CHECK(!(default_id >= t3.get_id()));
118
 
 
119
 
    t.join();
120
 
    t2.join();
121
 
    t3.join();
122
 
}
123
 
 
124
 
void get_thread_id(boost::thread::id* id)
125
 
{
126
 
    *id=boost::this_thread::get_id();
127
 
}
128
 
 
129
 
void test_thread_id_of_running_thread_returned_by_this_thread_get_id()
130
 
{
131
 
    boost::thread::id id;
132
 
    boost::thread t(boost::bind(get_thread_id,&id));
133
 
    boost::thread::id t_id=t.get_id();
134
 
    t.join();
135
 
    BOOST_CHECK(id==t_id);
136
 
}
137
 
 
138
 
boost::unit_test::test_suite* init_unit_test_suite(int, char*[])
139
 
{
140
 
    boost::unit_test::test_suite* test =
141
 
        BOOST_TEST_SUITE("Boost.Threads: thread move test suite");
142
 
 
143
 
    test->add(BOOST_TEST_CASE(test_thread_id_for_default_constructed_thread_is_default_constructed_id));
144
 
    test->add(BOOST_TEST_CASE(test_thread_id_for_running_thread_is_not_default_constructed_id));
145
 
    test->add(BOOST_TEST_CASE(test_different_threads_have_different_ids));
146
 
    test->add(BOOST_TEST_CASE(test_thread_ids_have_a_total_order));
147
 
    test->add(BOOST_TEST_CASE(test_thread_id_of_running_thread_returned_by_this_thread_get_id));
148
 
    return test;
149
 
}
150
 
 
151