Skip to content

Commit cd884fc

Browse files
committed
Refactor tests
1 parent b45c618 commit cd884fc

1 file changed

Lines changed: 138 additions & 135 deletions

File tree

test/testsuppressions.cpp

Lines changed: 138 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -1911,208 +1911,211 @@ class TestSuppressions : public TestFixture {
19111911
}
19121912
}
19131913

1914-
void polyspaceMisraC2012() const {
1914+
struct PolyspaceComment {
1915+
std::string text;
1916+
int line;
1917+
1918+
PolyspaceComment(const std::string &&text, int line)
1919+
: text(text)
1920+
, line(line)
1921+
{}
1922+
};
1923+
1924+
struct PolyspaceParseResult {
1925+
std::string errorId;
1926+
int lineNumber;
1927+
SuppressionList::Type type = SuppressionList::Type::unique;
1928+
int lineBegin = SuppressionList::Suppression::NO_LINE;
1929+
int lineEnd = SuppressionList::Suppression::NO_LINE;
1930+
1931+
PolyspaceParseResult(const std::string &&errorId,
1932+
int lineNumber,
1933+
SuppressionList::Type type = SuppressionList::Type::unique,
1934+
int lineBegin = SuppressionList::Suppression::NO_LINE,
1935+
int lineEnd = SuppressionList::Suppression::NO_LINE)
1936+
: errorId(errorId)
1937+
, lineNumber(lineNumber)
1938+
, type(type)
1939+
, lineBegin(lineBegin)
1940+
, lineEnd(lineEnd)
1941+
{}
1942+
};
1943+
1944+
void testPolyspaceSuppression(const Settings &settings,
1945+
std::initializer_list<PolyspaceComment> comments,
1946+
std::initializer_list<PolyspaceParseResult> results) const
1947+
{
19151948
SuppressionList list;
1916-
Settings settings;
1917-
settings.addons.emplace("misra");
19181949
polyspace::Parser parser(settings);
1919-
parser.parse("/* polyspace MISRA2012 : 2.7 */", 1, "file.c");
1950+
1951+
const std::string fileName = "file.c";
1952+
for (const auto &comment : comments)
1953+
parser.parse(comment.text, comment.line, fileName);
1954+
19201955
parser.collect(list);
19211956
const auto &supprs = list.getSuppressions();
1922-
ASSERT_EQUALS(1, supprs.size());
1923-
const auto s = supprs.cbegin();
1924-
ASSERT(s->isInline);
1925-
ASSERT(s->isPolyspace);
1926-
ASSERT_EQUALS("misra-c2012-2.7", s->errorId);
1927-
ASSERT_EQUALS(1, s->lineNumber);
1928-
ASSERT_EQUALS_ENUM(SuppressionList::Type::unique, s->type);
1929-
ASSERT_EQUALS(SuppressionList::Suppression::NO_LINE, s->lineBegin);
1930-
ASSERT_EQUALS(SuppressionList::Suppression::NO_LINE, s->lineEnd);
1957+
1958+
ASSERT_EQUALS(results.size(), supprs.size());
1959+
1960+
auto supprIt = supprs.cbegin();
1961+
const auto *resultIt = results.begin();
1962+
1963+
for (; supprIt != supprs.cend(); supprIt++, resultIt++) {
1964+
ASSERT(supprIt->isPolyspace);
1965+
ASSERT(supprIt->isInline);
1966+
ASSERT_EQUALS(fileName, supprIt->fileName);
1967+
ASSERT_EQUALS(resultIt->errorId, supprIt->errorId);
1968+
ASSERT_EQUALS_ENUM(resultIt->type, supprIt->type);
1969+
ASSERT_EQUALS(resultIt->lineNumber, supprIt->lineNumber);
1970+
ASSERT_EQUALS(resultIt->lineBegin, supprIt->lineBegin);
1971+
ASSERT_EQUALS(resultIt->lineEnd, supprIt->lineEnd);
1972+
}
1973+
}
1974+
1975+
void polyspaceMisraC2012() const {
1976+
Settings settings;
1977+
AddonInfo info;
1978+
info.name = "misra";
1979+
settings.addonInfos.push_back(info);
1980+
1981+
testPolyspaceSuppression(
1982+
settings,
1983+
{ { "/* polyspace MISRA2012 : 2.7 */", 1 } },
1984+
{ { "misra-c2012-2.7", 1 } }
1985+
);
19311986
}
19321987

19331988
void polyspacePremiumMisraC2012() const {
1934-
SuppressionList list;
19351989
Settings settings;
19361990
settings.premiumArgs = "--misra-c-2012";
1937-
polyspace::Parser parser(settings);
1938-
parser.parse("/* polyspace MISRA2012 : 2.7 */", 1, "file.c");
1939-
parser.collect(list);
1940-
const auto &supprs = list.getSuppressions();
1941-
ASSERT_EQUALS(1, supprs.size());
1942-
const auto s = supprs.cbegin();
1943-
ASSERT_EQUALS("premium-misra-c-2012-2.7", s->errorId);
1991+
testPolyspaceSuppression(
1992+
settings,
1993+
{ { "/* polyspace MISRA2012 : 2.7 */", 1 } },
1994+
{ { "premium-misra-c-2012-2.7", 1 } }
1995+
);
19441996
}
19451997

19461998
void polyspaceMisraC2023() const {
1947-
SuppressionList list;
19481999
Settings settings;
19492000
settings.premiumArgs = "--misra-c-2023";
1950-
polyspace::Parser parser(settings);
1951-
parser.parse("// polyspace MISRA-C-2023 : *", 2, "file.c");
1952-
parser.collect(list);
1953-
const auto &supprs = list.getSuppressions();
1954-
ASSERT_EQUALS(1, supprs.size());
1955-
const auto s = supprs.cbegin();
1956-
ASSERT_EQUALS("premium-misra-c-2023-*", s->errorId);
1957-
ASSERT_EQUALS(2, s->lineNumber);
1958-
ASSERT_EQUALS(SuppressionList::Suppression::NO_LINE, s->lineBegin);
1959-
ASSERT_EQUALS(SuppressionList::Suppression::NO_LINE, s->lineEnd);
2001+
testPolyspaceSuppression(
2002+
settings,
2003+
{ { "// polyspace MISRA-C-2023 : *", 2 } },
2004+
{ { "premium-misra-c-2023-*", 2 } }
2005+
);
19602006
}
19612007

19622008
void polyspaceMisraCpp2008() const {
1963-
SuppressionList list;
19642009
Settings settings;
19652010
settings.premiumArgs = "--misra-cpp-2008";
1966-
polyspace::Parser parser(settings);
1967-
parser.parse("// polyspace MISRA-CPP : 7-1-1", 1, "file.c");
1968-
parser.collect(list);
1969-
const auto &supprs = list.getSuppressions();
1970-
ASSERT_EQUALS(1, supprs.size());
1971-
const auto s = supprs.cbegin();
1972-
ASSERT_EQUALS("premium-misra-cpp-2008-7-1-1", s->errorId);
2011+
testPolyspaceSuppression(
2012+
settings,
2013+
{ { "// polyspace MISRA-CPP : 7-1-1", 1 } },
2014+
{ { "premium-misra-cpp-2008-7-1-1", 1 } }
2015+
);
19732016
}
19742017

19752018
void polyspaceMisraCpp2023() const {
1976-
SuppressionList list;
19772019
Settings settings;
19782020
settings.premiumArgs = "--misra-cpp-2023";
1979-
polyspace::Parser parser(settings);
1980-
parser.parse("// polyspace MISRA-CPP-2023 : 4.6.1", 1, "file.c");
1981-
parser.collect(list);
1982-
const auto &supprs = list.getSuppressions();
1983-
ASSERT_EQUALS(1, supprs.size());
1984-
const auto s = supprs.cbegin();
1985-
ASSERT_EQUALS("premium-misra-cpp-2023-4.6.1", s->errorId);
2021+
testPolyspaceSuppression(
2022+
settings,
2023+
{ { "// polyspace MISRA-CPP-2023 : 4.6.1", 1 } },
2024+
{ { "premium-misra-cpp-2023-4.6.1", 1 } }
2025+
);
19862026
}
19872027

19882028
void polyspaceCertC() const {
1989-
SuppressionList list;
19902029
Settings settings;
19912030
settings.premiumArgs = "--cert-c";
1992-
polyspace::Parser parser(settings);
1993-
parser.parse("// polyspace CERT-C : PRE30", 1, "file.c");
1994-
parser.collect(list);
1995-
const auto &supprs = list.getSuppressions();
1996-
ASSERT_EQUALS(1, supprs.size());
1997-
const auto s = supprs.cbegin();
1998-
ASSERT_EQUALS("premium-cert-c-PRE30", s->errorId);
2031+
testPolyspaceSuppression(
2032+
settings,
2033+
{ { "// polyspace CERT-C : PRE30", 1 } },
2034+
{ { "premium-cert-c-PRE30", 1 } }
2035+
);
19992036
}
20002037

20012038
void polyspaceCertCpp() const {
2002-
SuppressionList list;
20032039
Settings settings;
20042040
settings.premiumArgs = "--cert-cpp";
2005-
polyspace::Parser parser(settings);
2006-
parser.parse("// polyspace CERT-CPP : CTR51", 1, "file.c");
2007-
parser.collect(list);
2008-
const auto &supprs = list.getSuppressions();
2009-
ASSERT_EQUALS(1, supprs.size());
2010-
const auto s = supprs.cbegin();
2011-
ASSERT_EQUALS("premium-cert-cpp-CTR51", s->errorId);
2041+
testPolyspaceSuppression(
2042+
settings,
2043+
{ { "// polyspace CERT-CPP : CTR51", 1 } },
2044+
{ { "premium-cert-cpp-CTR51", 1 } }
2045+
);
20122046
}
20132047

20142048
void polyspaceAutosar() const {
2015-
SuppressionList list;
20162049
Settings settings;
20172050
settings.premiumArgs = "--autosar";
2018-
polyspace::Parser parser(settings);
2019-
parser.parse("// polyspace AUTOSAR-CPP14 : a2-10-1", 1, "file.c");
2020-
parser.collect(list);
2021-
const auto &supprs = list.getSuppressions();
2022-
ASSERT_EQUALS(1, supprs.size());
2023-
const auto s = supprs.cbegin();
2024-
ASSERT_EQUALS("premium-autosar-a2-10-1", s->errorId);
2051+
testPolyspaceSuppression(
2052+
settings,
2053+
{ { "// polyspace AUTOSAR-CPP14 : a2-10-1", 1 } },
2054+
{ { "premium-autosar-a2-10-1", 1 } }
2055+
);
20252056
}
20262057

20272058
void polyspaceIgnored() const {
2028-
SuppressionList list;
2029-
const Settings settings;
2030-
polyspace::Parser parser(settings);
2031-
parser.parse("// polyspace DEFECT : INT_OVFL", 1, "file.c");
2032-
parser.collect(list);
2033-
ASSERT(list.getSuppressions().empty());
2059+
Settings settings;
2060+
testPolyspaceSuppression(
2061+
settings,
2062+
{ { "// polyspace DEFECT : INT_OVFL AUTOSAR-CPP14 : a2-10-1", 1 } },
2063+
{}
2064+
);
20342065
}
20352066

20362067
void polyspaceMultiple1() const {
2037-
SuppressionList list;
20382068
Settings settings;
20392069
settings.premiumArgs = "--misra-c-2012";
2040-
polyspace::Parser parser(settings);
2041-
parser.parse("/* polyspace MISRA2012 : 2.7, 9.1 */", 1, "file.c");
2042-
parser.collect(list);
2043-
const auto &supprs = list.getSuppressions();
2044-
ASSERT_EQUALS(2, supprs.size());
2045-
auto s = supprs.cbegin();
2046-
ASSERT_EQUALS("premium-misra-c-2012-2.7", s->errorId);
2047-
s++;
2048-
ASSERT_EQUALS("premium-misra-c-2012-9.1", s->errorId);
2070+
testPolyspaceSuppression(
2071+
settings,
2072+
{ { "/* polyspace MISRA2012 : 2.7, 9.1 */", 1 } },
2073+
{ { "premium-misra-c-2012-2.7", 1 },
2074+
{ "premium-misra-c-2012-9.1", 1 } }
2075+
);
20492076
}
20502077

20512078
void polyspaceMultiple2() const {
2052-
SuppressionList list;
20532079
Settings settings;
20542080
settings.premiumArgs = "--misra-c-2012 --misra-cpp-2008";
2055-
polyspace::Parser parser(settings);
2056-
parser.parse("/* polyspace MISRA2012 : 2.7 MISRA-CPP : 7-1-1 */", 1, "file.c");
2057-
parser.collect(list);
2058-
const auto &supprs = list.getSuppressions();
2059-
ASSERT_EQUALS(2, supprs.size());
2060-
auto s = supprs.cbegin();
2061-
ASSERT_EQUALS("premium-misra-c-2012-2.7", s->errorId);
2062-
s++;
2063-
ASSERT_EQUALS("premium-misra-cpp-2008-7-1-1", s->errorId);
2081+
testPolyspaceSuppression(
2082+
settings,
2083+
{ { "/* polyspace MISRA2012 : 2.7 MISRA-CPP : 7-1-1 */", 1 } },
2084+
{ { "premium-misra-c-2012-2.7", 1 },
2085+
{ "premium-misra-cpp-2008-7-1-1", 1 } }
2086+
);
20642087
}
20652088

20662089
void polyspaceMultiple3() const {
2067-
SuppressionList list;
20682090
Settings settings;
20692091
settings.premiumArgs = "--misra-c-2012 --misra-cpp-2008";
2070-
polyspace::Parser parser(settings);
2071-
parser.parse("/* polyspace MISRA2012 : 2.7 [Justified:Low] \"comment 1\" polyspace MISRA-CPP : 7-1-1 \"comment 2\"*/", 1, "file.c");
2072-
parser.collect(list);
2073-
const auto &supprs = list.getSuppressions();
2074-
ASSERT_EQUALS(2, supprs.size());
2075-
auto s = supprs.cbegin();
2076-
ASSERT_EQUALS("premium-misra-c-2012-2.7", s->errorId);
2077-
s++;
2078-
ASSERT_EQUALS("premium-misra-cpp-2008-7-1-1", s->errorId);
2092+
testPolyspaceSuppression(
2093+
settings,
2094+
{ { "/* polyspace MISRA2012 : 2.7 [Justified:Low] \"comment 1\" polyspace MISRA-CPP : 7-1-1 \"comment 2\"*/", 1 } },
2095+
{ { "premium-misra-c-2012-2.7", 1 },
2096+
{ "premium-misra-cpp-2008-7-1-1", 1 }, }
2097+
);
20792098
}
20802099

20812100
void polyspaceRange() const {
2082-
SuppressionList list;
20832101
Settings settings;
20842102
settings.premiumArgs = "--misra-c-2012";
2085-
polyspace::Parser parser(settings);
2086-
parser.parse("/* polyspace +3 MISRA2012 : 2.7 */", 1, "file.c");
2087-
parser.collect(list);
2088-
const auto &supprs = list.getSuppressions();
2089-
ASSERT_EQUALS(1, supprs.size());
2090-
const auto s = supprs.cbegin();
2091-
ASSERT(s->isInline);
2092-
ASSERT_EQUALS("premium-misra-c-2012-2.7", s->errorId);
2093-
ASSERT_EQUALS(1, s->lineNumber);
2094-
ASSERT_EQUALS_ENUM(SuppressionList::Type::block, s->type);
2095-
ASSERT_EQUALS(1, s->lineBegin);
2096-
ASSERT_EQUALS(4, s->lineEnd);
2103+
testPolyspaceSuppression(
2104+
settings,
2105+
{ { "/* polyspace +3 MISRA2012 : 2.7 */", 1 } },
2106+
{ { "premium-misra-c-2012-2.7", 1, SuppressionList::Type::block, 1, 4 } }
2107+
);
20972108
}
20982109

20992110
void polyspaceBlock() const {
2100-
SuppressionList list;
21012111
Settings settings;
21022112
settings.premiumArgs = "--misra-c-2012";
2103-
polyspace::Parser parser(settings);
2104-
parser.parse("/* polyspace-begin MISRA2012 : 2.7 */", 1, "file.c");
2105-
parser.parse("/* polyspace-end MISRA2012 : 2.7 */", 5, "file.c");
2106-
parser.collect(list);
2107-
const auto &supprs = list.getSuppressions();
2108-
ASSERT_EQUALS(1, supprs.size());
2109-
const auto s = supprs.cbegin();
2110-
ASSERT(s->isInline);
2111-
ASSERT_EQUALS("premium-misra-c-2012-2.7", s->errorId);
2112-
ASSERT_EQUALS(1, s->lineNumber);
2113-
ASSERT_EQUALS_ENUM(SuppressionList::Type::block, s->type);
2114-
ASSERT_EQUALS(1, s->lineBegin);
2115-
ASSERT_EQUALS(5, s->lineEnd);
2113+
testPolyspaceSuppression(
2114+
settings,
2115+
{ { "/* polyspace-begin MISRA2012 : 2.7 */", 1 },
2116+
{ "/* polyspace-end MISRA2012 : 2.7 */", 5 } },
2117+
{ { "premium-misra-c-2012-2.7", 1, SuppressionList::Type::block, 1, 5 } }
2118+
);
21162119
}
21172120
};
21182121

0 commit comments

Comments
 (0)