mirror of
https://github.com/unittest-cpp/unittest-cpp
synced 2026-09-27 00:28:49 +03:00
Extract separate condition functions for all checks
This will be used to implement new check macros that allow custom failure descriptions
This commit is contained in:
parent
f0b4338b48
commit
dbb24b225c
2 changed files with 57 additions and 10 deletions
|
|
@ -5,12 +5,17 @@ namespace UnitTest {
|
|||
|
||||
namespace {
|
||||
|
||||
bool StringsAreEqual(char const* expected, char const* actual)
|
||||
{
|
||||
return !((expected && actual) ? strcmp(expected, actual) : (expected || actual));
|
||||
}
|
||||
|
||||
void CheckStringsEqual(TestResults& results, char const* expected, char const* actual,
|
||||
TestDetails const& details)
|
||||
{
|
||||
using namespace std;
|
||||
|
||||
if ((expected && actual) ? strcmp(expected, actual) : (expected || actual))
|
||||
if (!StringsAreEqual(expected, actual))
|
||||
{
|
||||
UnitTest::MemoryOutStream stream;
|
||||
stream << "Expected " << (expected ? expected : "<NULLPTR>") << " but was " << (actual ? actual : "<NULLPTR>");
|
||||
|
|
@ -21,6 +26,10 @@ void CheckStringsEqual(TestResults& results, char const* expected, char const* a
|
|||
|
||||
}
|
||||
|
||||
bool AreEqual(char const* expected, char const* actual)
|
||||
{
|
||||
return StringsAreEqual(expected, actual);
|
||||
}
|
||||
|
||||
void CheckEqual(TestResults& results, char const* expected, char const* actual,
|
||||
TestDetails const& details)
|
||||
|
|
@ -28,11 +37,20 @@ void CheckEqual(TestResults& results, char const* expected, char const* actual,
|
|||
CheckStringsEqual(results, expected, actual, details);
|
||||
}
|
||||
|
||||
bool AreEqual(char* expected, char* actual)
|
||||
{
|
||||
return StringsAreEqual(expected, actual);
|
||||
}
|
||||
|
||||
void CheckEqual(TestResults& results, char* expected, char* actual,
|
||||
TestDetails const& details)
|
||||
{
|
||||
CheckStringsEqual(results, expected, actual, details);
|
||||
}
|
||||
bool AreEqual(char* expected, char const* actual)
|
||||
{
|
||||
return StringsAreEqual(expected, actual);
|
||||
}
|
||||
|
||||
void CheckEqual(TestResults& results, char* expected, char const* actual,
|
||||
TestDetails const& details)
|
||||
|
|
@ -40,11 +58,15 @@ void CheckEqual(TestResults& results, char* expected, char const* actual,
|
|||
CheckStringsEqual(results, expected, actual, details);
|
||||
}
|
||||
|
||||
bool AreEqual(char const* expected, char* actual)
|
||||
{
|
||||
return StringsAreEqual(expected, actual);
|
||||
}
|
||||
|
||||
void CheckEqual(TestResults& results, char const* expected, char* actual,
|
||||
TestDetails const& details)
|
||||
{
|
||||
CheckStringsEqual(results, expected, actual, details);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,10 +15,16 @@ bool Check(Value const value)
|
|||
}
|
||||
|
||||
|
||||
template< typename Expected, typename Actual >
|
||||
bool AreEqual(Expected const& expected, Actual const& actual)
|
||||
{
|
||||
return expected == actual;
|
||||
}
|
||||
|
||||
template< typename Expected, typename Actual >
|
||||
void CheckEqual(TestResults& results, Expected const& expected, Actual const& actual, TestDetails const& details)
|
||||
{
|
||||
if (!(expected == actual))
|
||||
if (!AreEqual(expected, actual))
|
||||
{
|
||||
UnitTest::MemoryOutStream stream;
|
||||
stream << "Expected " << expected << " but was " << actual;
|
||||
|
|
@ -27,14 +33,19 @@ void CheckEqual(TestResults& results, Expected const& expected, Actual const& ac
|
|||
}
|
||||
}
|
||||
|
||||
UNITTEST_LINKAGE bool AreEqual(char const* expected, char const* actual);
|
||||
UNITTEST_LINKAGE void CheckEqual(TestResults& results, char const* expected, char const* actual, TestDetails const& details);
|
||||
|
||||
UNITTEST_LINKAGE bool AreEqual(char* expected, char* actual);
|
||||
UNITTEST_LINKAGE void CheckEqual(TestResults& results, char* expected, char* actual, TestDetails const& details);
|
||||
|
||||
UNITTEST_LINKAGE bool AreEqual(char* expected, char const* actual);
|
||||
UNITTEST_LINKAGE void CheckEqual(TestResults& results, char* expected, char const* actual, TestDetails const& details);
|
||||
|
||||
UNITTEST_LINKAGE bool AreEqual(char const* expected, char* actual);
|
||||
UNITTEST_LINKAGE void CheckEqual(TestResults& results, char const* expected, char* actual, TestDetails const& details);
|
||||
|
||||
|
||||
template< typename Expected, typename Actual, typename Tolerance >
|
||||
bool AreClose(Expected const& expected, Actual const& actual, Tolerance const& tolerance)
|
||||
{
|
||||
|
|
@ -54,16 +65,21 @@ void CheckClose(TestResults& results, Expected const& expected, Actual const& ac
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
template< typename Expected, typename Actual >
|
||||
void CheckArrayEqual(TestResults& results, Expected const& expected, Actual const& actual,
|
||||
int const count, TestDetails const& details)
|
||||
bool ArrayAreEqual(Expected const& expected, Actual const& actual, int const count)
|
||||
{
|
||||
bool equal = true;
|
||||
for (int i = 0; i < count; ++i)
|
||||
equal &= (expected[i] == actual[i]);
|
||||
|
||||
if (!equal)
|
||||
return equal;
|
||||
}
|
||||
|
||||
template< typename Expected, typename Actual >
|
||||
void CheckArrayEqual(TestResults& results, Expected const& expected, Actual const& actual,
|
||||
int const count, TestDetails const& details)
|
||||
{
|
||||
if (!ArrayAreEqual(expected, actual, count))
|
||||
{
|
||||
UnitTest::MemoryOutStream stream;
|
||||
|
||||
|
|
@ -115,15 +131,24 @@ void CheckArrayClose(TestResults& results, Expected const& expected, Actual cons
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
template< typename Expected, typename Actual, typename Tolerance >
|
||||
void CheckArray2DClose(TestResults& results, Expected const& expected, Actual const& actual,
|
||||
int const rows, int const columns, Tolerance const& tolerance, TestDetails const& details)
|
||||
bool Array2DAreClose(Expected const& expected, Actual const& actual,
|
||||
int const rows, int const columns, Tolerance const& tolerance)
|
||||
{
|
||||
bool equal = true;
|
||||
for (int i = 0; i < rows; ++i)
|
||||
equal &= ArrayAreClose(expected[i], actual[i], columns, tolerance);
|
||||
|
||||
if (!equal)
|
||||
return equal;
|
||||
}
|
||||
|
||||
template< typename Expected, typename Actual, typename Tolerance >
|
||||
void CheckArray2DClose(TestResults& results, Expected const& expected, Actual const& actual,
|
||||
int const rows, int const columns, Tolerance const& tolerance, TestDetails const& details)
|
||||
{
|
||||
|
||||
if (!Array2DAreClose(expected, actual, rows, columns, tolerance))
|
||||
{
|
||||
UnitTest::MemoryOutStream stream;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue