Index: mojo/edk/system/core_unittest.cc |
diff --git a/mojo/edk/system/core_unittest.cc b/mojo/edk/system/core_unittest.cc |
index 1b3c1facdd30e7ec53d1eadb2c53bc68a1d8a6c7..745b5af19d03bef4c1708c7aa354a92c860510e1 100644 |
--- a/mojo/edk/system/core_unittest.cc |
+++ b/mojo/edk/system/core_unittest.cc |
@@ -44,6 +44,10 @@ TEST_F(CoreTest, Basic) { |
EXPECT_EQ(1u, info.GetCtorCallCount()); |
EXPECT_NE(h, MOJO_HANDLE_INVALID); |
+ MojoHandleRights rights = 0; |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(h, MakeUserPointer(&rights))); |
+ EXPECT_EQ(kDefaultMockHandleRights, rights); |
+ |
EXPECT_EQ(0u, info.GetWriteMessageCallCount()); |
EXPECT_EQ(MOJO_RESULT_OK, |
core()->WriteMessage(h, NullUserPointer(), 0, NullUserPointer(), 0, |
@@ -204,6 +208,17 @@ TEST_F(CoreTest, InvalidArguments) { |
EXPECT_EQ(1u, info.GetCloseCallCount()); |
} |
+ // |GetRights()|: |
+ { |
+ MojoHandleRights rights = 0; |
+ EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
+ core()->GetRights(MOJO_HANDLE_INVALID, MakeUserPointer(&rights))); |
+ EXPECT_EQ(0u, rights); |
+ EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
+ core()->GetRights(10, MakeUserPointer(&rights))); |
+ EXPECT_EQ(0u, rights); |
+ } |
+ |
// |Wait()|: |
{ |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
@@ -556,6 +571,16 @@ TEST_F(CoreTest, InvalidArguments) { |
TEST_F(CoreTest, InvalidArgumentsDeath) { |
const char kMemoryCheckFailedRegex[] = "Check failed"; |
+ // |GetRights()|: |
+ { |
+ MockHandleInfo info; |
+ MojoHandle h = CreateMockHandle(&info); |
+ EXPECT_DEATH_IF_SUPPORTED(core()->GetRights(h, NullUserPointer()), |
+ kMemoryCheckFailedRegex); |
+ |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); |
+ } |
+ |
// |WaitMany()|: |
{ |
MojoHandle handle = MOJO_HANDLE_INVALID; |
@@ -632,7 +657,7 @@ TEST_F(CoreTest, InvalidArgumentsDeath) { |
// same/different signals) |
TEST_F(CoreTest, MessagePipe) { |
- MojoHandle h[2]; |
+ MojoHandle h[2] = {MOJO_HANDLE_INVALID, MOJO_HANDLE_INVALID}; |
MojoHandleSignalsState hss[2]; |
uint32_t result_index; |
@@ -644,6 +669,18 @@ TEST_F(CoreTest, MessagePipe) { |
EXPECT_NE(h[1], MOJO_HANDLE_INVALID); |
EXPECT_NE(h[0], h[1]); |
+ // Both should have the correct rights. |
+ static const MojoHandleRights kMessagePipeHandleRights = |
+ MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ | |
+ MOJO_HANDLE_RIGHT_WRITE | MOJO_HANDLE_RIGHT_GET_OPTIONS | |
+ MOJO_HANDLE_RIGHT_SET_OPTIONS; |
+ MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(h[0], MakeUserPointer(&rights))); |
+ EXPECT_EQ(kMessagePipeHandleRights, rights); |
+ rights = MOJO_HANDLE_RIGHT_NONE; |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(h[1], MakeUserPointer(&rights))); |
+ EXPECT_EQ(kMessagePipeHandleRights, rights); |
+ |
// Neither should be readable. |
MojoHandleSignals signals[2] = {MOJO_HANDLE_SIGNAL_READABLE, |
MOJO_HANDLE_SIGNAL_READABLE}; |
@@ -976,7 +1013,9 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
} |
TEST_F(CoreTest, DataPipe) { |
- MojoHandle ph, ch; // p is for producer and c is for consumer. |
+ // p is for producer and c is for consumer. |
+ MojoHandle ph = MOJO_HANDLE_INVALID; |
+ MojoHandle ch = MOJO_HANDLE_INVALID; |
MojoHandleSignalsState hss; |
EXPECT_EQ(MOJO_RESULT_OK, |
@@ -987,6 +1026,20 @@ TEST_F(CoreTest, DataPipe) { |
EXPECT_NE(ch, MOJO_HANDLE_INVALID); |
EXPECT_NE(ph, ch); |
+ // Both should have the correct rights. |
+ static const MojoHandleRights kDataPipeProducerHandleRights = |
+ MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_WRITE | |
+ MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS; |
+ static const MojoHandleRights kDataPipeConsumerHandleRights = |
+ MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ | |
+ MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS; |
+ MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(ph, MakeUserPointer(&rights))); |
+ EXPECT_EQ(kDataPipeProducerHandleRights, rights); |
+ rights = MOJO_HANDLE_RIGHT_NONE; |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(ch, MakeUserPointer(&rights))); |
+ EXPECT_EQ(kDataPipeConsumerHandleRights, rights); |
+ |
// Producer should be never-readable, but already writable. |
hss = kEmptyMojoHandleSignalsState; |
EXPECT_EQ( |
@@ -1681,7 +1734,8 @@ TEST_F(CoreTest, AsyncWait) { |
EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); |
} |
-// TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. |
+// TODO(vtl): Test |CreateSharedBuffer()|, |DuplicateBufferHandle()|, and |
+// |MapBuffer()|. |
} // namespace |
} // namespace system |