| 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 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 MojoHandleSignals sig; | 33 MojoHandleSignals sig; |
| 34 char buffer[10] = {0}; | 34 char buffer[10] = {0}; |
| 35 uint32_t buffer_size; | 35 uint32_t buffer_size; |
| 36 void* write_pointer; | 36 void* write_pointer; |
| 37 const void* read_pointer; | 37 const void* read_pointer; |
| 38 | 38 |
| 39 // Close: | 39 // Close: |
| 40 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(MOJO_HANDLE_INVALID)); | 40 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(MOJO_HANDLE_INVALID)); |
| 41 | 41 |
| 42 // Wait: | 42 // Wait: |
| 43 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 43 EXPECT_EQ( |
| 44 MojoNewWait(MOJO_HANDLE_INVALID, ~MOJO_HANDLE_SIGNAL_NONE, 1000000, | 44 MOJO_RESULT_INVALID_ARGUMENT, |
| 45 NULL)); | 45 MojoWait(MOJO_HANDLE_INVALID, ~MOJO_HANDLE_SIGNAL_NONE, 1000000, NULL)); |
| 46 | 46 |
| 47 h0 = MOJO_HANDLE_INVALID; | 47 h0 = MOJO_HANDLE_INVALID; |
| 48 sig = ~MOJO_HANDLE_SIGNAL_NONE; | 48 sig = ~MOJO_HANDLE_SIGNAL_NONE; |
| 49 EXPECT_EQ( | 49 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 50 MOJO_RESULT_INVALID_ARGUMENT, | 50 MojoWaitMany(&h0, &sig, 1, MOJO_DEADLINE_INDEFINITE, NULL, NULL)); |
| 51 MojoNewWaitMany(&h0, &sig, 1, MOJO_DEADLINE_INDEFINITE, NULL, NULL)); | |
| 52 | 51 |
| 53 // Message pipe: | 52 // Message pipe: |
| 54 EXPECT_EQ( | 53 EXPECT_EQ( |
| 55 MOJO_RESULT_INVALID_ARGUMENT, | 54 MOJO_RESULT_INVALID_ARGUMENT, |
| 56 MojoWriteMessage(h0, buffer, 3, NULL, 0, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 55 MojoWriteMessage(h0, buffer, 3, NULL, 0, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 57 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 56 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 58 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 57 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 59 MojoReadMessage(h0, buffer, &buffer_size, NULL, NULL, | 58 MojoReadMessage(h0, buffer, &buffer_size, NULL, NULL, |
| 60 MOJO_READ_MESSAGE_FLAG_NONE)); | 59 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 61 | 60 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 | 92 |
| 94 h0 = MOJO_HANDLE_INVALID; | 93 h0 = MOJO_HANDLE_INVALID; |
| 95 h1 = MOJO_HANDLE_INVALID; | 94 h1 = MOJO_HANDLE_INVALID; |
| 96 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(NULL, &h0, &h1)); | 95 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(NULL, &h0, &h1)); |
| 97 EXPECT_NE(h0, MOJO_HANDLE_INVALID); | 96 EXPECT_NE(h0, MOJO_HANDLE_INVALID); |
| 98 EXPECT_NE(h1, MOJO_HANDLE_INVALID); | 97 EXPECT_NE(h1, MOJO_HANDLE_INVALID); |
| 99 | 98 |
| 100 // Shouldn't be readable, we haven't written anything. | 99 // Shouldn't be readable, we haven't written anything. |
| 101 MojoHandleSignalsState state; | 100 MojoHandleSignalsState state; |
| 102 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, | 101 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, |
| 103 MojoNewWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 0, &state)); | 102 MojoWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 0, &state)); |
| 104 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals); | 103 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals); |
| 105 EXPECT_EQ(kSignalAll, state.satisfiable_signals); | 104 EXPECT_EQ(kSignalAll, state.satisfiable_signals); |
| 106 | 105 |
| 107 // Should be writable. | 106 // Should be writable. |
| 108 EXPECT_EQ(MOJO_RESULT_OK, | 107 EXPECT_EQ(MOJO_RESULT_OK, |
| 109 MojoNewWait(h0, MOJO_HANDLE_SIGNAL_WRITABLE, 0, &state)); | 108 MojoWait(h0, MOJO_HANDLE_SIGNAL_WRITABLE, 0, &state)); |
| 110 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals); | 109 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals); |
| 111 EXPECT_EQ(kSignalAll, state.satisfiable_signals); | 110 EXPECT_EQ(kSignalAll, state.satisfiable_signals); |
| 112 | 111 |
| 113 // Try to read. | 112 // Try to read. |
| 114 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 113 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 115 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 114 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
| 116 MojoReadMessage(h0, buffer, &buffer_size, NULL, NULL, | 115 MojoReadMessage(h0, buffer, &buffer_size, NULL, NULL, |
| 117 MOJO_READ_MESSAGE_FLAG_NONE)); | 116 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 118 | 117 |
| 119 // Write to |h1|. | 118 // Write to |h1|. |
| 120 static const char kHello[] = "hello"; | 119 static const char kHello[] = "hello"; |
| 121 buffer_size = static_cast<uint32_t>(sizeof(kHello)); | 120 buffer_size = static_cast<uint32_t>(sizeof(kHello)); |
| 122 EXPECT_EQ(MOJO_RESULT_OK, MojoWriteMessage(h1, kHello, buffer_size, NULL, 0, | 121 EXPECT_EQ(MOJO_RESULT_OK, MojoWriteMessage(h1, kHello, buffer_size, NULL, 0, |
| 123 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 122 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 124 | 123 |
| 125 // |h0| should be readable. | 124 // |h0| should be readable. |
| 126 uint32_t result_index = 1; | 125 uint32_t result_index = 1; |
| 127 MojoHandleSignalsState states[1]; | 126 MojoHandleSignalsState states[1]; |
| 128 sig = MOJO_HANDLE_SIGNAL_READABLE; | 127 sig = MOJO_HANDLE_SIGNAL_READABLE; |
| 129 EXPECT_EQ(MOJO_RESULT_OK, | 128 EXPECT_EQ(MOJO_RESULT_OK, MojoWaitMany(&h0, &sig, 1, MOJO_DEADLINE_INDEFINITE, |
| 130 MojoNewWaitMany(&h0, &sig, 1, MOJO_DEADLINE_INDEFINITE, | 129 &result_index, states)); |
| 131 &result_index, states)); | |
| 132 | 130 |
| 133 EXPECT_EQ(0u, result_index); | 131 EXPECT_EQ(0u, result_index); |
| 134 EXPECT_EQ(kSignalReadadableWritable, states[0].satisfied_signals); | 132 EXPECT_EQ(kSignalReadadableWritable, states[0].satisfied_signals); |
| 135 EXPECT_EQ(kSignalAll, states[0].satisfiable_signals); | 133 EXPECT_EQ(kSignalAll, states[0].satisfiable_signals); |
| 136 | 134 |
| 137 // Read from |h0|. | 135 // Read from |h0|. |
| 138 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 136 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 139 EXPECT_EQ(MOJO_RESULT_OK, MojoReadMessage(h0, buffer, &buffer_size, NULL, | 137 EXPECT_EQ(MOJO_RESULT_OK, MojoReadMessage(h0, buffer, &buffer_size, NULL, |
| 140 NULL, MOJO_READ_MESSAGE_FLAG_NONE)); | 138 NULL, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 141 EXPECT_EQ(static_cast<uint32_t>(sizeof(kHello)), buffer_size); | 139 EXPECT_EQ(static_cast<uint32_t>(sizeof(kHello)), buffer_size); |
| 142 EXPECT_STREQ(kHello, buffer); | 140 EXPECT_STREQ(kHello, buffer); |
| 143 | 141 |
| 144 // |h0| should no longer be readable. | 142 // |h0| should no longer be readable. |
| 145 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, | 143 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, |
| 146 MojoNewWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 10, &state)); | 144 MojoWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 10, &state)); |
| 147 | 145 |
| 148 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals); | 146 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals); |
| 149 EXPECT_EQ(kSignalAll, state.satisfiable_signals); | 147 EXPECT_EQ(kSignalAll, state.satisfiable_signals); |
| 150 | 148 |
| 151 // Close |h0|. | 149 // Close |h0|. |
| 152 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h0)); | 150 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h0)); |
| 153 | 151 |
| 154 // |h1| should no longer be readable or writable. | 152 // |h1| should no longer be readable or writable. |
| 155 EXPECT_EQ( | 153 EXPECT_EQ( |
| 156 MOJO_RESULT_FAILED_PRECONDITION, | 154 MOJO_RESULT_FAILED_PRECONDITION, |
| 157 MojoNewWait(h1, MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 155 MojoWait(h1, MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 158 1000, &state)); | 156 1000, &state)); |
| 159 | 157 |
| 160 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals); | 158 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals); |
| 161 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); | 159 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); |
| 162 | 160 |
| 163 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h1)); | 161 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h1)); |
| 164 } | 162 } |
| 165 | 163 |
| 166 // TODO(ncbray): enable these tests once NaCl supports the corresponding APIs. | 164 // TODO(ncbray): enable these tests once NaCl supports the corresponding APIs. |
| 167 #ifdef __native_client__ | 165 #ifdef __native_client__ |
| 168 #define MAYBE_BasicDataPipe DISABLED_BasicDataPipe | 166 #define MAYBE_BasicDataPipe DISABLED_BasicDataPipe |
| (...skipping 13 matching lines...) Expand all Loading... |
| 182 | 180 |
| 183 hp = MOJO_HANDLE_INVALID; | 181 hp = MOJO_HANDLE_INVALID; |
| 184 hc = MOJO_HANDLE_INVALID; | 182 hc = MOJO_HANDLE_INVALID; |
| 185 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(NULL, &hp, &hc)); | 183 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(NULL, &hp, &hc)); |
| 186 EXPECT_NE(hp, MOJO_HANDLE_INVALID); | 184 EXPECT_NE(hp, MOJO_HANDLE_INVALID); |
| 187 EXPECT_NE(hc, MOJO_HANDLE_INVALID); | 185 EXPECT_NE(hc, MOJO_HANDLE_INVALID); |
| 188 | 186 |
| 189 // The consumer |hc| shouldn't be readable. | 187 // The consumer |hc| shouldn't be readable. |
| 190 MojoHandleSignalsState state; | 188 MojoHandleSignalsState state; |
| 191 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, | 189 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, |
| 192 MojoNewWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0, &state)); | 190 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0, &state)); |
| 193 | 191 |
| 194 EXPECT_EQ(MOJO_HANDLE_SIGNAL_NONE, state.satisfied_signals); | 192 EXPECT_EQ(MOJO_HANDLE_SIGNAL_NONE, state.satisfied_signals); |
| 195 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 193 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 196 state.satisfiable_signals); | 194 state.satisfiable_signals); |
| 197 | 195 |
| 198 // The producer |hp| should be writable. | 196 // The producer |hp| should be writable. |
| 199 EXPECT_EQ(MOJO_RESULT_OK, | 197 EXPECT_EQ(MOJO_RESULT_OK, |
| 200 MojoNewWait(hp, MOJO_HANDLE_SIGNAL_WRITABLE, 0, &state)); | 198 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITABLE, 0, &state)); |
| 201 | 199 |
| 202 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals); | 200 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals); |
| 203 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 201 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 204 state.satisfiable_signals); | 202 state.satisfiable_signals); |
| 205 | 203 |
| 206 // Try to read from |hc|. | 204 // Try to read from |hc|. |
| 207 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 205 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 208 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 206 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
| 209 MojoReadData(hc, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); | 207 MojoReadData(hc, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); |
| 210 | 208 |
| 211 // Try to begin a two-phase read from |hc|. | 209 // Try to begin a two-phase read from |hc|. |
| 212 read_pointer = NULL; | 210 read_pointer = NULL; |
| 213 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 211 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
| 214 MojoBeginReadData(hc, &read_pointer, &buffer_size, | 212 MojoBeginReadData(hc, &read_pointer, &buffer_size, |
| 215 MOJO_READ_DATA_FLAG_NONE)); | 213 MOJO_READ_DATA_FLAG_NONE)); |
| 216 | 214 |
| 217 // Write to |hp|. | 215 // Write to |hp|. |
| 218 static const char kHello[] = "hello "; | 216 static const char kHello[] = "hello "; |
| 219 // Don't include terminating null. | 217 // Don't include terminating null. |
| 220 buffer_size = static_cast<uint32_t>(strlen(kHello)); | 218 buffer_size = static_cast<uint32_t>(strlen(kHello)); |
| 221 EXPECT_EQ(MOJO_RESULT_OK, MojoWriteData(hp, kHello, &buffer_size, | 219 EXPECT_EQ(MOJO_RESULT_OK, MojoWriteData(hp, kHello, &buffer_size, |
| 222 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 220 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 223 | 221 |
| 224 // |hc| should be(come) readable. | 222 // |hc| should be(come) readable. |
| 225 uint32_t result_index = 1; | 223 uint32_t result_index = 1; |
| 226 MojoHandleSignalsState states[1]; | 224 MojoHandleSignalsState states[1]; |
| 227 sig = MOJO_HANDLE_SIGNAL_READABLE; | 225 sig = MOJO_HANDLE_SIGNAL_READABLE; |
| 228 EXPECT_EQ(MOJO_RESULT_OK, | 226 EXPECT_EQ(MOJO_RESULT_OK, MojoWaitMany(&hc, &sig, 1, MOJO_DEADLINE_INDEFINITE, |
| 229 MojoNewWaitMany(&hc, &sig, 1, MOJO_DEADLINE_INDEFINITE, | 227 &result_index, states)); |
| 230 &result_index, states)); | |
| 231 | 228 |
| 232 EXPECT_EQ(0u, result_index); | 229 EXPECT_EQ(0u, result_index); |
| 233 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, states[0].satisfied_signals); | 230 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, states[0].satisfied_signals); |
| 234 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 231 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 235 states[0].satisfiable_signals); | 232 states[0].satisfiable_signals); |
| 236 | 233 |
| 237 // Do a two-phase write to |hp|. | 234 // Do a two-phase write to |hp|. |
| 238 EXPECT_EQ(MOJO_RESULT_OK, MojoBeginWriteData(hp, &write_pointer, &buffer_size, | 235 EXPECT_EQ(MOJO_RESULT_OK, MojoBeginWriteData(hp, &write_pointer, &buffer_size, |
| 239 MOJO_WRITE_DATA_FLAG_NONE)); | 236 MOJO_WRITE_DATA_FLAG_NONE)); |
| 240 static const char kWorld[] = "world"; | 237 static const char kWorld[] = "world"; |
| 241 ASSERT_GE(buffer_size, sizeof(kWorld)); | 238 ASSERT_GE(buffer_size, sizeof(kWorld)); |
| 242 // Include the terminating null. | 239 // Include the terminating null. |
| 243 memcpy(write_pointer, kWorld, sizeof(kWorld)); | 240 memcpy(write_pointer, kWorld, sizeof(kWorld)); |
| 244 EXPECT_EQ(MOJO_RESULT_OK, | 241 EXPECT_EQ(MOJO_RESULT_OK, |
| 245 MojoEndWriteData(hp, static_cast<uint32_t>(sizeof(kWorld)))); | 242 MojoEndWriteData(hp, static_cast<uint32_t>(sizeof(kWorld)))); |
| 246 | 243 |
| 247 // Read one character from |hc|. | 244 // Read one character from |hc|. |
| 248 memset(buffer, 0, sizeof(buffer)); | 245 memset(buffer, 0, sizeof(buffer)); |
| 249 buffer_size = 1; | 246 buffer_size = 1; |
| 250 EXPECT_EQ(MOJO_RESULT_OK, | 247 EXPECT_EQ(MOJO_RESULT_OK, |
| 251 MojoReadData(hc, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); | 248 MojoReadData(hc, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE)); |
| 252 | 249 |
| 253 // Close |hp|. | 250 // Close |hp|. |
| 254 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hp)); | 251 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hp)); |
| 255 | 252 |
| 256 // |hc| should still be readable. | 253 // |hc| should still be readable. |
| 257 EXPECT_EQ(MOJO_RESULT_OK, | 254 EXPECT_EQ(MOJO_RESULT_OK, |
| 258 MojoNewWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0, &state)); | 255 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0, &state)); |
| 259 | 256 |
| 260 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 257 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 261 state.satisfied_signals); | 258 state.satisfied_signals); |
| 262 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 259 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 263 state.satisfiable_signals); | 260 state.satisfiable_signals); |
| 264 | 261 |
| 265 // Do a two-phase read from |hc|. | 262 // Do a two-phase read from |hc|. |
| 266 read_pointer = NULL; | 263 read_pointer = NULL; |
| 267 EXPECT_EQ(MOJO_RESULT_OK, MojoBeginReadData(hc, &read_pointer, &buffer_size, | 264 EXPECT_EQ(MOJO_RESULT_OK, MojoBeginReadData(hc, &read_pointer, &buffer_size, |
| 268 MOJO_READ_DATA_FLAG_NONE)); | 265 MOJO_READ_DATA_FLAG_NONE)); |
| 269 ASSERT_LE(buffer_size, sizeof(buffer) - 1); | 266 ASSERT_LE(buffer_size, sizeof(buffer) - 1); |
| 270 memcpy(&buffer[1], read_pointer, buffer_size); | 267 memcpy(&buffer[1], read_pointer, buffer_size); |
| 271 EXPECT_EQ(MOJO_RESULT_OK, MojoEndReadData(hc, buffer_size)); | 268 EXPECT_EQ(MOJO_RESULT_OK, MojoEndReadData(hc, buffer_size)); |
| 272 EXPECT_STREQ("hello world", buffer); | 269 EXPECT_STREQ("hello world", buffer); |
| 273 | 270 |
| 274 // |hc| should no longer be readable. | 271 // |hc| should no longer be readable. |
| 275 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 272 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
| 276 MojoNewWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 1000, &state)); | 273 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 1000, &state)); |
| 277 | 274 |
| 278 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals); | 275 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals); |
| 279 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); | 276 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); |
| 280 | 277 |
| 281 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hc)); | 278 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hc)); |
| 282 | 279 |
| 283 // TODO(vtl): Test the other way around -- closing the consumer should make | 280 // TODO(vtl): Test the other way around -- closing the consumer should make |
| 284 // the producer never-writable? | 281 // the producer never-writable? |
| 285 } | 282 } |
| 286 | 283 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 // This checks that things actually work in C (not C++). | 333 // This checks that things actually work in C (not C++). |
| 337 TEST(CoreTest, MinimalCTest) { | 334 TEST(CoreTest, MinimalCTest) { |
| 338 const char* failure = MinimalCTest(); | 335 const char* failure = MinimalCTest(); |
| 339 EXPECT_TRUE(failure == NULL) << failure; | 336 EXPECT_TRUE(failure == NULL) << failure; |
| 340 } | 337 } |
| 341 | 338 |
| 342 // TODO(vtl): Add multi-threaded tests. | 339 // TODO(vtl): Add multi-threaded tests. |
| 343 | 340 |
| 344 } // namespace | 341 } // namespace |
| 345 } // namespace mojo | 342 } // namespace mojo |
| OLD | NEW |