TestSuite: The ASSERT and ASSERT_EQUALS will now stop executing the test case upon failure. This can be used to avoid extra guard logic in tests.
This commit is contained in:
parent
033640310b
commit
004b4e4dbe
|
@ -134,15 +134,16 @@ static std::string writestr(const std::string &str, bool gccStyle = false)
|
|||
return ostr.str();
|
||||
}
|
||||
|
||||
void TestFixture::assert_(const char * const filename, const unsigned int linenr, const bool condition) const
|
||||
bool TestFixture::assert_(const char * const filename, const unsigned int linenr, const bool condition) const
|
||||
{
|
||||
if (!condition) {
|
||||
++fails_counter;
|
||||
errmsg << getLocationStr(filename, linenr) << ": Assertion failed." << std::endl << "_____" << std::endl;
|
||||
}
|
||||
return condition;
|
||||
}
|
||||
|
||||
void TestFixture::assertEquals(const char * const filename, const unsigned int linenr, const std::string &expected, const std::string &actual, const std::string &msg) const
|
||||
bool TestFixture::assertEquals(const char * const filename, const unsigned int linenr, const std::string &expected, const std::string &actual, const std::string &msg) const
|
||||
{
|
||||
if (expected != actual) {
|
||||
++fails_counter;
|
||||
|
@ -155,6 +156,7 @@ void TestFixture::assertEquals(const char * const filename, const unsigned int l
|
|||
errmsg << "Hint:" << std::endl << msg << std::endl;
|
||||
errmsg << "_____" << std::endl;
|
||||
}
|
||||
return expected == actual;
|
||||
}
|
||||
|
||||
std::string TestFixture::deleteLineNumber(const std::string &message) const
|
||||
|
@ -186,20 +188,20 @@ void TestFixture::assertEqualsWithoutLineNumbers(const char * const filename, co
|
|||
assertEquals(filename, linenr, deleteLineNumber(expected), deleteLineNumber(actual), msg);
|
||||
}
|
||||
|
||||
void TestFixture::assertEquals(const char * const filename, const unsigned int linenr, const char expected[], const std::string& actual, const std::string &msg) const
|
||||
bool TestFixture::assertEquals(const char * const filename, const unsigned int linenr, const char expected[], const std::string& actual, const std::string &msg) const
|
||||
{
|
||||
assertEquals(filename, linenr, std::string(expected), actual, msg);
|
||||
return assertEquals(filename, linenr, std::string(expected), actual, msg);
|
||||
}
|
||||
void TestFixture::assertEquals(const char * const filename, const unsigned int linenr, const char expected[], const char actual[], const std::string &msg) const
|
||||
bool TestFixture::assertEquals(const char * const filename, const unsigned int linenr, const char expected[], const char actual[], const std::string &msg) const
|
||||
{
|
||||
assertEquals(filename, linenr, std::string(expected), std::string(actual), msg);
|
||||
return assertEquals(filename, linenr, std::string(expected), std::string(actual), msg);
|
||||
}
|
||||
void TestFixture::assertEquals(const char * const filename, const unsigned int linenr, const std::string& expected, const char actual[], const std::string &msg) const
|
||||
bool TestFixture::assertEquals(const char * const filename, const unsigned int linenr, const std::string& expected, const char actual[], const std::string &msg) const
|
||||
{
|
||||
assertEquals(filename, linenr, expected, std::string(actual), msg);
|
||||
return assertEquals(filename, linenr, expected, std::string(actual), msg);
|
||||
}
|
||||
|
||||
void TestFixture::assertEquals(const char * const filename, const unsigned int linenr, const long long expected, const long long actual, const std::string &msg) const
|
||||
bool TestFixture::assertEquals(const char * const filename, const unsigned int linenr, const long long expected, const long long actual, const std::string &msg) const
|
||||
{
|
||||
if (expected != actual) {
|
||||
std::ostringstream ostr1;
|
||||
|
@ -208,6 +210,7 @@ void TestFixture::assertEquals(const char * const filename, const unsigned int l
|
|||
ostr2 << actual;
|
||||
assertEquals(filename, linenr, ostr1.str(), ostr2.str(), msg);
|
||||
}
|
||||
return expected == actual;
|
||||
}
|
||||
|
||||
void TestFixture::assertEqualsDouble(const char * const filename, const unsigned int linenr, const double expected, const double actual, const double tolerance, const std::string &msg) const
|
||||
|
|
|
@ -51,14 +51,14 @@ protected:
|
|||
bool prepareTest(const char testname[]);
|
||||
std::string getLocationStr(const char * const filename, const unsigned int linenr) const;
|
||||
|
||||
void assert_(const char * const filename, const unsigned int linenr, const bool condition) const;
|
||||
bool assert_(const char * const filename, const unsigned int linenr, const bool condition) const;
|
||||
|
||||
void assertEquals(const char * const filename, const unsigned int linenr, const std::string &expected, const std::string &actual, const std::string &msg = emptyString) const;
|
||||
bool assertEquals(const char * const filename, const unsigned int linenr, const std::string &expected, const std::string &actual, const std::string &msg = emptyString) const;
|
||||
void assertEqualsWithoutLineNumbers(const char * const filename, const unsigned int linenr, const std::string &expected, const std::string &actual, const std::string &msg = emptyString) const;
|
||||
void assertEquals(const char * const filename, const unsigned int linenr, const char expected[], const std::string& actual, const std::string &msg = emptyString) const;
|
||||
void assertEquals(const char * const filename, const unsigned int linenr, const char expected[], const char actual[], const std::string &msg = emptyString) const;
|
||||
void assertEquals(const char * const filename, const unsigned int linenr, const std::string& expected, const char actual[], const std::string &msg = emptyString) const;
|
||||
void assertEquals(const char * const filename, const unsigned int linenr, const long long expected, const long long actual, const std::string &msg = emptyString) const;
|
||||
bool assertEquals(const char * const filename, const unsigned int linenr, const char expected[], const std::string& actual, const std::string &msg = emptyString) const;
|
||||
bool assertEquals(const char * const filename, const unsigned int linenr, const char expected[], const char actual[], const std::string &msg = emptyString) const;
|
||||
bool assertEquals(const char * const filename, const unsigned int linenr, const std::string& expected, const char actual[], const std::string &msg = emptyString) const;
|
||||
bool assertEquals(const char * const filename, const unsigned int linenr, const long long expected, const long long actual, const std::string &msg = emptyString) const;
|
||||
void assertEqualsDouble(const char * const filename, const unsigned int linenr, const double expected, const double actual, const double tolerance, const std::string &msg = emptyString) const;
|
||||
|
||||
void todoAssertEquals(const char * const filename, const unsigned int linenr, const std::string &wanted,
|
||||
|
@ -98,8 +98,8 @@ extern std::ostringstream errout;
|
|||
extern std::ostringstream output;
|
||||
|
||||
#define TEST_CASE( NAME ) if ( prepareTest(#NAME) ) { setVerbose(false); NAME(); }
|
||||
#define ASSERT( CONDITION ) assert_(__FILE__, __LINE__, CONDITION)
|
||||
#define ASSERT_EQUALS( EXPECTED , ACTUAL ) assertEquals(__FILE__, __LINE__, EXPECTED, ACTUAL)
|
||||
#define ASSERT( CONDITION ) if (!assert_(__FILE__, __LINE__, CONDITION)) return
|
||||
#define ASSERT_EQUALS( EXPECTED , ACTUAL ) if (!assertEquals(__FILE__, __LINE__, EXPECTED, ACTUAL)) return
|
||||
#define ASSERT_EQUALS_WITHOUT_LINENUMBERS( EXPECTED , ACTUAL ) assertEqualsWithoutLineNumbers(__FILE__, __LINE__, EXPECTED, ACTUAL)
|
||||
#define ASSERT_EQUALS_DOUBLE( EXPECTED , ACTUAL, TOLERANCE ) assertEqualsDouble(__FILE__, __LINE__, EXPECTED, ACTUAL, TOLERANCE)
|
||||
#define ASSERT_EQUALS_MSG( EXPECTED , ACTUAL, MSG ) assertEquals(__FILE__, __LINE__, EXPECTED, ACTUAL, MSG)
|
||||
|
@ -108,6 +108,7 @@ extern std::ostringstream output;
|
|||
#define TODO_ASSERT_THROW( CMD, EXCEPTION ) try { CMD ; } catch (const EXCEPTION&) { } catch (...) { assertThrow(__FILE__, __LINE__); }
|
||||
#define TODO_ASSERT( CONDITION ) { const bool condition=(CONDITION); todoAssertEquals(__FILE__, __LINE__, true, false, condition); }
|
||||
#define TODO_ASSERT_EQUALS( WANTED , CURRENT , ACTUAL ) todoAssertEquals(__FILE__, __LINE__, WANTED, CURRENT, ACTUAL)
|
||||
#define EXPECT_EQ( EXPECTED, ACTUAL ) assertEquals(__FILE__, __LINE__, EXPECTED, ACTUAL)
|
||||
#define REGISTER_TEST( CLASSNAME ) namespace { CLASSNAME instance_##CLASSNAME; }
|
||||
|
||||
#ifdef _WIN32
|
||||
|
|
|
@ -189,7 +189,7 @@ private:
|
|||
settings.jointSuppressionReport = true;
|
||||
if (!suppression.empty()) {
|
||||
std::string r = settings.nomsg.addSuppressionLine(suppression);
|
||||
ASSERT_EQUALS("", r);
|
||||
EXPECT_EQ("", r);
|
||||
}
|
||||
|
||||
unsigned int exitCode = 0;
|
||||
|
@ -216,7 +216,7 @@ private:
|
|||
settings.inlineSuppressions = true;
|
||||
settings.addEnabled("information");
|
||||
if (!suppression.empty()) {
|
||||
ASSERT_EQUALS("", settings.nomsg.addSuppressionLine(suppression));
|
||||
EXPECT_EQ("", settings.nomsg.addSuppressionLine(suppression));
|
||||
}
|
||||
ThreadExecutor executor(files, settings, *this);
|
||||
for (std::map<std::string, std::size_t>::const_iterator i = files.begin(); i != files.end(); ++i)
|
||||
|
|
|
@ -5358,54 +5358,85 @@ private:
|
|||
"};");
|
||||
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
ASSERT(db);
|
||||
|
||||
const Token *f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v1 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 4);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(4, f->function()->tokenDef->linenr());
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v2 ) ) ;");
|
||||
if (std::numeric_limits<char>::is_signed)
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 5);
|
||||
else
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 10);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
if (std::numeric_limits<char>::is_signed) {
|
||||
ASSERT_EQUALS(5, f->function()->tokenDef->linenr());
|
||||
} else {
|
||||
ASSERT_EQUALS(10, f->function()->tokenDef->linenr());
|
||||
}
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v3 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 6);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(6, f->function()->tokenDef->linenr());
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v4 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 7);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(7, f->function()->tokenDef->linenr());
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v5 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 8);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(8, f->function()->tokenDef->linenr());
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v6 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 9);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(9, f->function()->tokenDef->linenr());
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v7 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 10);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(10, f->function()->tokenDef->linenr());
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v8 ) ) ;");
|
||||
if (std::numeric_limits<char>::is_signed)
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 5);
|
||||
else
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 10);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
if (std::numeric_limits<char>::is_signed) {
|
||||
ASSERT_EQUALS(5, f->function()->tokenDef->linenr());
|
||||
} else {
|
||||
ASSERT_EQUALS(10, f->function()->tokenDef->linenr());
|
||||
}
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v9 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 12);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(12, f->function()->tokenDef->linenr());
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v10 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 13);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(13, f->function()->tokenDef->linenr());
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v11 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 14);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(14, f->function()->tokenDef->linenr());
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v12 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 15);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(15, f->function()->tokenDef->linenr());
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v13 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 16);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(16, f->function()->tokenDef->linenr());
|
||||
|
||||
f = Token::findsimplematch(tokenizer.tokens(), "get ( get ( v14 ) ) ;");
|
||||
ASSERT_EQUALS(true, db && f && f->function() && f->function()->tokenDef->linenr() == 17);
|
||||
ASSERT(f);
|
||||
ASSERT(f->function());
|
||||
ASSERT_EQUALS(17, f->function()->tokenDef->linenr());
|
||||
}
|
||||
|
||||
void findFunction20() { // # 8280
|
||||
|
|
|
@ -81,10 +81,11 @@ private:
|
|||
CheckUnusedFunctions checkUnusedFunctions(&tokenizer, &settings, this);
|
||||
checkUnusedFunctions.parseTokens(tokenizer, "someFile.c", &settings);
|
||||
// check() returns error if and only if errout is not empty.
|
||||
if (checkUnusedFunctions.check(this, settings))
|
||||
if (checkUnusedFunctions.check(this, settings)) {
|
||||
ASSERT(errout.str() != "");
|
||||
else
|
||||
} else {
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
}
|
||||
|
||||
void incondition() {
|
||||
|
|
Loading…
Reference in New Issue