#include <iostream>
#include <sstream>
#include <cstring>
#include <j/lang/assertion_error.hpp>
#include <j/cppunit/assert.hpp>
namespace j
{
namespace cppunit
{
namespace Assert
{
// オーバーロード: const char*
void _assertEqualsImpl(const char *expected, const char *actual,
const char *file, const char *func, int line)
{
if (std::strcmp(expected, actual) != 0)
{
std::ostringstream msg;
msg << "expected <" << expected << "> but was: <" << actual << ">";
throw lang::AssertionError(msg.str(), file, func, line);
}
}
// float, double 用
void _assertEqualsFloatImpl(const double &expected, const double &actual, const double &delta,
const char *file, const char *func, int line)
{
bool isSuccess = (std::fabs(expected - actual) < delta);
if (!isSuccess)
{
std::ostringstream msg;
msg << "expected <" << expected << "> but was: <" << actual << "> (delta = " << delta << ")";
throw lang::AssertionError(msg.str(), file, func, line);
}
}
void _assertTrueImpl(bool condition, const char *file, const char *func, int line)
{
if (!condition)
{
throw lang::AssertionError("expected <true> but was: <false>", file, func, line);
}
}
void _assertFalseImpl(bool condition, const char *file, const char *func, int line)
{
if (condition)
{
throw lang::AssertionError("expected <false> but was: <true>", file, func, line);
}
}
void _assertNullImpl(void *obj, const char *file, const char *func, int line)
{
if (obj != nullptr)
{
throw lang::AssertionError("expected <nullptr> but was: <not nullptr>", file, func, line);
}
}
void _assertNotNullImpl(void *obj, const char *file, const char *func, int line)
{
if (obj == nullptr)
{
throw lang::AssertionError("expected <not null> but was: <nullptr>", file, func, line);
}
}
void _failImpl(const char *file, const char *func, int line)
{
throw lang::AssertionError("fail()", file, func, line);
}
} // namespace Assert
} // namespace cppunit
} // namespace j