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

Side by Side Diff: mojo/public/c/system/tests/core_unittest.cc

Issue 1993283002: Add thunks for MojoGetRights(), etc. (Closed) Base URL: https://github.com/domokit/mojo.git@work795_core_get_rights
Patch Set: I'm an idiot Created 4 years, 7 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
OLDNEW
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 <string.h> 7 #include <string.h>
8 8
9 #include "mojo/public/c/system/buffer.h" 9 #include "mojo/public/c/system/buffer.h"
10 #include "mojo/public/c/system/data_pipe.h" 10 #include "mojo/public/c/system/data_pipe.h"
11 #include "mojo/public/c/system/handle.h" 11 #include "mojo/public/c/system/handle.h"
12 #include "mojo/public/c/system/message_pipe.h" 12 #include "mojo/public/c/system/message_pipe.h"
13 #include "mojo/public/c/system/result.h" 13 #include "mojo/public/c/system/result.h"
14 #include "mojo/public/c/system/time.h" 14 #include "mojo/public/c/system/time.h"
15 #include "mojo/public/c/system/wait.h" 15 #include "mojo/public/c/system/wait.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 // Defined in core_unittest_pure_c.c. 18 // Defined in core_unittest_pure_c.c.
19 extern "C" const char* MinimalCTest(void); 19 extern "C" const char* MinimalCTest(void);
20 20
21 // Defined in core_unittest_pure_cpp.cc. 21 // Defined in core_unittest_pure_cpp.cc.
22 const char* MinimalCppTest(); 22 const char* MinimalCppTest();
23 23
24 namespace mojo { 24 namespace mojo {
25 namespace { 25 namespace {
26 26
27 const MojoHandleRights kDefaultMessagePipeHandleRights =
28 MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ |
29 MOJO_HANDLE_RIGHT_WRITE | MOJO_HANDLE_RIGHT_GET_OPTIONS |
30 MOJO_HANDLE_RIGHT_SET_OPTIONS;
31 const MojoHandleRights kDefaultDataPipeProducerHandleRights =
32 MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_WRITE |
33 MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS;
34 const MojoHandleRights kDefaultDataPipeConsumerHandleRights =
35 MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ |
36 MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS;
37 const MojoHandleRights kDefaultSharedBufferHandleRights =
38 MOJO_HANDLE_RIGHT_DUPLICATE | MOJO_HANDLE_RIGHT_TRANSFER |
39 MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS |
40 MOJO_HANDLE_RIGHT_MAP_READABLE | MOJO_HANDLE_RIGHT_MAP_WRITABLE |
41 MOJO_HANDLE_RIGHT_MAP_EXECUTABLE;
42
27 TEST(CoreTest, GetTimeTicksNow) { 43 TEST(CoreTest, GetTimeTicksNow) {
28 const MojoTimeTicks start = MojoGetTimeTicksNow(); 44 const MojoTimeTicks start = MojoGetTimeTicksNow();
29 EXPECT_NE(static_cast<MojoTimeTicks>(0), start) 45 EXPECT_NE(static_cast<MojoTimeTicks>(0), start)
30 << "MojoGetTimeTicksNow should return nonzero value"; 46 << "MojoGetTimeTicksNow should return nonzero value";
31 } 47 }
32 48
33 // The only handle that's guaranteed to be invalid is |MOJO_HANDLE_INVALID|. 49 // The only handle that's guaranteed to be invalid is |MOJO_HANDLE_INVALID|.
34 // Tests that everything that takes a handle properly recognizes it. 50 // Tests that everything that takes a handle properly recognizes it.
35 TEST(CoreTest, InvalidHandle) { 51 TEST(CoreTest, InvalidHandle) {
36 MojoHandleSignals sig; 52 MojoHandleSignals sig;
37 char buffer[10] = {0}; 53 char buffer[10] = {0};
38 uint32_t buffer_size; 54 uint32_t buffer_size;
39 void* write_pointer; 55 void* write_pointer;
40 const void* read_pointer; 56 const void* read_pointer;
41 57
42 // Close: 58 // Close:
43 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(MOJO_HANDLE_INVALID)); 59 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(MOJO_HANDLE_INVALID));
44 60
61 // GetRights:
62 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE;
63 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
64 MojoGetRights(MOJO_HANDLE_INVALID, &rights));
65
45 // Wait: 66 // Wait:
46 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 67 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
47 MojoWait(MOJO_HANDLE_INVALID, ~MOJO_HANDLE_SIGNAL_NONE, 1000000u, 68 MojoWait(MOJO_HANDLE_INVALID, ~MOJO_HANDLE_SIGNAL_NONE, 1000000u,
48 nullptr)); 69 nullptr));
49 70
50 const MojoHandle h = MOJO_HANDLE_INVALID; 71 const MojoHandle h = MOJO_HANDLE_INVALID;
51 sig = ~MOJO_HANDLE_SIGNAL_NONE; 72 sig = ~MOJO_HANDLE_SIGNAL_NONE;
52 EXPECT_EQ( 73 EXPECT_EQ(
53 MOJO_RESULT_INVALID_ARGUMENT, 74 MOJO_RESULT_INVALID_ARGUMENT,
54 MojoWaitMany(&h, &sig, 1u, MOJO_DEADLINE_INDEFINITE, nullptr, nullptr)); 75 MojoWaitMany(&h, &sig, 1u, MOJO_DEADLINE_INDEFINITE, nullptr, nullptr));
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 MojoHandle h0, h1; 143 MojoHandle h0, h1;
123 MojoHandleSignals sig; 144 MojoHandleSignals sig;
124 char buffer[10] = {0}; 145 char buffer[10] = {0};
125 uint32_t buffer_size; 146 uint32_t buffer_size;
126 147
127 h0 = MOJO_HANDLE_INVALID; 148 h0 = MOJO_HANDLE_INVALID;
128 h1 = MOJO_HANDLE_INVALID; 149 h1 = MOJO_HANDLE_INVALID;
129 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(nullptr, &h0, &h1)); 150 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(nullptr, &h0, &h1));
130 EXPECT_NE(h0, MOJO_HANDLE_INVALID); 151 EXPECT_NE(h0, MOJO_HANDLE_INVALID);
131 EXPECT_NE(h1, MOJO_HANDLE_INVALID); 152 EXPECT_NE(h1, MOJO_HANDLE_INVALID);
153 EXPECT_NE(h0, h1);
154
155 // Both handles should have the correct rights.
156 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE;
157 EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(h0, &rights));
158 EXPECT_EQ(kDefaultMessagePipeHandleRights, rights);
159 rights = MOJO_HANDLE_RIGHT_NONE;
160 EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(h1, &rights));
161 EXPECT_EQ(kDefaultMessagePipeHandleRights, rights);
132 162
133 // Shouldn't be readable, we haven't written anything. 163 // Shouldn't be readable, we haven't written anything.
134 MojoHandleSignalsState state; 164 MojoHandleSignalsState state;
135 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, 165 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
136 MojoWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 0, &state)); 166 MojoWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 0, &state));
137 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals); 167 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals);
138 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 168 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
139 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 169 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
140 state.satisfiable_signals); 170 state.satisfiable_signals);
141 171
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 char buffer[20] = {0}; 248 char buffer[20] = {0};
219 uint32_t buffer_size; 249 uint32_t buffer_size;
220 void* write_pointer; 250 void* write_pointer;
221 const void* read_pointer; 251 const void* read_pointer;
222 252
223 hp = MOJO_HANDLE_INVALID; 253 hp = MOJO_HANDLE_INVALID;
224 hc = MOJO_HANDLE_INVALID; 254 hc = MOJO_HANDLE_INVALID;
225 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(nullptr, &hp, &hc)); 255 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(nullptr, &hp, &hc));
226 EXPECT_NE(hp, MOJO_HANDLE_INVALID); 256 EXPECT_NE(hp, MOJO_HANDLE_INVALID);
227 EXPECT_NE(hc, MOJO_HANDLE_INVALID); 257 EXPECT_NE(hc, MOJO_HANDLE_INVALID);
258 EXPECT_NE(hp, hc);
259
260 // Both handles should have the correct rights.
261 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE;
262 EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(hp, &rights));
263 EXPECT_EQ(kDefaultDataPipeProducerHandleRights, rights);
264 rights = MOJO_HANDLE_RIGHT_NONE;
265 EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(hc, &rights));
266 EXPECT_EQ(kDefaultDataPipeConsumerHandleRights, rights);
228 267
229 // The consumer |hc| shouldn't be readable. 268 // The consumer |hc| shouldn't be readable.
230 MojoHandleSignalsState state; 269 MojoHandleSignalsState state;
231 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, 270 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
232 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0, &state)); 271 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0, &state));
233 EXPECT_EQ(MOJO_HANDLE_SIGNAL_NONE, state.satisfied_signals); 272 EXPECT_EQ(MOJO_HANDLE_SIGNAL_NONE, state.satisfied_signals);
234 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | 273 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
235 MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 274 MOJO_HANDLE_SIGNAL_READ_THRESHOLD,
236 state.satisfiable_signals); 275 state.satisfiable_signals);
237 276
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 #endif 615 #endif
577 TEST(CoreTest, MAYBE_BasicSharedBuffer) { 616 TEST(CoreTest, MAYBE_BasicSharedBuffer) {
578 MojoHandle h0, h1; 617 MojoHandle h0, h1;
579 void* pointer; 618 void* pointer;
580 619
581 // Create a shared buffer (|h0|). 620 // Create a shared buffer (|h0|).
582 h0 = MOJO_HANDLE_INVALID; 621 h0 = MOJO_HANDLE_INVALID;
583 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateSharedBuffer(nullptr, 100, &h0)); 622 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateSharedBuffer(nullptr, 100, &h0));
584 EXPECT_NE(h0, MOJO_HANDLE_INVALID); 623 EXPECT_NE(h0, MOJO_HANDLE_INVALID);
585 624
625 // The handle should have the correct rights.
626 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE;
627 EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(h0, &rights));
628 EXPECT_EQ(kDefaultSharedBufferHandleRights, rights);
629
586 // Check information about the buffer from |h0|. 630 // Check information about the buffer from |h0|.
587 MojoBufferInformation info = {}; 631 MojoBufferInformation info = {};
588 static const uint32_t kInfoSize = static_cast<uint32_t>(sizeof(info)); 632 static const uint32_t kInfoSize = static_cast<uint32_t>(sizeof(info));
589 EXPECT_EQ(MOJO_RESULT_OK, MojoGetBufferInformation(h0, &info, kInfoSize)); 633 EXPECT_EQ(MOJO_RESULT_OK, MojoGetBufferInformation(h0, &info, kInfoSize));
590 EXPECT_EQ(kInfoSize, info.struct_size); 634 EXPECT_EQ(kInfoSize, info.struct_size);
591 EXPECT_EQ(MOJO_BUFFER_INFORMATION_FLAG_NONE, info.flags); 635 EXPECT_EQ(MOJO_BUFFER_INFORMATION_FLAG_NONE, info.flags);
592 EXPECT_EQ(100u, info.num_bytes); 636 EXPECT_EQ(100u, info.num_bytes);
593 637
594 // Map everything. 638 // Map everything.
595 pointer = nullptr; 639 pointer = nullptr;
596 EXPECT_EQ(MOJO_RESULT_OK, 640 EXPECT_EQ(MOJO_RESULT_OK,
597 MojoMapBuffer(h0, 0, 100, &pointer, MOJO_MAP_BUFFER_FLAG_NONE)); 641 MojoMapBuffer(h0, 0, 100, &pointer, MOJO_MAP_BUFFER_FLAG_NONE));
598 ASSERT_TRUE(pointer); 642 ASSERT_TRUE(pointer);
599 static_cast<char*>(pointer)[50] = 'x'; 643 static_cast<char*>(pointer)[50] = 'x';
600 644
601 // Duplicate |h0| to |h1|. 645 // Duplicate |h0| to |h1|.
602 h1 = MOJO_HANDLE_INVALID; 646 h1 = MOJO_HANDLE_INVALID;
603 EXPECT_EQ(MOJO_RESULT_OK, MojoDuplicateBufferHandle(h0, nullptr, &h1)); 647 EXPECT_EQ(MOJO_RESULT_OK, MojoDuplicateBufferHandle(h0, nullptr, &h1));
604 EXPECT_NE(h1, MOJO_HANDLE_INVALID); 648 EXPECT_NE(h1, MOJO_HANDLE_INVALID);
605 649
650 // The new handle should have the correct rights.
651 rights = MOJO_HANDLE_RIGHT_NONE;
652 EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(h1, &rights));
653 EXPECT_EQ(kDefaultSharedBufferHandleRights, rights);
654
606 // Check information about the buffer from |h1|. 655 // Check information about the buffer from |h1|.
607 info = MojoBufferInformation(); 656 info = MojoBufferInformation();
608 EXPECT_EQ(MOJO_RESULT_OK, MojoGetBufferInformation(h1, &info, kInfoSize)); 657 EXPECT_EQ(MOJO_RESULT_OK, MojoGetBufferInformation(h1, &info, kInfoSize));
609 EXPECT_EQ(kInfoSize, info.struct_size); 658 EXPECT_EQ(kInfoSize, info.struct_size);
610 EXPECT_EQ(MOJO_BUFFER_INFORMATION_FLAG_NONE, info.flags); 659 EXPECT_EQ(MOJO_BUFFER_INFORMATION_FLAG_NONE, info.flags);
611 EXPECT_EQ(100u, info.num_bytes); 660 EXPECT_EQ(100u, info.num_bytes);
612 661
613 // Close |h0|. 662 // Close |h0|.
614 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h0)); 663 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h0));
615 664
(...skipping 27 matching lines...) Expand all
643 692
644 TEST(CoreTest, MinimalCppTest) { 693 TEST(CoreTest, MinimalCppTest) {
645 const char* failure = MinimalCppTest(); 694 const char* failure = MinimalCppTest();
646 EXPECT_FALSE(failure) << failure; 695 EXPECT_FALSE(failure) << failure;
647 } 696 }
648 697
649 // TODO(vtl): Add multi-threaded tests. 698 // TODO(vtl): Add multi-threaded tests.
650 699
651 } // namespace 700 } // namespace
652 } // namespace mojo 701 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/nacl/sfi/nacl_bindings_generator/interface.py ('k') | mojo/public/platform/nacl/libmojo.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698