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

Side by Side Diff: mojo/edk/system/signals_unittest.cc

Issue 2741033003: Mojo EDK: Introduce MojoQueryHandleSignalsState API (Closed)
Patch Set: fix stupid bad DCHECK Created 3 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/edk/system/multiprocess_message_pipe_unittest.cc ('k') | mojo/edk/test/mojo_test_base.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 2017 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/edk/test/mojo_test_base.h"
6 #include "mojo/public/c/system/buffer.h"
7 #include "mojo/public/c/system/data_pipe.h"
8 #include "mojo/public/c/system/functions.h"
9 #include "mojo/public/c/system/message_pipe.h"
10 #include "mojo/public/c/system/types.h"
11
12 namespace mojo {
13 namespace edk {
14 namespace {
15
16 using SignalsTest = test::MojoTestBase;
17
18 TEST_F(SignalsTest, QueryInvalidArguments) {
19 MojoHandleSignalsState state = {0, 0};
20 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
21 MojoQueryHandleSignalsState(MOJO_HANDLE_INVALID, &state));
22
23 MojoHandle a, b;
24 CreateMessagePipe(&a, &b);
25 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
26 MojoQueryHandleSignalsState(a, nullptr));
27 }
28
29 TEST_F(SignalsTest, QueryMessagePipeSignals) {
30 MojoHandleSignalsState state = {0, 0};
31
32 MojoHandle a, b;
33 CreateMessagePipe(&a, &b);
34
35 EXPECT_EQ(MOJO_RESULT_OK, MojoQueryHandleSignalsState(a, &state));
36 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals);
37 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
38 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
39 state.satisfiable_signals);
40
41 EXPECT_EQ(MOJO_RESULT_OK, MojoQueryHandleSignalsState(b, &state));
42 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals);
43 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
44 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
45 state.satisfiable_signals);
46
47 WriteMessage(a, "ok");
48 EXPECT_EQ(MOJO_RESULT_OK, WaitForSignals(b, MOJO_HANDLE_SIGNAL_READABLE));
49
50 EXPECT_EQ(MOJO_RESULT_OK, MojoQueryHandleSignalsState(b, &state));
51 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
52 state.satisfied_signals);
53 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
54 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
55 state.satisfiable_signals);
56
57 EXPECT_EQ("ok", ReadMessage(b));
58
59 EXPECT_EQ(MOJO_RESULT_OK, MojoQueryHandleSignalsState(b, &state));
60 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals);
61 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
62 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
63 state.satisfiable_signals);
64
65 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(a));
66
67 EXPECT_EQ(MOJO_RESULT_OK, WaitForSignals(b, MOJO_HANDLE_SIGNAL_PEER_CLOSED));
68
69 EXPECT_EQ(MOJO_RESULT_OK, MojoQueryHandleSignalsState(b, &state));
70 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals);
71 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals);
72 }
73
74 } // namespace
75 } // namespace edk
76 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/system/multiprocess_message_pipe_unittest.cc ('k') | mojo/edk/test/mojo_test_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698