| 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 #include "mojo/edk/system/core.h" | 5 #include "mojo/edk/system/core.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 | 10 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 EXPECT_EQ(0u, info.GetBeginReadDataCallCount()); | 88 EXPECT_EQ(0u, info.GetBeginReadDataCallCount()); |
| 89 EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED, | 89 EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED, |
| 90 core()->BeginReadData(h, NullUserPointer(), NullUserPointer(), | 90 core()->BeginReadData(h, NullUserPointer(), NullUserPointer(), |
| 91 MOJO_READ_DATA_FLAG_NONE)); | 91 MOJO_READ_DATA_FLAG_NONE)); |
| 92 EXPECT_EQ(1u, info.GetBeginReadDataCallCount()); | 92 EXPECT_EQ(1u, info.GetBeginReadDataCallCount()); |
| 93 | 93 |
| 94 EXPECT_EQ(0u, info.GetEndReadDataCallCount()); | 94 EXPECT_EQ(0u, info.GetEndReadDataCallCount()); |
| 95 EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED, core()->EndReadData(h, 0)); | 95 EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED, core()->EndReadData(h, 0)); |
| 96 EXPECT_EQ(1u, info.GetEndReadDataCallCount()); | 96 EXPECT_EQ(1u, info.GetEndReadDataCallCount()); |
| 97 | 97 |
| 98 EXPECT_EQ(0u, info.GetAddWaiterCallCount()); | 98 EXPECT_EQ(0u, info.GetAddAwakableCallCount()); |
| 99 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 99 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
| 100 core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, MOJO_DEADLINE_INDEFINITE, | 100 core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, MOJO_DEADLINE_INDEFINITE, |
| 101 NullUserPointer())); | 101 NullUserPointer())); |
| 102 EXPECT_EQ(1u, info.GetAddWaiterCallCount()); | 102 EXPECT_EQ(1u, info.GetAddAwakableCallCount()); |
| 103 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 103 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
| 104 core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, 0, NullUserPointer())); | 104 core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, 0, NullUserPointer())); |
| 105 EXPECT_EQ(2u, info.GetAddWaiterCallCount()); | 105 EXPECT_EQ(2u, info.GetAddAwakableCallCount()); |
| 106 MojoHandleSignalsState hss = kFullMojoHandleSignalsState; | 106 MojoHandleSignalsState hss = kFullMojoHandleSignalsState; |
| 107 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 107 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
| 108 core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, MOJO_DEADLINE_INDEFINITE, | 108 core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, MOJO_DEADLINE_INDEFINITE, |
| 109 MakeUserPointer(&hss))); | 109 MakeUserPointer(&hss))); |
| 110 EXPECT_EQ(3u, info.GetAddWaiterCallCount()); | 110 EXPECT_EQ(3u, info.GetAddAwakableCallCount()); |
| 111 EXPECT_EQ(0u, hss.satisfied_signals); | 111 EXPECT_EQ(0u, hss.satisfied_signals); |
| 112 EXPECT_EQ(0u, hss.satisfiable_signals); | 112 EXPECT_EQ(0u, hss.satisfiable_signals); |
| 113 EXPECT_EQ( | 113 EXPECT_EQ( |
| 114 MOJO_RESULT_FAILED_PRECONDITION, | 114 MOJO_RESULT_FAILED_PRECONDITION, |
| 115 core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, 10 * 1000, NullUserPointer())); | 115 core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, 10 * 1000, NullUserPointer())); |
| 116 EXPECT_EQ(4u, info.GetAddWaiterCallCount()); | 116 EXPECT_EQ(4u, info.GetAddAwakableCallCount()); |
| 117 hss = kFullMojoHandleSignalsState; | 117 hss = kFullMojoHandleSignalsState; |
| 118 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 118 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
| 119 core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, 10 * 1000, | 119 core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, 10 * 1000, |
| 120 MakeUserPointer(&hss))); | 120 MakeUserPointer(&hss))); |
| 121 EXPECT_EQ(5u, info.GetAddWaiterCallCount()); | 121 EXPECT_EQ(5u, info.GetAddAwakableCallCount()); |
| 122 EXPECT_EQ(0u, hss.satisfied_signals); | 122 EXPECT_EQ(0u, hss.satisfied_signals); |
| 123 EXPECT_EQ(0u, hss.satisfiable_signals); | 123 EXPECT_EQ(0u, hss.satisfiable_signals); |
| 124 | 124 |
| 125 MojoHandleSignals handle_signals = ~MOJO_HANDLE_SIGNAL_NONE; | 125 MojoHandleSignals handle_signals = ~MOJO_HANDLE_SIGNAL_NONE; |
| 126 EXPECT_EQ( | 126 EXPECT_EQ( |
| 127 MOJO_RESULT_FAILED_PRECONDITION, | 127 MOJO_RESULT_FAILED_PRECONDITION, |
| 128 core()->WaitMany(MakeUserPointer(&h), MakeUserPointer(&handle_signals), 1, | 128 core()->WaitMany(MakeUserPointer(&h), MakeUserPointer(&handle_signals), 1, |
| 129 MOJO_DEADLINE_INDEFINITE, NullUserPointer(), | 129 MOJO_DEADLINE_INDEFINITE, NullUserPointer(), |
| 130 NullUserPointer())); | 130 NullUserPointer())); |
| 131 EXPECT_EQ(6u, info.GetAddWaiterCallCount()); | 131 EXPECT_EQ(6u, info.GetAddAwakableCallCount()); |
| 132 uint32_t result_index = static_cast<uint32_t>(-1); | 132 uint32_t result_index = static_cast<uint32_t>(-1); |
| 133 EXPECT_EQ( | 133 EXPECT_EQ( |
| 134 MOJO_RESULT_FAILED_PRECONDITION, | 134 MOJO_RESULT_FAILED_PRECONDITION, |
| 135 core()->WaitMany(MakeUserPointer(&h), MakeUserPointer(&handle_signals), 1, | 135 core()->WaitMany(MakeUserPointer(&h), MakeUserPointer(&handle_signals), 1, |
| 136 MOJO_DEADLINE_INDEFINITE, MakeUserPointer(&result_index), | 136 MOJO_DEADLINE_INDEFINITE, MakeUserPointer(&result_index), |
| 137 NullUserPointer())); | 137 NullUserPointer())); |
| 138 EXPECT_EQ(7u, info.GetAddWaiterCallCount()); | 138 EXPECT_EQ(7u, info.GetAddAwakableCallCount()); |
| 139 EXPECT_EQ(0u, result_index); | 139 EXPECT_EQ(0u, result_index); |
| 140 hss = kFullMojoHandleSignalsState; | 140 hss = kFullMojoHandleSignalsState; |
| 141 EXPECT_EQ( | 141 EXPECT_EQ( |
| 142 MOJO_RESULT_FAILED_PRECONDITION, | 142 MOJO_RESULT_FAILED_PRECONDITION, |
| 143 core()->WaitMany(MakeUserPointer(&h), MakeUserPointer(&handle_signals), 1, | 143 core()->WaitMany(MakeUserPointer(&h), MakeUserPointer(&handle_signals), 1, |
| 144 MOJO_DEADLINE_INDEFINITE, NullUserPointer(), | 144 MOJO_DEADLINE_INDEFINITE, NullUserPointer(), |
| 145 MakeUserPointer(&hss))); | 145 MakeUserPointer(&hss))); |
| 146 EXPECT_EQ(8u, info.GetAddWaiterCallCount()); | 146 EXPECT_EQ(8u, info.GetAddAwakableCallCount()); |
| 147 EXPECT_EQ(0u, hss.satisfied_signals); | 147 EXPECT_EQ(0u, hss.satisfied_signals); |
| 148 EXPECT_EQ(0u, hss.satisfiable_signals); | 148 EXPECT_EQ(0u, hss.satisfiable_signals); |
| 149 result_index = static_cast<uint32_t>(-1); | 149 result_index = static_cast<uint32_t>(-1); |
| 150 hss = kFullMojoHandleSignalsState; | 150 hss = kFullMojoHandleSignalsState; |
| 151 EXPECT_EQ( | 151 EXPECT_EQ( |
| 152 MOJO_RESULT_FAILED_PRECONDITION, | 152 MOJO_RESULT_FAILED_PRECONDITION, |
| 153 core()->WaitMany(MakeUserPointer(&h), MakeUserPointer(&handle_signals), 1, | 153 core()->WaitMany(MakeUserPointer(&h), MakeUserPointer(&handle_signals), 1, |
| 154 MOJO_DEADLINE_INDEFINITE, MakeUserPointer(&result_index), | 154 MOJO_DEADLINE_INDEFINITE, MakeUserPointer(&result_index), |
| 155 MakeUserPointer(&hss))); | 155 MakeUserPointer(&hss))); |
| 156 EXPECT_EQ(9u, info.GetAddWaiterCallCount()); | 156 EXPECT_EQ(9u, info.GetAddAwakableCallCount()); |
| 157 EXPECT_EQ(0u, result_index); | 157 EXPECT_EQ(0u, result_index); |
| 158 EXPECT_EQ(0u, hss.satisfied_signals); | 158 EXPECT_EQ(0u, hss.satisfied_signals); |
| 159 EXPECT_EQ(0u, hss.satisfiable_signals); | 159 EXPECT_EQ(0u, hss.satisfiable_signals); |
| 160 | 160 |
| 161 EXPECT_EQ(0u, info.GetDtorCallCount()); | 161 EXPECT_EQ(0u, info.GetDtorCallCount()); |
| 162 EXPECT_EQ(0u, info.GetCloseCallCount()); | 162 EXPECT_EQ(0u, info.GetCloseCallCount()); |
| 163 EXPECT_EQ(0u, info.GetCancelAllWaitersCallCount()); | 163 EXPECT_EQ(0u, info.GetCancelAllAwakablesCallCount()); |
| 164 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); | 164 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); |
| 165 EXPECT_EQ(1u, info.GetCancelAllWaitersCallCount()); | 165 EXPECT_EQ(1u, info.GetCancelAllAwakablesCallCount()); |
| 166 EXPECT_EQ(1u, info.GetCloseCallCount()); | 166 EXPECT_EQ(1u, info.GetCloseCallCount()); |
| 167 EXPECT_EQ(1u, info.GetDtorCallCount()); | 167 EXPECT_EQ(1u, info.GetDtorCallCount()); |
| 168 | 168 |
| 169 // No waiters should ever have ever been added. | 169 // No awakables should ever have ever been added. |
| 170 EXPECT_EQ(0u, info.GetRemoveWaiterCallCount()); | 170 EXPECT_EQ(0u, info.GetRemoveAwakableCallCount()); |
| 171 } | 171 } |
| 172 | 172 |
| 173 TEST_F(CoreTest, InvalidArguments) { | 173 TEST_F(CoreTest, InvalidArguments) { |
| 174 // |Close()|: | 174 // |Close()|: |
| 175 { | 175 { |
| 176 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(MOJO_HANDLE_INVALID)); | 176 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(MOJO_HANDLE_INVALID)); |
| 177 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(10)); | 177 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(10)); |
| 178 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(1000000000)); | 178 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(1000000000)); |
| 179 | 179 |
| 180 // Test a double-close. | 180 // Test a double-close. |
| (...skipping 1093 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1274 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1])); | 1274 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1])); |
| 1275 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph)); | 1275 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph)); |
| 1276 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch)); | 1276 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch)); |
| 1277 } | 1277 } |
| 1278 | 1278 |
| 1279 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. | 1279 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. |
| 1280 | 1280 |
| 1281 } // namespace | 1281 } // namespace |
| 1282 } // namespace system | 1282 } // namespace system |
| 1283 } // namespace mojo | 1283 } // namespace mojo |
| OLD | NEW |