diff --git a/Tests/Log/logDebug.cpp b/Tests/Log/logDebug.cpp new file mode 100644 index 0000000..2c751e2 --- /dev/null +++ b/Tests/Log/logDebug.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2021-2024 by Geoffrey Merck F4FXL / KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include + +#include "Log.h" +#include "LogSeverity.h" +#include "FakeLogTarget.h" + +using ::testing::EndsWith; + +namespace LogDebugTests +{ + class Log_logDebug: public ::testing::Test { + protected: + CFakeLogTarget * m_logTarget; + + void SetUp() override + { + m_logTarget = new CFakeLogTarget(LOG_DEBUG); + CLog::addTarget((CLogTarget *)m_logTarget); + } + + void TearDown() override + { + CLog::finalise(); + } + }; + + TEST_F(Log_logDebug, PutError) { + CLog::logError("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[ERROR ] One Message\n")); + } + + TEST_F(Log_logDebug, PutDebug) { + CLog::logDebug("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be no message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[DEBUG ] One Message\n")); + } + + TEST_F(Log_logDebug, PutInfo) { + CLog::logInfo("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be no message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[INFO ] One Message\n")); + } + + TEST_F(Log_logDebug, PutWarning) { + CLog::logWarning("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[WARNING] One Message\n")); + } + + TEST_F(Log_logDebug, PutTrace) { + CLog::logTrace("One Message"); + + EXPECT_EQ(0, m_logTarget->m_messages.size()) << "There should be no message in the log."; + } +} \ No newline at end of file diff --git a/Tests/Log/logError.cpp b/Tests/Log/logError.cpp index f2c7da8..2c5fa3e 100644 --- a/Tests/Log/logError.cpp +++ b/Tests/Log/logError.cpp @@ -43,52 +43,34 @@ namespace LogErrorTests } }; - TEST_F(Log_logError, OneMessage) { + TEST_F(Log_logError, PutError) { CLog::logError("One Message"); EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[ERROR ] One Message\n")); } - TEST_F(Log_logError, WrongLevel) { + TEST_F(Log_logError, PutDebug) { CLog::logDebug("One Message"); EXPECT_EQ(0, m_logTarget->m_messages.size()) << "There should be no message in the log."; } - TEST_F(Log_logError, TwoMessage) { - CLog::logError("One Message"); - CLog::logError("Two Message"); + TEST_F(Log_logError, PutInfo) { + CLog::logInfo("One Message"); - EXPECT_EQ(2, m_logTarget->m_messages.size()) << "There should be exactly two message in the log."; - EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[ERROR ] One Message\n")); - EXPECT_THAT(m_logTarget->m_messages[1].c_str(), EndsWith("[ERROR ] Two Message\n")); + EXPECT_EQ(0, m_logTarget->m_messages.size()) << "There should be no message in the log."; } - TEST_F(Log_logError, ThreeIdenticalMessage) { - CLog::logError("One Message"); - CLog::logError("One Message"); - CLog::logError("One Message"); + TEST_F(Log_logError, PutWarning) { + CLog::logWarning("One Message"); - EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; - EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[ERROR ] One Message\n")); + EXPECT_EQ(0, m_logTarget->m_messages.size()) << "There should be no message in the log."; } - TEST_F(Log_logError, NineIdenticalMessageOneDifferent) { - CLog::logError("One Message"); - CLog::logError("One Message"); - CLog::logError("One Message"); - CLog::logError("One Message"); - CLog::logError("One Message"); - CLog::logError("One Message"); - CLog::logError("One Message"); - CLog::logError("One Message"); - CLog::logError("One Message"); - CLog::logError("Another Message"); + TEST_F(Log_logError, PutTrace) { + CLog::logTrace("One Message"); - EXPECT_EQ(3, m_logTarget->m_messages.size()) << "There should be two message in the log."; - EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[ERROR ] One Message\n")); - EXPECT_THAT(m_logTarget->m_messages[1].c_str(), EndsWith("[ERROR ] Previous message repeated 8 times\n")); - EXPECT_THAT(m_logTarget->m_messages[2].c_str(), EndsWith("[ERROR ] Another Message\n")); + EXPECT_EQ(0, m_logTarget->m_messages.size()) << "There should be no message in the log."; } } \ No newline at end of file diff --git a/Tests/Log/logInfo.cpp b/Tests/Log/logInfo.cpp new file mode 100644 index 0000000..96f28fd --- /dev/null +++ b/Tests/Log/logInfo.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2021-2024 by Geoffrey Merck F4FXL / KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include + +#include "Log.h" +#include "LogSeverity.h" +#include "FakeLogTarget.h" + +using ::testing::EndsWith; + +namespace LogInfoTests +{ + class Log_logInfo: public ::testing::Test { + protected: + CFakeLogTarget * m_logTarget; + + void SetUp() override + { + m_logTarget = new CFakeLogTarget(LOG_INFO); + CLog::addTarget((CLogTarget *)m_logTarget); + } + + void TearDown() override + { + CLog::finalise(); + } + }; + + TEST_F(Log_logInfo, PutError) { + CLog::logError("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[ERROR ] One Message\n")); + } + + TEST_F(Log_logInfo, PutDebug) { + CLog::logDebug("One Message"); + + EXPECT_EQ(0, m_logTarget->m_messages.size()) << "There should be no message in the log."; + } + + TEST_F(Log_logInfo, PutInfo) { + CLog::logInfo("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[INFO ] One Message\n")); + } + + TEST_F(Log_logInfo, PutWarning) { + CLog::logWarning("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[WARNING] One Message\n")); + } + + TEST_F(Log_logInfo, PutTrace) { + CLog::logTrace("One Message"); + + EXPECT_EQ(0, m_logTarget->m_messages.size()) << "There should be no message in the log."; + } +} \ No newline at end of file diff --git a/Tests/Log/logRepeat.cpp b/Tests/Log/logRepeat.cpp new file mode 100644 index 0000000..23ec4c9 --- /dev/null +++ b/Tests/Log/logRepeat.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2021-2024 by Geoffrey Merck F4FXL / KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include + +#include "Log.h" +#include "LogSeverity.h" +#include "FakeLogTarget.h" + +using ::testing::EndsWith; + +namespace LogRepeatTests +{ + class LogRepeat: public ::testing::Test { + protected: + CFakeLogTarget * m_logTarget; + + void SetUp() override + { + m_logTarget = new CFakeLogTarget(LOG_ERROR); + CLog::addTarget((CLogTarget *)m_logTarget); + } + + void TearDown() override + { + CLog::finalise(); + } + }; + + TEST_F(LogRepeat, TwoMessage) { + CLog::logError("One Message"); + CLog::logError("Two Message"); + + EXPECT_EQ(2, m_logTarget->m_messages.size()) << "There should be exactly two message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[ERROR ] One Message\n")); + EXPECT_THAT(m_logTarget->m_messages[1].c_str(), EndsWith("[ERROR ] Two Message\n")); + } + + TEST_F(LogRepeat, ThreeIdenticalMessage) { + CLog::logError("One Message"); + CLog::logError("One Message"); + CLog::logError("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[ERROR ] One Message\n")); + } + + TEST_F(LogRepeat, NineIdenticalMessageOneDifferent) { + CLog::logError("One Message"); + CLog::logError("One Message"); + CLog::logError("One Message"); + CLog::logError("One Message"); + CLog::logError("One Message"); + CLog::logError("One Message"); + CLog::logError("One Message"); + CLog::logError("One Message"); + CLog::logError("One Message"); + CLog::logError("Another Message"); + + EXPECT_EQ(3, m_logTarget->m_messages.size()) << "There should be two message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[ERROR ] One Message\n")); + EXPECT_THAT(m_logTarget->m_messages[1].c_str(), EndsWith("[ERROR ] Previous message repeated 8 times\n")); + EXPECT_THAT(m_logTarget->m_messages[2].c_str(), EndsWith("[ERROR ] Another Message\n")); + } +} \ No newline at end of file diff --git a/Tests/Log/logTrace.cpp b/Tests/Log/logTrace.cpp new file mode 100644 index 0000000..4b725bb --- /dev/null +++ b/Tests/Log/logTrace.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2021-2024 by Geoffrey Merck F4FXL / KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include + +#include "Log.h" +#include "LogSeverity.h" +#include "FakeLogTarget.h" + +using ::testing::EndsWith; + +namespace LogTraceTests +{ + class Log_logTrace: public ::testing::Test { + protected: + CFakeLogTarget * m_logTarget; + + void SetUp() override + { + m_logTarget = new CFakeLogTarget(LOG_TRACE); + CLog::addTarget((CLogTarget *)m_logTarget); + } + + void TearDown() override + { + CLog::finalise(); + } + }; + + TEST_F(Log_logTrace, PutError) { + CLog::logError("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[ERROR ] One Message\n")); + } + + TEST_F(Log_logTrace, PutDebug) { + CLog::logDebug("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[DEBUG ] One Message\n")); + } + + TEST_F(Log_logTrace, PutInfo) { + CLog::logInfo("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[INFO ] One Message\n")); + } + + TEST_F(Log_logTrace, PutWarning) { + CLog::logWarning("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[WARNING] One Message\n")); + } + + TEST_F(Log_logTrace, PutTrace) { + CLog::logTrace("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[TRACE ] One Message\n")); + } +} \ No newline at end of file diff --git a/Tests/Log/logWarning.cpp b/Tests/Log/logWarning.cpp new file mode 100644 index 0000000..62938d0 --- /dev/null +++ b/Tests/Log/logWarning.cpp @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2021-2024 by Geoffrey Merck F4FXL / KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include + +#include "Log.h" +#include "LogSeverity.h" +#include "FakeLogTarget.h" + +using ::testing::EndsWith; + +namespace LogWarningTests +{ + class Log_logWarning: public ::testing::Test { + protected: + CFakeLogTarget * m_logTarget; + + void SetUp() override + { + m_logTarget = new CFakeLogTarget(LOG_WARNING); + CLog::addTarget((CLogTarget *)m_logTarget); + } + + void TearDown() override + { + CLog::finalise(); + } + }; + + TEST_F(Log_logWarning, PutError) { + CLog::logError("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[ERROR ] One Message\n")); + } + + TEST_F(Log_logWarning, PutDebug) { + CLog::logDebug("One Message"); + + EXPECT_EQ(0, m_logTarget->m_messages.size()) << "There should be no message in the log."; + } + + TEST_F(Log_logWarning, PutInfo) { + CLog::logInfo("One Message"); + + EXPECT_EQ(0, m_logTarget->m_messages.size()) << "There should be no message in the log."; + } + + TEST_F(Log_logWarning, PutWarning) { + CLog::logWarning("One Message"); + + EXPECT_EQ(1, m_logTarget->m_messages.size()) << "There should be one message in the log."; + EXPECT_THAT(m_logTarget->m_messages[0].c_str(), EndsWith("[WARNING] One Message\n")); + } + + TEST_F(Log_logWarning, PutTrace) { + CLog::logTrace("One Message"); + + EXPECT_EQ(0, m_logTarget->m_messages.size()) << "There should be no message in the log."; + } +} \ No newline at end of file