Added sequence diagram catch matchers

This commit is contained in:
Bartek Kryza
2021-02-27 14:46:23 +01:00
parent 74d5ced824
commit e885149cf0
3 changed files with 54 additions and 0 deletions

View File

@@ -47,6 +47,11 @@ TEST_CASE("Test t00001", "[unit-test]")
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, HasCall("A", "log_result"));
REQUIRE_THAT(puml, HasCall("B", "A", "log_result"));
REQUIRE_THAT(puml, HasCallWithResponse("B", "A", "add3"));
REQUIRE_THAT(puml, HasCall("A", "add"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
}

View File

@@ -93,6 +93,8 @@ void save_puml(const std::string &path, const std::string &puml)
using clanguml::test::matchers::Abstract;
using clanguml::test::matchers::Const;
using clanguml::test::matchers::Default;
using clanguml::test::matchers::HasCall;
using clanguml::test::matchers::HasCallWithResponse;
using clanguml::test::matchers::IsAbstractClass;
using clanguml::test::matchers::IsBaseClass;
using clanguml::test::matchers::IsClass;

View File

@@ -143,6 +143,53 @@ struct Default {
std::string m_method;
};
struct HasCallWithResultMatcher : ContainsMatcher {
HasCallWithResultMatcher(
CasedString const &comparator, CasedString const &resultComparator)
: ContainsMatcher(comparator)
, m_resultComparator{resultComparator}
{
}
bool match(std::string const &source) const override
{
return Catch::contains(
m_comparator.adjustString(source), m_comparator.m_str) &&
Catch::contains(
m_comparator.adjustString(source), m_resultComparator.m_str);
}
CasedString m_resultComparator;
};
ContainsMatcher HasCall(std::string const &from, std::string const &message,
CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)
{
return ContainsMatcher(
CasedString(fmt::format("\"{}\" -> \"{}\" : {}()", from, from, message),
caseSensitivity));
}
ContainsMatcher HasCall(std::string const &from, std::string const &to,
std::string const &message,
CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)
{
return ContainsMatcher(
CasedString(fmt::format("\"{}\" -> \"{}\" : {}()", from, to, message),
caseSensitivity));
}
auto HasCallWithResponse(std::string const &from, std::string const &to,
std::string const &message,
CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)
{
return HasCallWithResultMatcher(
CasedString(fmt::format("\"{}\" -> \"{}\" : {}()", from, to, message),
caseSensitivity),
CasedString(
fmt::format("\"{}\" --> \"{}\"", to, from), caseSensitivity));
}
ContainsMatcher IsClass(std::string const &str,
CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)
{