summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/ProfileData/CoverageMappingTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/ProfileData/CoverageMappingTest.cpp')
-rw-r--r--llvm/unittests/ProfileData/CoverageMappingTest.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/llvm/unittests/ProfileData/CoverageMappingTest.cpp b/llvm/unittests/ProfileData/CoverageMappingTest.cpp
index 8c9c8c48234..ad0a0cfb873 100644
--- a/llvm/unittests/ProfileData/CoverageMappingTest.cpp
+++ b/llvm/unittests/ProfileData/CoverageMappingTest.cpp
@@ -635,6 +635,63 @@ TEST_P(CoverageMappingTest, basic_coverage_iteration) {
ASSERT_EQ(CoverageSegment(11, 11, false), Segments[6]);
}
+TEST_P(CoverageMappingTest, test_line_coverage_iterator) {
+ ProfileWriter.addRecord({"func", 0x1234, {30, 20, 10, 0}}, Err);
+
+ startFunction("func", 0x1234);
+ addCMR(Counter::getCounter(0), "file1", 1, 1, 9, 9);
+ addCMR(Counter::getCounter(1), "file1", 1, 1, 4, 7);
+ addCMR(Counter::getCounter(2), "file1", 5, 8, 9, 1);
+ addCMR(Counter::getCounter(3), "file1", 10, 10, 11, 11);
+ EXPECT_THAT_ERROR(loadCoverageMapping(), Succeeded());
+
+ CoverageData Data = LoadedCoverage->getCoverageForFile("file1");
+
+ unsigned NumLineStats = 0;
+ for (const auto &LCS : getLineCoverageStats(Data)) {
+ ++NumLineStats;
+ (void)LCS;
+ }
+ ASSERT_EQ(11U, NumLineStats);
+
+ LineCoverageIterator LCI{Data};
+
+ ASSERT_EQ(1U, LCI->getLine());
+ ASSERT_EQ(20ULL, LCI->getExecutionCount());
+ ++LCI;
+ ASSERT_EQ(2U, LCI->getLine());
+ ASSERT_EQ(20ULL, LCI->getExecutionCount());
+ ++LCI;
+ ASSERT_EQ(3U, LCI->getLine());
+ ASSERT_EQ(20ULL, LCI->getExecutionCount());
+ ++LCI;
+ ASSERT_EQ(4U, LCI->getLine());
+ ASSERT_EQ(20ULL, LCI->getExecutionCount());
+ ++LCI;
+ ASSERT_EQ(5U, LCI->getLine());
+ ASSERT_EQ(10ULL, LCI->getExecutionCount());
+ ++LCI;
+ ASSERT_EQ(6U, LCI->getLine());
+ ASSERT_EQ(10ULL, LCI->getExecutionCount());
+ ++LCI;
+ ASSERT_EQ(7U, LCI->getLine());
+ ASSERT_EQ(10ULL, LCI->getExecutionCount());
+ ++LCI;
+ ASSERT_EQ(8U, LCI->getLine());
+ ASSERT_EQ(10ULL, LCI->getExecutionCount());
+ ++LCI;
+ ASSERT_EQ(9U, LCI->getLine());
+ ASSERT_EQ(10ULL, LCI->getExecutionCount());
+ ++LCI;
+ ASSERT_EQ(10U, LCI->getLine());
+ ASSERT_EQ(0ULL, LCI->getExecutionCount());
+ ++LCI;
+ ASSERT_EQ(11U, LCI->getLine());
+ ASSERT_EQ(0ULL, LCI->getExecutionCount());
+ ++LCI;
+ ASSERT_EQ(LCI, LCI.getEnd());
+}
+
TEST_P(CoverageMappingTest, uncovered_function) {
startFunction("func", 0x1234);
addCMR(Counter::getZero(), "file1", 1, 2, 3, 4);
OpenPOWER on IntegriCloud