Skip to content

Commit c3465d5

Browse files
committed
Refactor tests
1 parent 1f0cd1e commit c3465d5

1 file changed

Lines changed: 140 additions & 135 deletions

File tree

test/testsuppressions.cpp

Lines changed: 140 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -1912,208 +1912,213 @@ 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+
1926+
struct PolyspaceParseResult {
1927+
std::string errorId;
1928+
int lineNumber;
1929+
SuppressionList::Type type = SuppressionList::Type::unique;
1930+
int lineBegin = SuppressionList::Suppression::NO_LINE;
1931+
int lineEnd = SuppressionList::Suppression::NO_LINE;
1932+
1933+
PolyspaceParseResult(const std::string &errorId,
1934+
int lineNumber,
1935+
SuppressionList::Type type = SuppressionList::Type::unique,
1936+
int lineBegin = SuppressionList::Suppression::NO_LINE,
1937+
int lineEnd = SuppressionList::Suppression::NO_LINE)
1938+
: errorId(errorId)
1939+
, lineNumber(lineNumber)
1940+
, type(type)
1941+
, lineBegin(lineBegin)
1942+
, lineEnd(lineEnd)
1943+
{
1944+
}
1945+
};
1946+
1947+
void testPolyspaceSuppression(const Settings &settings,
1948+
std::initializer_list<PolyspaceComment> comments,
1949+
std::initializer_list<PolyspaceParseResult> results) const
1950+
{
19161951
SuppressionList list;
1917-
Settings settings;
1918-
settings.addons.emplace("misra");
19191952
polyspace::Parser parser(settings);
1920-
parser.parse("/* polyspace MISRA2012 : 2.7 */", 1, "file.c");
1953+
1954+
const std::string fileName = "file.c";
1955+
for (const auto &comment : comments)
1956+
parser.parse(comment.text, comment.line, fileName);
1957+
19211958
parser.collect(list);
19221959
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);
1960+
1961+
ASSERT_EQUALS(results.size(), supprs.size());
1962+
1963+
auto supprIt = supprs.cbegin();
1964+
auto resultIt = results.begin();
1965+
1966+
for (; supprIt != supprs.cend(); supprIt++, resultIt++) {
1967+
ASSERT(supprIt->isPolyspace);
1968+
ASSERT(supprIt->isInline);
1969+
ASSERT_EQUALS(fileName, supprIt->fileName);
1970+
ASSERT_EQUALS(resultIt->errorId, supprIt->errorId);
1971+
ASSERT_EQUALS_ENUM(resultIt->type, supprIt->type);
1972+
ASSERT_EQUALS(resultIt->lineNumber, supprIt->lineNumber);
1973+
ASSERT_EQUALS(resultIt->lineBegin, supprIt->lineBegin);
1974+
ASSERT_EQUALS(resultIt->lineEnd, supprIt->lineEnd);
1975+
}
1976+
}
1977+
1978+
void polyspaceMisraC2012() const {
1979+
Settings settings;
1980+
AddonInfo info;
1981+
info.name = "misra";
1982+
settings.addonInfos.push_back(info);
1983+
1984+
testPolyspaceSuppression(
1985+
settings,
1986+
{ { "/* polyspace MISRA2012 : 2.7 */", 1 } },
1987+
{ { "misra-c2012-2.7", 1 } }
1988+
);
19321989
}
19331990

19341991
void polyspacePremiumMisraC2012() const {
1935-
SuppressionList list;
19361992
Settings settings;
19371993
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);
1994+
testPolyspaceSuppression(
1995+
settings,
1996+
{ { "/* polyspace MISRA2012 : 2.7 */", 1 } },
1997+
{ { "premium-misra-c-2012-2.7", 1 } }
1998+
);
19451999
}
19462000

19472001
void polyspaceMisraC2023() const {
1948-
SuppressionList list;
19492002
Settings settings;
19502003
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);
2004+
testPolyspaceSuppression(
2005+
settings,
2006+
{ { "// polyspace MISRA-C-2023 : *", 2 } },
2007+
{ { "premium-misra-c-2023-*", 2 } }
2008+
);
19612009
}
19622010

19632011
void polyspaceMisraCpp2008() const {
1964-
SuppressionList list;
19652012
Settings settings;
19662013
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);
2014+
testPolyspaceSuppression(
2015+
settings,
2016+
{ { "// polyspace MISRA-CPP : 7-1-1", 1 } },
2017+
{ { "premium-misra-cpp-2008-7-1-1", 1 } }
2018+
);
19742019
}
19752020

19762021
void polyspaceMisraCpp2023() const {
1977-
SuppressionList list;
19782022
Settings settings;
19792023
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);
2024+
testPolyspaceSuppression(
2025+
settings,
2026+
{ { "// polyspace MISRA-CPP-2023 : 4.6.1", 1 } },
2027+
{ { "premium-misra-cpp-2023-4.6.1", 1 } }
2028+
);
19872029
}
19882030

19892031
void polyspaceCertC() const {
1990-
SuppressionList list;
19912032
Settings settings;
19922033
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);
2034+
testPolyspaceSuppression(
2035+
settings,
2036+
{ { "// polyspace CERT-C : PRE30", 1 } },
2037+
{ { "premium-cert-c-PRE30", 1 } }
2038+
);
20002039
}
20012040

20022041
void polyspaceCertCpp() const {
2003-
SuppressionList list;
20042042
Settings settings;
20052043
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);
2044+
testPolyspaceSuppression(
2045+
settings,
2046+
{ { "// polyspace CERT-CPP : CTR51", 1 } },
2047+
{ { "premium-cert-cpp-CTR51", 1 } }
2048+
);
20132049
}
20142050

20152051
void polyspaceAutosar() const {
2016-
SuppressionList list;
20172052
Settings settings;
20182053
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);
2054+
testPolyspaceSuppression(
2055+
settings,
2056+
{ { "// polyspace AUTOSAR-CPP14 : a2-10-1", 1 } },
2057+
{ { "premium-autosar-a2-10-1", 1 } }
2058+
);
20262059
}
20272060

20282061
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());
2062+
Settings settings;
2063+
testPolyspaceSuppression(
2064+
settings,
2065+
{ { "// polyspace DEFECT : INT_OVFL AUTOSAR-CPP14 : a2-10-1", 1 } },
2066+
{}
2067+
);
20352068
}
20362069

20372070
void polyspaceMultiple1() const {
2038-
SuppressionList list;
20392071
Settings settings;
20402072
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);
2073+
testPolyspaceSuppression(
2074+
settings,
2075+
{ { "/* polyspace MISRA2012 : 2.7, 9.1 */", 1 } },
2076+
{ { "premium-misra-c-2012-2.7", 1 },
2077+
{ "premium-misra-c-2012-9.1", 1 } }
2078+
);
20502079
}
20512080

20522081
void polyspaceMultiple2() const {
2053-
SuppressionList list;
20542082
Settings settings;
20552083
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);
2084+
testPolyspaceSuppression(
2085+
settings,
2086+
{ { "/* polyspace MISRA2012 : 2.7 MISRA-CPP : 7-1-1 */", 1 } },
2087+
{ { "premium-misra-c-2012-2.7", 1 },
2088+
{ "premium-misra-cpp-2008-7-1-1", 1 } }
2089+
);
20652090
}
20662091

20672092
void polyspaceMultiple3() const {
2068-
SuppressionList list;
20692093
Settings settings;
20702094
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);
2095+
testPolyspaceSuppression(
2096+
settings,
2097+
{ { "/* polyspace MISRA2012 : 2.7 [Justified:Low] \"comment 1\" polyspace MISRA-CPP : 7-1-1 \"comment 2\"*/", 1 } },
2098+
{ { "premium-misra-c-2012-2.7", 1 },
2099+
{ "premium-misra-cpp-2008-7-1-1", 1 }, }
2100+
);
20802101
}
20812102

20822103
void polyspaceRange() const {
2083-
SuppressionList list;
20842104
Settings settings;
20852105
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);
2106+
testPolyspaceSuppression(
2107+
settings,
2108+
{ { "/* polyspace +3 MISRA2012 : 2.7 */", 1 } },
2109+
{ { "premium-misra-c-2012-2.7", 1, SuppressionList::Type::block, 1, 4 } }
2110+
);
20982111
}
20992112

21002113
void polyspaceBlock() const {
2101-
SuppressionList list;
21022114
Settings settings;
21032115
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);
2116+
testPolyspaceSuppression(
2117+
settings,
2118+
{ { "/* polyspace-begin MISRA2012 : 2.7 */", 1 },
2119+
{ "/* polyspace-end MISRA2012 : 2.7 */", 5 } },
2120+
{ { "premium-misra-c-2012-2.7", 1, SuppressionList::Type::block, 1, 5 } }
2121+
);
21172122
}
21182123
};
21192124

0 commit comments

Comments
 (0)