TEST(MemoryRangeAnalyzer, GetMaxContiguousFreeBlockSize_empty) { auto analyzer = MemoryRangeAnalyzer(); RangeList ranges = RangeList(); auto size = analyzer.GetMaxContiguousFreeBlockSize(ranges); EXPECT_EQ(size, MemoryRangeAnalyzer::UNDETERMINED_SIZE); }
TEST(MemoryRangeAnalyzer, GetMaxContiguousFreeBlockSize_oneblock) { auto analyzer = MemoryRangeAnalyzer(); auto ranges = std::make_shared<std::vector<const MemoryRange>>(); ranges->push_back(MemoryRange(0, 1, State::Commit, Usage::EnvironmentBlock)); auto size = analyzer.GetMaxContiguousFreeBlockSize(RangeList(ranges)); EXPECT_EQ(size, 0); }
TEST(MemoryRangeAnalyzer, GetMinContiguousSOHHeapSize_oneblock) { auto analyzer = MemoryRangeAnalyzer(); auto ranges = std::make_shared<std::vector<const MemoryRange>>(); ranges->push_back(MemoryRange(0, 101, State::Commit, Usage::GCHeap)); auto size = analyzer.GetMinContiguousSOHHeapSize(RangeList(ranges)); EXPECT_EQ(size, 101); }
TEST(MemoryRangeAnalyzer, GetMinContiguousSOHHeapSize_oneblock_nonsoh) { auto analyzer = MemoryRangeAnalyzer(); auto ranges = std::make_shared<std::vector<const MemoryRange>>(); ranges->push_back(MemoryRange(0, 1, State::Commit, Usage::EnvironmentBlock)); auto size = analyzer.GetMinContiguousSOHHeapSize(RangeList(ranges)); EXPECT_EQ(size, MemoryRangeAnalyzer::UNDETERMINED_SIZE); }
TEST(MemoryRangeAnalyzer, GetMinContiguousLOHHeapSize_threeblocks) { auto analyzer = MemoryRangeAnalyzer(); auto ranges = std::make_shared<std::vector<const MemoryRange>>(); ranges->push_back(MemoryRange(0, 10000, State::Commit, Usage::GCLOHeap)); ranges->push_back(MemoryRange(20000, 20000, State::Commit, Usage::GCLOHeap)); ranges->push_back(MemoryRange(50000, 0x2f000, State::Commit, Usage::GCLOHeap)); auto size = analyzer.GetMinContiguousLOHHeapSize(RangeList(ranges)); EXPECT_EQ(size, 10000); }
Type(const std::string &n, const RangeList &r = RangeList()) : name(n), ranges(r) {}