Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(350)

Side by Side Diff: mojo/public/cpp/utility/tests/thread_unittest.cc

Issue 1784643002: Mojo C++ bindings: remove the utility/ folder. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@13_1_remove_thread_dep
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/public/cpp/utility/tests/run_loop_unittest.cc ('k') | mojo/public/cpp/utility/thread.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "mojo/public/cpp/utility/thread.h"
6
7 #include <stddef.h>
8
9 #include "mojo/public/cpp/system/macros.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace mojo {
13 namespace {
14
15 class SetIntThread : public Thread {
16 public:
17 SetIntThread(int* int_to_set, int value)
18 : int_to_set_(int_to_set),
19 value_(value) {
20 }
21 SetIntThread(const Options& options, int* int_to_set, int value)
22 : Thread(options),
23 int_to_set_(int_to_set),
24 value_(value) {
25 }
26
27 ~SetIntThread() override {}
28
29 void Run() override { *int_to_set_ = value_; }
30
31 private:
32 int* const int_to_set_;
33 const int value_;
34
35 DISALLOW_COPY_AND_ASSIGN(SetIntThread);
36 };
37
38 TEST(ThreadTest, CreateAndJoin) {
39 int value = 0;
40
41 // Not starting the thread should result in a no-op.
42 {
43 SetIntThread thread(&value, 1234567);
44 }
45 EXPECT_EQ(0, value);
46
47 // Start and join.
48 {
49 SetIntThread thread(&value, 12345678);
50 thread.Start();
51 thread.Join();
52 EXPECT_EQ(12345678, value);
53 }
54
55 // Ditto, with non-default (but reasonable) stack size.
56 {
57 Thread::Options options;
58 options.set_stack_size(1024 * 1024); // 1 MB.
59 SetIntThread thread(options, &value, 12345678);
60 thread.Start();
61 thread.Join();
62 EXPECT_EQ(12345678, value);
63 }
64 }
65
66 // Tests of assertions for Debug builds.
67 // Note: It's okay to create threads, despite gtest having to fork. (The threads
68 // are in the child process.)
69 #if !defined(NDEBUG)
70 TEST(ThreadTest, DebugAssertionFailures) {
71 // Can only start once.
72 EXPECT_DEATH_IF_SUPPORTED({
73 int value = 0;
74 SetIntThread thread(&value, 1);
75 thread.Start();
76 thread.Start();
77 }, "");
78
79 // Must join (if you start).
80 EXPECT_DEATH_IF_SUPPORTED({
81 int value = 0;
82 SetIntThread thread(&value, 2);
83 thread.Start();
84 }, "");
85
86 // Can only join once.
87 EXPECT_DEATH_IF_SUPPORTED({
88 int value = 0;
89 SetIntThread thread(&value, 3);
90 thread.Start();
91 thread.Join();
92 thread.Join();
93 }, "");
94
95 // Stack too big (we're making certain assumptions here).
96 EXPECT_DEATH_IF_SUPPORTED({
97 int value = 0;
98 Thread::Options options;
99 options.set_stack_size(static_cast<size_t>(-1));
100 SetIntThread thread(options, &value, 4);
101 thread.Start();
102 thread.Join();
103 }, "");
104 }
105 #endif // !defined(NDEBUG)
106
107 } // namespace
108 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/utility/tests/run_loop_unittest.cc ('k') | mojo/public/cpp/utility/thread.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698