Skip to content
This repository has been archived by the owner on Jun 29, 2024. It is now read-only.

Commit

Permalink
Add enum for message level and fix how level works
Browse files Browse the repository at this point in the history
  • Loading branch information
Gashmob committed Jul 16, 2023
1 parent cd4bbee commit d6e78d1
Show file tree
Hide file tree
Showing 9 changed files with 33 additions and 24 deletions.
4 changes: 2 additions & 2 deletions src/lib/FilCompiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion src/lib/message/Error.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
Expand Down
6 changes: 3 additions & 3 deletions src/lib/message/Message.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@
#include "Message.h"
#include <utility>

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 & {
Expand All @@ -41,7 +41,7 @@ namespace filc::message {
return out;
}

auto Message::getLevel() const -> uint {
auto Message::getLevel() const -> LEVEL {
return _level;
}
}
Expand Down
15 changes: 12 additions & 3 deletions src/lib/message/Message.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,27 @@
#include <iostream>

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;
};
Expand Down
4 changes: 2 additions & 2 deletions src/lib/message/MessageCollector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#include <algorithm>

namespace filc::message {
MessageCollector::MessageCollector(uint level)
MessageCollector::MessageCollector(LEVEL level)
: _level(level) {}

MessageCollector::~MessageCollector() {
Expand Down Expand Up @@ -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;
Expand Down
6 changes: 3 additions & 3 deletions src/lib/message/MessageCollector.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
namespace filc::message {
class MessageCollector {
public:
explicit MessageCollector(uint level);
explicit MessageCollector(LEVEL level);

~MessageCollector();

Expand All @@ -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<Message *> _messages;
std::vector<Message *> _errors;
};
Expand Down
2 changes: 1 addition & 1 deletion src/lib/message/Warning.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
Expand Down
10 changes: 5 additions & 5 deletions tests/unit/message/MessageCollectorTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand All @@ -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());
}
Expand All @@ -50,22 +50,22 @@ 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());
}

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());
Expand Down
8 changes: 4 additions & 4 deletions tests/unit/message/MessageTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}

0 comments on commit d6e78d1

Please sign in to comment.