| 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 1066 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1077 EXPECT_EQ(2u, num_bytes); | 1077 EXPECT_EQ(2u, num_bytes); |
| 1078 | 1078 |
| 1079 // Consumer should now be readable. | 1079 // Consumer should now be readable. |
| 1080 hss = kEmptyMojoHandleSignalsState; | 1080 hss = kEmptyMojoHandleSignalsState; |
| 1081 EXPECT_EQ( | 1081 EXPECT_EQ( |
| 1082 MOJO_RESULT_OK, | 1082 MOJO_RESULT_OK, |
| 1083 core()->Wait(ch, MOJO_HANDLE_SIGNAL_READABLE, 0, MakeUserPointer(&hss))); | 1083 core()->Wait(ch, MOJO_HANDLE_SIGNAL_READABLE, 0, MakeUserPointer(&hss))); |
| 1084 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals); | 1084 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals); |
| 1085 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals); | 1085 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals); |
| 1086 | 1086 |
| 1087 // Peek one character. |
| 1088 elements[0] = -1; |
| 1089 elements[1] = -1; |
| 1090 num_bytes = 1u; |
| 1091 EXPECT_EQ(MOJO_RESULT_OK, |
| 1092 core()->ReadData( |
| 1093 ch, |
| 1094 UserPointer<void>(elements), |
| 1095 MakeUserPointer(&num_bytes), |
| 1096 MOJO_READ_DATA_FLAG_NONE | MOJO_READ_DATA_FLAG_PEEK)); |
| 1097 EXPECT_EQ('A', elements[0]); |
| 1098 EXPECT_EQ(-1, elements[1]); |
| 1099 |
| 1087 // Read one character. | 1100 // Read one character. |
| 1088 elements[0] = -1; | 1101 elements[0] = -1; |
| 1089 elements[1] = -1; | 1102 elements[1] = -1; |
| 1090 num_bytes = 1u; | 1103 num_bytes = 1u; |
| 1091 EXPECT_EQ(MOJO_RESULT_OK, | 1104 EXPECT_EQ(MOJO_RESULT_OK, |
| 1092 core()->ReadData(ch, | 1105 core()->ReadData(ch, |
| 1093 UserPointer<void>(elements), | 1106 UserPointer<void>(elements), |
| 1094 MakeUserPointer(&num_bytes), | 1107 MakeUserPointer(&num_bytes), |
| 1095 MOJO_READ_DATA_FLAG_NONE)); | 1108 MOJO_READ_DATA_FLAG_NONE)); |
| 1096 EXPECT_EQ('A', elements[0]); | 1109 EXPECT_EQ('A', elements[0]); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1124 | 1137 |
| 1125 // Query how much data we have. | 1138 // Query how much data we have. |
| 1126 num_bytes = 0; | 1139 num_bytes = 0; |
| 1127 EXPECT_EQ(MOJO_RESULT_OK, | 1140 EXPECT_EQ(MOJO_RESULT_OK, |
| 1128 core()->ReadData(ch, | 1141 core()->ReadData(ch, |
| 1129 NullUserPointer(), | 1142 NullUserPointer(), |
| 1130 MakeUserPointer(&num_bytes), | 1143 MakeUserPointer(&num_bytes), |
| 1131 MOJO_READ_DATA_FLAG_QUERY)); | 1144 MOJO_READ_DATA_FLAG_QUERY)); |
| 1132 EXPECT_EQ(4u, num_bytes); | 1145 EXPECT_EQ(4u, num_bytes); |
| 1133 | 1146 |
| 1147 // Try to query with peek. Should fail. |
| 1148 num_bytes = 0; |
| 1149 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 1150 core()->ReadData( |
| 1151 ch, |
| 1152 NullUserPointer(), |
| 1153 MakeUserPointer(&num_bytes), |
| 1154 MOJO_READ_DATA_FLAG_QUERY | MOJO_READ_DATA_FLAG_PEEK)); |
| 1155 EXPECT_EQ(0u, num_bytes); |
| 1156 |
| 1134 // Try to discard ten characters, in all-or-none mode. Should fail. | 1157 // Try to discard ten characters, in all-or-none mode. Should fail. |
| 1135 num_bytes = 10; | 1158 num_bytes = 10; |
| 1136 EXPECT_EQ(MOJO_RESULT_OUT_OF_RANGE, | 1159 EXPECT_EQ(MOJO_RESULT_OUT_OF_RANGE, |
| 1137 core()->ReadData( | 1160 core()->ReadData( |
| 1138 ch, | 1161 ch, |
| 1139 NullUserPointer(), | 1162 NullUserPointer(), |
| 1140 MakeUserPointer(&num_bytes), | 1163 MakeUserPointer(&num_bytes), |
| 1141 MOJO_READ_DATA_FLAG_DISCARD | MOJO_READ_DATA_FLAG_ALL_OR_NONE)); | 1164 MOJO_READ_DATA_FLAG_DISCARD | MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
| 1142 | 1165 |
| 1166 // Try to discard two characters, in peek mode. Should fail. |
| 1167 num_bytes = 2; |
| 1168 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 1169 core()->ReadData( |
| 1170 ch, |
| 1171 NullUserPointer(), |
| 1172 MakeUserPointer(&num_bytes), |
| 1173 MOJO_READ_DATA_FLAG_DISCARD | MOJO_READ_DATA_FLAG_PEEK)); |
| 1174 |
| 1143 // Discard two characters. | 1175 // Discard two characters. |
| 1144 num_bytes = 2; | 1176 num_bytes = 2; |
| 1145 EXPECT_EQ(MOJO_RESULT_OK, | 1177 EXPECT_EQ(MOJO_RESULT_OK, |
| 1146 core()->ReadData( | 1178 core()->ReadData( |
| 1147 ch, | 1179 ch, |
| 1148 NullUserPointer(), | 1180 NullUserPointer(), |
| 1149 MakeUserPointer(&num_bytes), | 1181 MakeUserPointer(&num_bytes), |
| 1150 MOJO_READ_DATA_FLAG_DISCARD | MOJO_READ_DATA_FLAG_ALL_OR_NONE)); | 1182 MOJO_READ_DATA_FLAG_DISCARD | MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
| 1151 | 1183 |
| 1184 // Try a two-phase read of the remaining two bytes with peek. Should fail. |
| 1185 const void* read_ptr = nullptr; |
| 1186 num_bytes = 2; |
| 1187 ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 1188 core()->BeginReadData(ch, |
| 1189 MakeUserPointer(&read_ptr), |
| 1190 MakeUserPointer(&num_bytes), |
| 1191 MOJO_READ_DATA_FLAG_PEEK)); |
| 1192 |
| 1152 // Read the remaining two characters, in two-phase mode (all-or-none). | 1193 // Read the remaining two characters, in two-phase mode (all-or-none). |
| 1153 const void* read_ptr = nullptr; | |
| 1154 num_bytes = 2; | 1194 num_bytes = 2; |
| 1155 ASSERT_EQ(MOJO_RESULT_OK, | 1195 ASSERT_EQ(MOJO_RESULT_OK, |
| 1156 core()->BeginReadData(ch, | 1196 core()->BeginReadData(ch, |
| 1157 MakeUserPointer(&read_ptr), | 1197 MakeUserPointer(&read_ptr), |
| 1158 MakeUserPointer(&num_bytes), | 1198 MakeUserPointer(&num_bytes), |
| 1159 MOJO_READ_DATA_FLAG_ALL_OR_NONE)); | 1199 MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
| 1160 // Note: Count on still being able to do the contiguous read here. | 1200 // Note: Count on still being able to do the contiguous read here. |
| 1161 ASSERT_EQ(2u, num_bytes); | 1201 ASSERT_EQ(2u, num_bytes); |
| 1162 | 1202 |
| 1163 // Discarding right now should fail. | 1203 // Discarding right now should fail. |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1477 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1])); | 1517 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1])); |
| 1478 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph)); | 1518 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph)); |
| 1479 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch)); | 1519 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch)); |
| 1480 } | 1520 } |
| 1481 | 1521 |
| 1482 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. | 1522 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. |
| 1483 | 1523 |
| 1484 } // namespace | 1524 } // namespace |
| 1485 } // namespace system | 1525 } // namespace system |
| 1486 } // namespace mojo | 1526 } // namespace mojo |
| OLD | NEW |