From d6e78d15eaf820a1a5178538f95e5b3911793cf0 Mon Sep 17 00:00:00 2001 From: Kevin Traini Date: Sun, 16 Jul 2023 18:05:06 +0200 Subject: [PATCH] Add enum for message level and fix how level works --- src/lib/FilCompiler.cpp | 4 ++-- src/lib/message/Error.h | 2 +- src/lib/message/Message.cpp | 6 +++--- src/lib/message/Message.h | 15 ++++++++++++--- src/lib/message/MessageCollector.cpp | 4 ++-- src/lib/message/MessageCollector.h | 6 +++--- src/lib/message/Warning.h | 2 +- tests/unit/message/MessageCollectorTest.cpp | 10 +++++----- tests/unit/message/MessageTest.cpp | 8 ++++---- 9 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/lib/FilCompiler.cpp b/src/lib/FilCompiler.cpp index 779b5a79..74acfa55 100644 --- a/src/lib/FilCompiler.cpp +++ b/src/lib/FilCompiler.cpp @@ -32,7 +32,7 @@ namespace filc { FilCompiler::FilCompiler(utils::OptionsParser options) : _options(std::move(options)) { - message::MessageCollector::getCollector(_options.getVerbose()); + message::MessageCollector::getCollector((filc::message::LEVEL) _options.getVerbose()); } auto FilCompiler::compile() -> int { @@ -48,7 +48,7 @@ namespace filc { return true; } catch (std::exception &e) { - collector->addError(new filc::message::BasicError(5, e.what())); + collector->addError(new filc::message::BasicError(filc::message::FATAL_ERROR, e.what())); return false; } diff --git a/src/lib/message/Error.h b/src/lib/message/Error.h index 93eafcbb..8a1691ba 100644 --- a/src/lib/message/Error.h +++ b/src/lib/message/Error.h @@ -30,7 +30,7 @@ namespace filc::message { class BasicError : public Message { public: - BasicError(uint level, std::string content) : Message(level, std::move(content)) {} + BasicError(LEVEL level, std::string content) : Message(level, std::move(content)) {} auto print(std::ostream &out) -> std::ostream & override; }; diff --git a/src/lib/message/Message.cpp b/src/lib/message/Message.cpp index 8ec17f93..50fc68df 100644 --- a/src/lib/message/Message.cpp +++ b/src/lib/message/Message.cpp @@ -24,10 +24,10 @@ #include "Message.h" #include -constexpr uint MAX_LEVEL = 5; +constexpr filc::message::LEVEL MAX_LEVEL = filc::message::SYSTEM; namespace filc::message { - Message::Message(uint level, std::string content) + Message::Message(LEVEL level, std::string content) : _level(level <= MAX_LEVEL ? level : MAX_LEVEL), _content(std::move(content)), _printed(false) {} auto Message::print(std::ostream &out) -> std::ostream & { @@ -41,7 +41,7 @@ namespace filc::message { return out; } - auto Message::getLevel() const -> uint { + auto Message::getLevel() const -> LEVEL { return _level; } } diff --git a/src/lib/message/Message.h b/src/lib/message/Message.h index 7cc9da9c..73d78f89 100644 --- a/src/lib/message/Message.h +++ b/src/lib/message/Message.h @@ -28,18 +28,27 @@ #include namespace filc::message { + using LEVEL = enum LEVEL { + SYSTEM = 5, + INFO = 4, + DEBUG = 3, + WARNING = 2, + ERROR = 1, + FATAL_ERROR = 0, + }; + class Message { public: - Message(uint level, std::string content); + Message(LEVEL level, std::string content); virtual ~Message() = default; virtual auto print(std::ostream &out) -> std::ostream &; - auto getLevel() const -> uint; + auto getLevel() const -> LEVEL; protected: - uint _level; + LEVEL _level; std::string _content; bool _printed; }; diff --git a/src/lib/message/MessageCollector.cpp b/src/lib/message/MessageCollector.cpp index c2e505e5..143477f2 100644 --- a/src/lib/message/MessageCollector.cpp +++ b/src/lib/message/MessageCollector.cpp @@ -25,7 +25,7 @@ #include namespace filc::message { - MessageCollector::MessageCollector(uint level) + MessageCollector::MessageCollector(LEVEL level) : _level(level) {} MessageCollector::~MessageCollector() { @@ -81,7 +81,7 @@ namespace filc::message { return *this; } - auto MessageCollector::getCollector(uint level) -> MessageCollector * { + auto MessageCollector::getCollector(LEVEL level) -> MessageCollector * { static auto *collector = new MessageCollector(level); return collector; diff --git a/src/lib/message/MessageCollector.h b/src/lib/message/MessageCollector.h index 7ded3f9a..f29362f3 100644 --- a/src/lib/message/MessageCollector.h +++ b/src/lib/message/MessageCollector.h @@ -30,7 +30,7 @@ namespace filc::message { class MessageCollector { public: - explicit MessageCollector(uint level); + explicit MessageCollector(LEVEL level); ~MessageCollector(); @@ -46,10 +46,10 @@ namespace filc::message { auto printErrors() -> MessageCollector &; - static auto getCollector(uint level = 0) -> MessageCollector *; + static auto getCollector(LEVEL level = FATAL_ERROR) -> MessageCollector *; private: - uint _level; + LEVEL _level; std::vector _messages; std::vector _errors; }; diff --git a/src/lib/message/Warning.h b/src/lib/message/Warning.h index 2959e50a..40c1aa77 100644 --- a/src/lib/message/Warning.h +++ b/src/lib/message/Warning.h @@ -30,7 +30,7 @@ namespace filc::message { class BasicWarning : public Message { public: - BasicWarning(uint level, std::string content) : Message(level, std::move(content)) {} + BasicWarning(LEVEL level, std::string content) : Message(level, std::move(content)) {} auto print(std::ostream &out) -> std::ostream & override; }; diff --git a/tests/unit/message/MessageCollectorTest.cpp b/tests/unit/message/MessageCollectorTest.cpp index 7a676b0d..a0dfd30e 100644 --- a/tests/unit/message/MessageCollectorTest.cpp +++ b/tests/unit/message/MessageCollectorTest.cpp @@ -29,7 +29,7 @@ TEST(MessageCollector, getCollector) { auto *collector2 = filc::message::MessageCollector::getCollector(); ASSERT_EQ(collector1, collector2); - collector1->addMessage(new filc::message::Message(1, "Hello")); + collector1->addMessage(new filc::message::Message(filc::message::INFO, "Hello")); ASSERT_TRUE(collector1->hasMessages()); ASSERT_TRUE(collector2->hasMessages()); @@ -40,7 +40,7 @@ TEST(MessageCollector, hasMessages) { ASSERT_FALSE(collector->hasMessages()); ASSERT_FALSE(collector->hasErrors()); - collector->addMessage(new filc::message::Message(1, "Hello")); + collector->addMessage(new filc::message::Message(filc::message::INFO, "Hello")); ASSERT_TRUE(collector->hasMessages()); ASSERT_FALSE(collector->hasErrors()); } @@ -50,14 +50,14 @@ TEST(MessageCollector, hasErrors) { ASSERT_FALSE(collector->hasMessages()); ASSERT_FALSE(collector->hasErrors()); - collector->addError(new filc::message::Message(1, "Hello")); + collector->addError(new filc::message::Message(filc::message::INFO, "Hello")); ASSERT_FALSE(collector->hasMessages()); ASSERT_TRUE(collector->hasErrors()); } TEST(MessageCollector, printMessages) { auto *collector = filc::message::MessageCollector::getCollector(); - collector->addMessage(new filc::message::Message(1, "Hello")); + collector->addMessage(new filc::message::Message(filc::message::INFO, "Hello")); collector->printMessages(); ASSERT_FALSE(collector->hasMessages()); @@ -65,7 +65,7 @@ TEST(MessageCollector, printMessages) { TEST(MessageCollector, printErrors) { auto *collector = filc::message::MessageCollector::getCollector(); - collector->addError(new filc::message::Message(1, "Hello")); + collector->addError(new filc::message::Message(filc::message::INFO, "Hello")); collector->printErrors(); ASSERT_FALSE(collector->hasErrors()); diff --git a/tests/unit/message/MessageTest.cpp b/tests/unit/message/MessageTest.cpp index d90f2154..fefcd25a 100644 --- a/tests/unit/message/MessageTest.cpp +++ b/tests/unit/message/MessageTest.cpp @@ -36,19 +36,19 @@ auto getMessageContent(filc::message::Message &message) -> std::string { TEST(Message, constructor) { std::string expected = "My message"; - auto message = filc::message::Message(4, expected); - ASSERT_EQ(4, message.getLevel()); + auto message = filc::message::Message(filc::message::WARNING, expected); + ASSERT_EQ(filc::message::WARNING, message.getLevel()); ASSERT_STREQ(expected.c_str(), getMessageContent(message).c_str()); expected = "My message 2"; - message = filc::message::Message(9, expected); + message = filc::message::Message((filc::message::LEVEL) 9, expected); ASSERT_EQ(5, message.getLevel()); ASSERT_STREQ(expected.c_str(), getMessageContent(message).c_str()); } TEST(Message, print) { std::string expected = "My message"; - auto message = filc::message::Message(4, expected); + auto message = filc::message::Message(filc::message::WARNING, expected); ASSERT_STREQ(expected.c_str(), getMessageContent(message).c_str()); ASSERT_STREQ("", getMessageContent(message).c_str()); } \ No newline at end of file