diff options
Diffstat (limited to 'test/fixtures/fixture_log_observer.cpp')
-rw-r--r-- | test/fixtures/fixture_log_observer.cpp | 57 |
1 files changed, 40 insertions, 17 deletions
diff --git a/test/fixtures/fixture_log_observer.cpp b/test/fixtures/fixture_log_observer.cpp index 1d3517ac67..77bf955268 100644 --- a/test/fixtures/fixture_log_observer.cpp +++ b/test/fixtures/fixture_log_observer.cpp @@ -3,30 +3,40 @@ namespace mbgl { -FixtureLogObserver::LogMessage::LogMessage(EventSeverity severity_, Event event_, int64_t code_, - const std::string &msg_) +FixtureLog::Message::Message(EventSeverity severity_, + Event event_, + int64_t code_, + const std::string& msg_) : severity(severity_), event(event_), code(code_), msg(msg_) { } -bool FixtureLogObserver::LogMessage::operator==(const LogMessage &rhs) const { - return severity == rhs.severity && - event == rhs.event && - code == rhs.code && - msg == rhs.msg; +bool FixtureLog::Message::operator==(const Message& rhs) const { + return severity == rhs.severity && event == rhs.event && code == rhs.code && msg == rhs.msg; } -FixtureLogObserver::~FixtureLogObserver() { +FixtureLog::Message::Message() : severity(), event(), code(), msg() { +} + +FixtureLog::Observer::Observer(FixtureLog* log_) : log(log_) { +} + +FixtureLog::Observer::~Observer() { + if (log) { + log->observer = nullptr; + } std::cerr << unchecked(); } -bool FixtureLogObserver::onRecord(EventSeverity severity, Event event, int64_t code, - const std::string &msg) { +bool FixtureLog::Observer::onRecord(EventSeverity severity, + Event event, + int64_t code, + const std::string& msg) { messages.emplace_back(severity, event, code, msg); return true; } -size_t FixtureLogObserver::count(const LogMessage &message) const { +size_t FixtureLog::Observer::count(const Message& message) const { size_t message_count = 0; for (const auto& msg : messages) { if (msg == message) { @@ -37,8 +47,22 @@ size_t FixtureLogObserver::count(const LogMessage &message) const { return message_count; } -std::vector<FixtureLogObserver::LogMessage> FixtureLogObserver::unchecked() const { - std::vector<LogMessage> unchecked_messages; +FixtureLog::FixtureLog() : observer(new FixtureLogObserver(this)) { + Log::setObserver(std::unique_ptr<Log::Observer>(observer)); +} + +size_t FixtureLog::count(const FixtureLog::Message& message) const { + return observer ? observer->count(message) : 0; +} + +FixtureLog::~FixtureLog() { + if (observer) { + Log::removeObserver(); + } +} + +std::vector<FixtureLog::Message> FixtureLogObserver::unchecked() const { + std::vector<Message> unchecked_messages; for (const auto& msg : messages) { if (!msg.checked) { unchecked_messages.push_back(msg); @@ -48,19 +72,18 @@ std::vector<FixtureLogObserver::LogMessage> FixtureLogObserver::unchecked() cons return unchecked_messages; } -::std::ostream &operator<<(::std::ostream &os, - const std::vector<FixtureLogObserver::LogMessage> &messages) { +::std::ostream& operator<<(::std::ostream& os, const std::vector<FixtureLog::Message>& messages) { for (const auto& message : messages) { os << "- " << message; } return os; } -::std::ostream &operator<<(::std::ostream &os, const FixtureLogObserver::LogMessage &message) { +::std::ostream& operator<<(::std::ostream& os, const FixtureLog::Message& message) { os << "[\"" << message.severity << "\", \"" << message.event << "\""; os << ", " << message.code; os << ", \"" << message.msg << "\""; return os << "]" << std::endl; } -} +} // namespace mbgl |