Skip to content

Commit 138b5be

Browse files
committed
Refactor tests
1 parent 750f9e2 commit 138b5be

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
@@ -1912,208 +1912,211 @@ class TestSuppressions : public TestFixture {
19121912
}
19131913
}
19141914

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 commit comments

Comments
 (0)