From bed86b98f11088cd2ed6354696e9aa8e762f95be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Thu, 7 Jun 2018 13:02:35 +0200 Subject: [test] add partial message matching support to FixtureLog --- test/src/mbgl/test/fixture_log_observer.cpp | 29 +++++++++++++++++++++++------ test/src/mbgl/test/fixture_log_observer.hpp | 8 +++++--- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/test/src/mbgl/test/fixture_log_observer.cpp b/test/src/mbgl/test/fixture_log_observer.cpp index 717d2da753..d8a4b9edce 100644 --- a/test/src/mbgl/test/fixture_log_observer.cpp +++ b/test/src/mbgl/test/fixture_log_observer.cpp @@ -11,8 +11,9 @@ FixtureLog::Message::Message(EventSeverity severity_, : severity(severity_), event(event_), code(code_), msg(std::move(msg_)) { } -bool FixtureLog::Message::operator==(const Message& rhs) const { - return severity == rhs.severity && event == rhs.event && code == rhs.code && msg == rhs.msg; +bool FixtureLog::Message::matches(const Message& rhs, bool substring) const { + return severity == rhs.severity && event == rhs.event && code == rhs.code && + (substring ? msg.find(rhs.msg) != std::string::npos : msg == rhs.msg); } FixtureLog::Observer::Observer(FixtureLog* log_) : log(log_) { @@ -42,12 +43,12 @@ bool FixtureLog::Observer::empty() const { return messages.empty(); } -size_t FixtureLog::Observer::count(const Message& message) const { +size_t FixtureLog::Observer::count(const Message& message, bool substring) const { std::lock_guard lock(messagesMutex); size_t message_count = 0; for (const auto& msg : messages) { - if (msg == message) { + if (msg.matches(message, substring)) { message_count++; msg.checked = true; } @@ -63,8 +64,12 @@ bool FixtureLog::empty() const { return observer ? observer->empty() : true; } -size_t FixtureLog::count(const FixtureLog::Message& message) const { - return observer ? observer->count(message) : 0; +size_t FixtureLog::count(const FixtureLog::Message& message, bool substring) const { + return observer ? observer->count(message, substring) : 0; +} + +size_t FixtureLog::uncheckedCount() const { + return observer ? observer->uncheckedCount() : 0; } FixtureLog::~FixtureLog() { @@ -86,6 +91,18 @@ std::vector FixtureLogObserver::unchecked() const { return unchecked_messages; } +size_t FixtureLogObserver::uncheckedCount() const { + std::lock_guard lock(messagesMutex); + + size_t result = 0; + for (const auto& msg : messages) { + if (!msg.checked) { + result++; + } + } + return result; +} + ::std::ostream& operator<<(::std::ostream& os, const std::vector& messages) { for (const auto& message : messages) { os << "- " << message; diff --git a/test/src/mbgl/test/fixture_log_observer.hpp b/test/src/mbgl/test/fixture_log_observer.hpp index 328d4753a8..791337584d 100644 --- a/test/src/mbgl/test/fixture_log_observer.hpp +++ b/test/src/mbgl/test/fixture_log_observer.hpp @@ -15,7 +15,7 @@ public: Message() = default; Message(EventSeverity severity_, Event event_, int64_t code_, std::string msg_); - bool operator==(const Message& rhs) const; + bool matches(const Message& rhs, bool substring = false) const; const EventSeverity severity {}; const Event event {}; @@ -39,7 +39,8 @@ public: const std::string& msg) override; bool empty() const; - size_t count(const Message& message) const; + size_t uncheckedCount() const; + size_t count(const Message& message, bool substring = false) const; std::vector unchecked() const; private: @@ -51,7 +52,8 @@ public: FixtureLog(); bool empty() const; - size_t count(const Message& message) const; + size_t uncheckedCount() const; + size_t count(const Message& message, bool substring = false) const; ~FixtureLog(); -- cgit v1.2.1