OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file tests the C API. | 5 // This file tests the C API. |
6 | 6 |
7 #include "mojo/public/c/system/core.h" | 7 #include "mojo/public/c/system/core.h" |
8 | 8 |
9 #include <string.h> | 9 #include <string.h> |
10 | 10 |
11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
12 | 12 |
13 namespace mojo { | 13 namespace mojo { |
14 namespace { | 14 namespace { |
15 | 15 |
16 TEST(CoreTest, GetTimeTicksNow) { | 16 TEST(CoreTest, GetTimeTicksNow) { |
17 const MojoTimeTicks start = MojoGetTimeTicksNow(); | 17 const MojoTimeTicks start = MojoGetTimeTicksNow(); |
18 EXPECT_NE(static_cast<MojoTimeTicks>(0), start) | 18 EXPECT_NE(static_cast<MojoTimeTicks>(0), start) |
19 << "MojoGetTimeTicksNow should return nonzero value"; | 19 << "MojoGetTimeTicksNow should return nonzero value"; |
20 } | 20 } |
21 | 21 |
22 // The only handle that's guaranteed to be invalid is |MOJO_HANDLE_INVALID|. | 22 // The only handle that's guaranteed to be invalid is |MOJO_HANDLE_INVALID|. |
23 // Tests that everything that takes a handle properly recognizes it. | 23 // Tests that everything that takes a handle properly recognizes it. |
24 TEST(CoreTest, InvalidHandle) { | 24 TEST(CoreTest, InvalidHandle) { |
25 MojoHandle h0, h1; | 25 MojoHandle h0, h1; |
26 MojoHandleSignals sig; | 26 MojoHandleSignals sig; |
27 char buffer[10] = { 0 }; | 27 char buffer[10] = {0}; |
28 uint32_t buffer_size; | 28 uint32_t buffer_size; |
29 void* write_pointer; | 29 void* write_pointer; |
30 const void* read_pointer; | 30 const void* read_pointer; |
31 | 31 |
32 // Close: | 32 // Close: |
33 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(MOJO_HANDLE_INVALID)); | 33 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(MOJO_HANDLE_INVALID)); |
34 | 34 |
35 // Wait: | 35 // Wait: |
36 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 36 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
37 MojoWait(MOJO_HANDLE_INVALID, ~MOJO_HANDLE_SIGNAL_NONE, 1000000)); | 37 MojoWait(MOJO_HANDLE_INVALID, ~MOJO_HANDLE_SIGNAL_NONE, 1000000)); |
38 h0 = MOJO_HANDLE_INVALID; | 38 h0 = MOJO_HANDLE_INVALID; |
39 sig = ~MOJO_HANDLE_SIGNAL_NONE; | 39 sig = ~MOJO_HANDLE_SIGNAL_NONE; |
40 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 40 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
41 MojoWaitMany(&h0, &sig, 1, MOJO_DEADLINE_INDEFINITE)); | 41 MojoWaitMany(&h0, &sig, 1, MOJO_DEADLINE_INDEFINITE)); |
42 | 42 |
43 // Message pipe: | 43 // Message pipe: |
44 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 44 EXPECT_EQ( |
45 MojoWriteMessage(h0, buffer, 3, NULL, 0, | 45 MOJO_RESULT_INVALID_ARGUMENT, |
46 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 46 MojoWriteMessage(h0, buffer, 3, NULL, 0, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
47 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 47 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
48 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 48 EXPECT_EQ( |
49 MojoReadMessage(h0, buffer, &buffer_size, NULL, NULL, | 49 MOJO_RESULT_INVALID_ARGUMENT, |
50 MOJO_READ_MESSAGE_FLAG_NONE)); | 50 MojoReadMessage( |
| 51 h0, buffer, &buffer_size, NULL, NULL, MOJO_READ_MESSAGE_FLAG_NONE)); |
51 | 52 |
52 // Data pipe: | 53 // Data pipe: |
53 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 54 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
54 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 55 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
55 MojoWriteData(h0, buffer, &buffer_size, MOJO_WRITE_DATA_FLAG_NONE)); | 56 MojoWriteData(h0, buffer, &buffer_size, MOJO_WRITE_DATA_FLAG_NONE)); |
56 write_pointer = NULL; | 57 write_pointer = NULL; |
57 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 58 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
58 MojoBeginWriteData(h0, &write_pointer, &buffer_size, | 59 MojoBeginWriteData( |
59 MOJO_WRITE_DATA_FLAG_NONE)); | 60 h0, &write_pointer, &buffer_size, MOJO_WRITE_DATA_FLAG_NONE)); |
60 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoEndWriteData(h0, 1)); | 61 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoEndWriteData(h0, 1)); |
61 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 62 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
62 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 63 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
63 MojoReadData(h0, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); | 64 MojoReadData(h0, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); |
64 read_pointer = NULL; | 65 read_pointer = NULL; |
65 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 66 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
66 MojoBeginReadData(h0, &read_pointer, &buffer_size, | 67 MojoBeginReadData( |
67 MOJO_READ_DATA_FLAG_NONE)); | 68 h0, &read_pointer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); |
68 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoEndReadData(h0, 1)); | 69 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoEndReadData(h0, 1)); |
69 | 70 |
70 // Shared buffer: | 71 // Shared buffer: |
71 h1 = MOJO_HANDLE_INVALID; | 72 h1 = MOJO_HANDLE_INVALID; |
72 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 73 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
73 MojoDuplicateBufferHandle(h0, NULL, &h1)); | 74 MojoDuplicateBufferHandle(h0, NULL, &h1)); |
74 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 75 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
75 MojoMapBuffer(h0, 0, 1, &write_pointer, MOJO_MAP_BUFFER_FLAG_NONE)); | 76 MojoMapBuffer(h0, 0, 1, &write_pointer, MOJO_MAP_BUFFER_FLAG_NONE)); |
76 } | 77 } |
77 | 78 |
78 TEST(CoreTest, BasicMessagePipe) { | 79 TEST(CoreTest, BasicMessagePipe) { |
79 MojoHandle h0, h1; | 80 MojoHandle h0, h1; |
80 MojoHandleSignals sig; | 81 MojoHandleSignals sig; |
81 char buffer[10] = { 0 }; | 82 char buffer[10] = {0}; |
82 uint32_t buffer_size; | 83 uint32_t buffer_size; |
83 | 84 |
84 h0 = MOJO_HANDLE_INVALID; | 85 h0 = MOJO_HANDLE_INVALID; |
85 h1 = MOJO_HANDLE_INVALID; | 86 h1 = MOJO_HANDLE_INVALID; |
86 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(NULL, &h0, &h1)); | 87 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(NULL, &h0, &h1)); |
87 EXPECT_NE(h0, MOJO_HANDLE_INVALID); | 88 EXPECT_NE(h0, MOJO_HANDLE_INVALID); |
88 EXPECT_NE(h1, MOJO_HANDLE_INVALID); | 89 EXPECT_NE(h1, MOJO_HANDLE_INVALID); |
89 | 90 |
90 // Shouldn't be readable. | 91 // Shouldn't be readable. |
91 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, | 92 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, |
92 MojoWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 0)); | 93 MojoWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 0)); |
93 | 94 |
94 // Should be writable. | 95 // Should be writable. |
95 EXPECT_EQ(MOJO_RESULT_OK, MojoWait(h0, MOJO_HANDLE_SIGNAL_WRITABLE, 0)); | 96 EXPECT_EQ(MOJO_RESULT_OK, MojoWait(h0, MOJO_HANDLE_SIGNAL_WRITABLE, 0)); |
96 | 97 |
97 // Try to read. | 98 // Try to read. |
98 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 99 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
99 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 100 EXPECT_EQ( |
100 MojoReadMessage(h0, buffer, &buffer_size, NULL, NULL, | 101 MOJO_RESULT_SHOULD_WAIT, |
101 MOJO_READ_MESSAGE_FLAG_NONE)); | 102 MojoReadMessage( |
| 103 h0, buffer, &buffer_size, NULL, NULL, MOJO_READ_MESSAGE_FLAG_NONE)); |
102 | 104 |
103 // Write to |h1|. | 105 // Write to |h1|. |
104 static const char kHello[] = "hello"; | 106 static const char kHello[] = "hello"; |
105 buffer_size = static_cast<uint32_t>(sizeof(kHello)); | 107 buffer_size = static_cast<uint32_t>(sizeof(kHello)); |
106 EXPECT_EQ(MOJO_RESULT_OK, | 108 EXPECT_EQ( |
107 MojoWriteMessage(h1, kHello, buffer_size, NULL, 0, | 109 MOJO_RESULT_OK, |
108 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 110 MojoWriteMessage( |
| 111 h1, kHello, buffer_size, NULL, 0, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
109 | 112 |
110 // |h0| should be readable. | 113 // |h0| should be readable. |
111 sig = MOJO_HANDLE_SIGNAL_READABLE; | 114 sig = MOJO_HANDLE_SIGNAL_READABLE; |
112 EXPECT_EQ(MOJO_RESULT_OK, | 115 EXPECT_EQ(MOJO_RESULT_OK, |
113 MojoWaitMany(&h0, &sig, 1, MOJO_DEADLINE_INDEFINITE)); | 116 MojoWaitMany(&h0, &sig, 1, MOJO_DEADLINE_INDEFINITE)); |
114 | 117 |
115 // Read from |h0|. | 118 // Read from |h0|. |
116 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 119 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
117 EXPECT_EQ(MOJO_RESULT_OK, | 120 EXPECT_EQ( |
118 MojoReadMessage(h0, buffer, &buffer_size, NULL, NULL, | 121 MOJO_RESULT_OK, |
119 MOJO_READ_MESSAGE_FLAG_NONE)); | 122 MojoReadMessage( |
| 123 h0, buffer, &buffer_size, NULL, NULL, MOJO_READ_MESSAGE_FLAG_NONE)); |
120 EXPECT_EQ(static_cast<uint32_t>(sizeof(kHello)), buffer_size); | 124 EXPECT_EQ(static_cast<uint32_t>(sizeof(kHello)), buffer_size); |
121 EXPECT_STREQ(kHello, buffer); | 125 EXPECT_STREQ(kHello, buffer); |
122 | 126 |
123 // |h0| should no longer be readable. | 127 // |h0| should no longer be readable. |
124 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, | 128 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, |
125 MojoWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 10)); | 129 MojoWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 10)); |
126 | 130 |
127 // Close |h0|. | 131 // Close |h0|. |
128 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h0)); | 132 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h0)); |
129 | 133 |
130 // |h1| should no longer be readable or writable. | 134 // |h1| should no longer be readable or writable. |
131 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 135 EXPECT_EQ( |
132 MojoWait(h1, | 136 MOJO_RESULT_FAILED_PRECONDITION, |
133 MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 137 MojoWait( |
134 1000)); | 138 h1, MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 1000)); |
135 | 139 |
136 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h1)); | 140 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h1)); |
137 } | 141 } |
138 | 142 |
139 TEST(CoreTest, BasicDataPipe) { | 143 TEST(CoreTest, BasicDataPipe) { |
140 MojoHandle hp, hc; | 144 MojoHandle hp, hc; |
141 MojoHandleSignals sig; | 145 MojoHandleSignals sig; |
142 char buffer[20] = { 0 }; | 146 char buffer[20] = {0}; |
143 uint32_t buffer_size; | 147 uint32_t buffer_size; |
144 void* write_pointer; | 148 void* write_pointer; |
145 const void* read_pointer; | 149 const void* read_pointer; |
146 | 150 |
147 hp = MOJO_HANDLE_INVALID; | 151 hp = MOJO_HANDLE_INVALID; |
148 hc = MOJO_HANDLE_INVALID; | 152 hc = MOJO_HANDLE_INVALID; |
149 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(NULL, &hp, &hc)); | 153 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(NULL, &hp, &hc)); |
150 EXPECT_NE(hp, MOJO_HANDLE_INVALID); | 154 EXPECT_NE(hp, MOJO_HANDLE_INVALID); |
151 EXPECT_NE(hc, MOJO_HANDLE_INVALID); | 155 EXPECT_NE(hc, MOJO_HANDLE_INVALID); |
152 | 156 |
153 // The consumer |hc| shouldn't be readable. | 157 // The consumer |hc| shouldn't be readable. |
154 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, | 158 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, |
155 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0)); | 159 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0)); |
156 | 160 |
157 // The producer |hp| should be writable. | 161 // The producer |hp| should be writable. |
158 EXPECT_EQ(MOJO_RESULT_OK, MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITABLE, 0)); | 162 EXPECT_EQ(MOJO_RESULT_OK, MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITABLE, 0)); |
159 | 163 |
160 // Try to read from |hc|. | 164 // Try to read from |hc|. |
161 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 165 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
162 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 166 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
163 MojoReadData(hc, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); | 167 MojoReadData(hc, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); |
164 | 168 |
165 // Try to begin a two-phase read from |hc|. | 169 // Try to begin a two-phase read from |hc|. |
166 read_pointer = NULL; | 170 read_pointer = NULL; |
167 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 171 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
168 MojoBeginReadData(hc, &read_pointer, &buffer_size, | 172 MojoBeginReadData( |
169 MOJO_READ_DATA_FLAG_NONE)); | 173 hc, &read_pointer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); |
170 | 174 |
171 // Write to |hp|. | 175 // Write to |hp|. |
172 static const char kHello[] = "hello "; | 176 static const char kHello[] = "hello "; |
173 // Don't include terminating null. | 177 // Don't include terminating null. |
174 buffer_size = static_cast<uint32_t>(strlen(kHello)); | 178 buffer_size = static_cast<uint32_t>(strlen(kHello)); |
175 EXPECT_EQ(MOJO_RESULT_OK, | 179 EXPECT_EQ( |
176 MojoWriteData(hp, kHello, &buffer_size, | 180 MOJO_RESULT_OK, |
177 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 181 MojoWriteData(hp, kHello, &buffer_size, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
178 | 182 |
179 // |hc| should be(come) readable. | 183 // |hc| should be(come) readable. |
180 sig = MOJO_HANDLE_SIGNAL_READABLE; | 184 sig = MOJO_HANDLE_SIGNAL_READABLE; |
181 EXPECT_EQ(MOJO_RESULT_OK, | 185 EXPECT_EQ(MOJO_RESULT_OK, |
182 MojoWaitMany(&hc, &sig, 1, MOJO_DEADLINE_INDEFINITE)); | 186 MojoWaitMany(&hc, &sig, 1, MOJO_DEADLINE_INDEFINITE)); |
183 | 187 |
184 // Do a two-phase write to |hp|. | 188 // Do a two-phase write to |hp|. |
185 EXPECT_EQ(MOJO_RESULT_OK, | 189 EXPECT_EQ(MOJO_RESULT_OK, |
186 MojoBeginWriteData(hp, &write_pointer, &buffer_size, | 190 MojoBeginWriteData( |
187 MOJO_WRITE_DATA_FLAG_NONE)); | 191 hp, &write_pointer, &buffer_size, MOJO_WRITE_DATA_FLAG_NONE)); |
188 static const char kWorld[] = "world"; | 192 static const char kWorld[] = "world"; |
189 ASSERT_GE(buffer_size, sizeof(kWorld)); | 193 ASSERT_GE(buffer_size, sizeof(kWorld)); |
190 // Include the terminating null. | 194 // Include the terminating null. |
191 memcpy(write_pointer, kWorld, sizeof(kWorld)); | 195 memcpy(write_pointer, kWorld, sizeof(kWorld)); |
192 EXPECT_EQ(MOJO_RESULT_OK, | 196 EXPECT_EQ(MOJO_RESULT_OK, |
193 MojoEndWriteData(hp, static_cast<uint32_t>(sizeof(kWorld)))); | 197 MojoEndWriteData(hp, static_cast<uint32_t>(sizeof(kWorld)))); |
194 | 198 |
195 // Read one character from |hc|. | 199 // Read one character from |hc|. |
196 memset(buffer, 0, sizeof(buffer)); | 200 memset(buffer, 0, sizeof(buffer)); |
197 buffer_size = 1; | 201 buffer_size = 1; |
198 EXPECT_EQ(MOJO_RESULT_OK, | 202 EXPECT_EQ(MOJO_RESULT_OK, |
199 MojoReadData(hc, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); | 203 MojoReadData(hc, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); |
200 | 204 |
201 // Close |hp|. | 205 // Close |hp|. |
202 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hp)); | 206 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hp)); |
203 | 207 |
204 // |hc| should still be readable. | 208 // |hc| should still be readable. |
205 EXPECT_EQ(MOJO_RESULT_OK, MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0)); | 209 EXPECT_EQ(MOJO_RESULT_OK, MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0)); |
206 | 210 |
207 // Do a two-phase read from |hc|. | 211 // Do a two-phase read from |hc|. |
208 read_pointer = NULL; | 212 read_pointer = NULL; |
209 EXPECT_EQ(MOJO_RESULT_OK, | 213 EXPECT_EQ(MOJO_RESULT_OK, |
210 MojoBeginReadData(hc, &read_pointer, &buffer_size, | 214 MojoBeginReadData( |
211 MOJO_READ_DATA_FLAG_NONE)); | 215 hc, &read_pointer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); |
212 ASSERT_LE(buffer_size, sizeof(buffer) - 1); | 216 ASSERT_LE(buffer_size, sizeof(buffer) - 1); |
213 memcpy(&buffer[1], read_pointer, buffer_size); | 217 memcpy(&buffer[1], read_pointer, buffer_size); |
214 EXPECT_EQ(MOJO_RESULT_OK, MojoEndReadData(hc, buffer_size)); | 218 EXPECT_EQ(MOJO_RESULT_OK, MojoEndReadData(hc, buffer_size)); |
215 EXPECT_STREQ("hello world", buffer); | 219 EXPECT_STREQ("hello world", buffer); |
216 | 220 |
217 // |hc| should no longer be readable. | 221 // |hc| should no longer be readable. |
218 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 222 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
219 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 1000)); | 223 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 1000)); |
220 | 224 |
221 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hc)); | 225 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hc)); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 // This checks that things actually work in C (not C++). | 280 // This checks that things actually work in C (not C++). |
277 TEST(CoreTest, MinimalCTest) { | 281 TEST(CoreTest, MinimalCTest) { |
278 const char* failure = MinimalCTest(); | 282 const char* failure = MinimalCTest(); |
279 EXPECT_TRUE(failure == NULL) << failure; | 283 EXPECT_TRUE(failure == NULL) << failure; |
280 } | 284 } |
281 | 285 |
282 // TODO(vtl): Add multi-threaded tests. | 286 // TODO(vtl): Add multi-threaded tests. |
283 | 287 |
284 } // namespace | 288 } // namespace |
285 } // namespace mojo | 289 } // namespace mojo |
OLD | NEW |