- ////////////////////////////////////////////////////////////////////////////////
- //
- // Assert
- //
-
- #include <sstream>
-
- #include <kcpp_assert.hpp>
-
- #undef assertEquals
- #undef assertTrue
- #undef assertFalse
- #undef assertNull
- #undef assertNotNull
- #undef fail
-
- namespace kcpp
- {
-
- AssertError::AssertError() noexcept : Error(), errorFile(""), errorFunc(""), errorLine(0)
- {
- // NOP
- }
-
- AssertError::AssertError(const AssertError& t) noexcept : Error(t), errorFile(t.errorFile), errorFunc(t.errorFunc), errorLine(t.errorLine)
- {
- // NOP
- }
-
- AssertError::AssertError(const std::string& msg) noexcept : Error(msg), errorFile(""), errorFunc(""), errorLine(0)
- {
- // NOP
- }
-
- AssertError::AssertError(const std::string& msg, const char* file, const char* func, int line) noexcept
- : Error(msg), errorFile(file), errorFunc(func), errorLine(line)
- {
- // NOP
- }
-
- AssertError::~AssertError() noexcept
- {
- // NOP
- }
-
- const std::string& AssertError::getFile() const noexcept
- {
- return errorFile;
- }
-
- const std::string& AssertError::getFunc() const noexcept
- {
- return errorFunc;
- }
-
- int AssertError::getLine() const noexcept
- {
- return errorLine;
- }
-
-
- namespace Assert
- {
- void assertEquals(bool expected, bool actual, const char* file, const char* func, int line)
- {
- if (expected != actual)
- {
- const char* msg = (expected)
- ? "expected:<true> but was:<false>"
- : "expected:<false> but was:<true>";
- throw AssertError(msg, file, func, line);
- }
- }
-
- void assertEquals(char expected, char actual, const char* file, const char* func, int line)
- {
- if (expected != actual)
- {
- std::ostringstream msg;
- msg << "expected:<" << expected << "> but was:<" << actual << ">";
- throw AssertError(msg.str(), file, func, line);
- }
- }
-
- void assertEquals(int expected, int actual, const char* file, const char* func, int line)
- {
- if (expected != actual)
- {
- std::ostringstream msg;
- msg << "expected:<" << expected << "> but was:<" << actual << ">";
- throw AssertError(msg.str(), file, func, line);
- }
- }
-
- void assertEquals(long expected, long actual, const char* file, const char* func, int line)
- {
- if (expected != actual)
- {
- std::ostringstream msg;
- msg << "expected:<" << expected << "> but was:<" << actual << ">";
- throw AssertError(msg.str(), file, func, line);
- }
- }
-
- void assertEquals(double expected, double actual, const char* file, const char* func, int line)
- {
- if (expected != actual)
- {
- std::ostringstream msg;
- msg << "expected:<" << expected << "> but was:<" << actual << ">";
- throw AssertError(msg.str(), file, func, line);
- }
- }
-
- void assertEquals(const std::string& expected, const std::string& actual, const char* file, const char* func, int line)
- {
- if (expected != actual)
- {
- std::ostringstream msg;
- msg << "expected:<" << expected << "> but was:<" << actual << ">";
- throw AssertError(msg.str(), file, func, line);
- }
- }
-
- void assertEquals(const char* expected, const std::string& actual, const char* file, const char* func, int line)
- {
- std::string expectedStr = expected;
- assertEquals(expectedStr, actual, file, func, line);
- }
-
- void assertEquals(const std::string& expected, const char* actual, const char* file, const char* func, int line)
- {
- std::string actualStr = actual;
- assertEquals(expected, actualStr, file, func, line);
- }
-
- void assertEquals(const char* expected, const char* actual, const char* file, const char* func, int line)
- {
- std::string expectedStr = expected;
- std::string actualStr = actual;
- assertEquals(expectedStr, actualStr, file, func, line);
- }
-
- void assertTrue(bool condition, const char* file, const char* func, int line)
- {
- assertEquals(true, condition, file, func, line);
- }
-
- void assertFalse(bool condition, const char* file, const char* func, int line)
- {
- assertEquals(false, condition, file, func, line);
- }
-
- void assertNull(void* obj, const char* file, const char* func, int line)
- {
- if (obj != nullptr)
- {
- throw AssertError("expected:<null> but was:<not null>", file, func, line);
- }
- }
-
- void assertNotNull(void* obj, const char* file, const char* func, int line)
- {
- if (obj == nullptr)
- {
- throw AssertError("expected:<not null> but was:<not>", file, func, line);
- }
- }
-
- void fail(const char* file, const char* func, int line)
- {
- throw AssertError("fail()", file, func, line);
- }
-
- }
-
- }