OLD | NEW |
1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
12 // See the License for the specific language governing permissions and | 12 // See the License for the specific language governing permissions and |
13 // limitations under the License. | 13 // limitations under the License. |
14 | 14 |
15 #include "util/mach/mach_extensions.h" | 15 #include "util/mach/mach_extensions.h" |
16 | 16 |
17 #include "base/mac/scoped_mach_port.h" | 17 #include "base/mac/scoped_mach_port.h" |
18 #include "gtest/gtest.h" | 18 #include "gtest/gtest.h" |
| 19 #include "util/test/mac/mach_errors.h" |
19 | 20 |
20 namespace crashpad { | 21 namespace crashpad { |
21 namespace test { | 22 namespace test { |
22 namespace { | 23 namespace { |
23 | 24 |
24 TEST(MachExtensions, MachThreadSelf) { | 25 TEST(MachExtensions, MachThreadSelf) { |
25 base::mac::ScopedMachSendRight thread_self(mach_thread_self()); | 26 base::mac::ScopedMachSendRight thread_self(mach_thread_self()); |
26 EXPECT_EQ(thread_self, MachThreadSelf()); | 27 EXPECT_EQ(thread_self, MachThreadSelf()); |
27 } | 28 } |
28 | 29 |
| 30 TEST(MachExtensions, NewMachPort_Receive) { |
| 31 base::mac::ScopedMachReceiveRight port(NewMachPort(MACH_PORT_RIGHT_RECEIVE)); |
| 32 ASSERT_NE(kMachPortNull, port); |
| 33 |
| 34 mach_port_type_t type; |
| 35 kern_return_t kr = mach_port_type(mach_task_self(), port, &type); |
| 36 ASSERT_EQ(KERN_SUCCESS, kr) << MachErrorMessage(kr, "mach_port_get_type"); |
| 37 |
| 38 EXPECT_EQ(MACH_PORT_TYPE_RECEIVE, type); |
| 39 } |
| 40 |
| 41 TEST(MachExtensions, NewMachPort_PortSet) { |
| 42 base::mac::ScopedMachPortSet port(NewMachPort(MACH_PORT_RIGHT_PORT_SET)); |
| 43 ASSERT_NE(kMachPortNull, port); |
| 44 |
| 45 mach_port_type_t type; |
| 46 kern_return_t kr = mach_port_type(mach_task_self(), port, &type); |
| 47 ASSERT_EQ(KERN_SUCCESS, kr) << MachErrorMessage(kr, "mach_port_get_type"); |
| 48 |
| 49 EXPECT_EQ(MACH_PORT_TYPE_PORT_SET, type); |
| 50 } |
| 51 |
| 52 TEST(MachExtensions, NewMachPort_DeadName) { |
| 53 base::mac::ScopedMachSendRight port(NewMachPort(MACH_PORT_RIGHT_DEAD_NAME)); |
| 54 ASSERT_NE(kMachPortNull, port); |
| 55 |
| 56 mach_port_type_t type; |
| 57 kern_return_t kr = mach_port_type(mach_task_self(), port, &type); |
| 58 ASSERT_EQ(KERN_SUCCESS, kr) << MachErrorMessage(kr, "mach_port_get_type"); |
| 59 |
| 60 EXPECT_EQ(MACH_PORT_TYPE_DEAD_NAME, type); |
| 61 } |
| 62 |
29 } // namespace | 63 } // namespace |
30 } // namespace test | 64 } // namespace test |
31 } // namespace crashpad | 65 } // namespace crashpad |
OLD | NEW |