Chromium Code Reviews| Index: util/win/process_info_test.cc |
| diff --git a/util/win/process_info_test.cc b/util/win/process_info_test.cc |
| index 02b99f734140c60247f18289453eb1139cd13658..d3b0b9d635c9a2799529bfae3f9e62bc4abf5669 100644 |
| --- a/util/win/process_info_test.cc |
| +++ b/util/win/process_info_test.cc |
| @@ -199,6 +199,139 @@ TEST(ProcessInfo, OtherProcessWOW64) { |
| } |
| #endif // ARCH_CPU_64_BITS |
| +TEST(ProcessInfo, AccessibleRangesNone) { |
| + std::vector<ProcessInfo::MemoryInfo> memory_info; |
| + ProcessInfo::MemoryInfo mi; |
| + |
| + mi.base_address = 0; |
| + mi.region_size = 10; |
| + mi.state = MEM_FREE; |
| + memory_info.push_back(mi); |
| + |
| + std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| + GetAccessibleRangesInMemoryMap(2, 4, memory_info); |
| + |
| + EXPECT_EQ(0u, result.size()); |
|
Mark Mentovai
2015/09/29 21:35:50
For the zeroes, EXPECT_TRUE(result.empty()) reads
scottmg
2015/09/30 17:40:26
Done.
|
| +} |
| + |
| +TEST(ProcessInfo, AccessibleRangesOneInside) { |
| + std::vector<ProcessInfo::MemoryInfo> memory_info; |
| + ProcessInfo::MemoryInfo mi; |
| + |
| + mi.base_address = 0; |
| + mi.region_size = 10; |
| + mi.state = MEM_COMMIT; |
| + memory_info.push_back(mi); |
| + |
| + std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| + GetAccessibleRangesInMemoryMap(2, 4, memory_info); |
| + |
| + ASSERT_EQ(result.size(), 1u); |
| + EXPECT_EQ(2, result[0].base()); |
| + EXPECT_EQ(4, result[0].size()); |
| +} |
| + |
| +TEST(ProcessInfo, AccessibleRangesOneTruncatedSize) { |
| + std::vector<ProcessInfo::MemoryInfo> memory_info; |
| + ProcessInfo::MemoryInfo mi; |
| + |
| + mi.base_address = 0; |
| + mi.region_size = 10; |
| + mi.state = MEM_COMMIT; |
| + memory_info.push_back(mi); |
| + |
| + mi.base_address = 10; |
| + mi.region_size = 20; |
| + mi.state = MEM_FREE; |
| + memory_info.push_back(mi); |
| + |
| + std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| + GetAccessibleRangesInMemoryMap(5, 10, memory_info); |
| + |
| + ASSERT_EQ(result.size(), 1u); |
| + EXPECT_EQ(5, result[0].base()); |
| + EXPECT_EQ(5, result[0].size()); |
| +} |
| + |
| + |
| +TEST(ProcessInfo, AccessibleRangesOneMovedStart) { |
| + std::vector<ProcessInfo::MemoryInfo> memory_info; |
| + ProcessInfo::MemoryInfo mi; |
| + |
| + mi.base_address = 0; |
| + mi.region_size = 10; |
| + mi.state = MEM_FREE; |
| + memory_info.push_back(mi); |
| + |
| + mi.base_address = 10; |
| + mi.region_size = 20; |
| + mi.state = MEM_COMMIT; |
| + memory_info.push_back(mi); |
| + |
| + std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| + GetAccessibleRangesInMemoryMap(5, 10, memory_info); |
| + |
| + ASSERT_EQ(result.size(), 1u); |
| + EXPECT_EQ(10, result[0].base()); |
| + EXPECT_EQ(5, result[0].size()); |
| +} |
| + |
| +TEST(ProcessInfo, AccessibleRangesCoalesced) { |
| + std::vector<ProcessInfo::MemoryInfo> memory_info; |
| + ProcessInfo::MemoryInfo mi; |
| + |
| + mi.base_address = 0; |
| + mi.region_size = 10; |
| + mi.state = MEM_FREE; |
| + memory_info.push_back(mi); |
| + |
| + mi.base_address = 10; |
| + mi.region_size = 2; |
| + mi.state = MEM_COMMIT; |
| + memory_info.push_back(mi); |
| + |
| + mi.base_address = 12; |
| + mi.region_size = 5; |
| + mi.state = MEM_RESERVE; |
| + memory_info.push_back(mi); |
| + |
| + std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| + GetAccessibleRangesInMemoryMap(11, 4, memory_info); |
| + |
| + ASSERT_EQ(result.size(), 1u); |
| + EXPECT_EQ(11, result[0].base()); |
| + EXPECT_EQ(4, result[0].size()); |
| +} |
| + |
| +TEST(ProcessInfo, AccessibleRangesMiddleUnavailable) { |
| + std::vector<ProcessInfo::MemoryInfo> memory_info; |
| + ProcessInfo::MemoryInfo mi; |
| + |
| + mi.base_address = 0; |
| + mi.region_size = 10; |
| + mi.state = MEM_COMMIT; |
| + memory_info.push_back(mi); |
| + |
| + mi.base_address = 10; |
| + mi.region_size = 5; |
| + mi.state = MEM_FREE; |
| + memory_info.push_back(mi); |
| + |
| + mi.base_address = 15; |
| + mi.region_size = 100; |
| + mi.state = MEM_COMMIT; |
| + memory_info.push_back(mi); |
| + |
| + std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| + GetAccessibleRangesInMemoryMap(5, 45, memory_info); |
| + |
| + ASSERT_EQ(result.size(), 2u); |
| + EXPECT_EQ(5, result[0].base()); |
| + EXPECT_EQ(5, result[0].size()); |
| + EXPECT_EQ(15, result[1].base()); |
| + EXPECT_EQ(35, result[1].size()); |
| +} |
| + |
| } // namespace |
| } // namespace test |
| } // namespace crashpad |