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

Unified Diff: mojo/edk/system/core_unittest.cc

Issue 1993983002: EDK: Add Core::GetRights(). (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/edk/system/core_test_base.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « mojo/edk/system/core_test_base.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698