Added JSON test cases for all sequence diagram test cases
This commit is contained in:
@@ -50,6 +50,11 @@ TEST_CASE("t20005", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {FindMessage(j, "C<T>", "B<T>", "b(T)"),
|
||||
FindMessage(j, "B<T>", "A<T>", "a(T)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -83,6 +83,17 @@ TEST_CASE("t20006", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()", "B<int>", "b(int)"),
|
||||
FindMessage(j, "B<int>", "A<int>", "a1(int)"),
|
||||
FindMessage(j, "tmain()", "B<std::string>", "b(std::string)"),
|
||||
FindMessage(j, "tmain()", "BB<int,int>", "bb1(int,int)"),
|
||||
FindMessage(j, "BB<int,int>", "AA<int>", "aa1(int)"),
|
||||
FindMessage(
|
||||
j, "tmain()", "BB<int,std::string>", "bb1(int,std::string)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -54,6 +54,16 @@ TEST_CASE("t20007", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()", "Adder<int,int>", "add(int &&,int &&)"),
|
||||
FindMessage(j, "tmain()", "Adder<int,float,double>",
|
||||
"add(int &&,float &&,double &&)"),
|
||||
FindMessage(j, "tmain()",
|
||||
"Adder<std::string,std::string,std::string>",
|
||||
"add(std::string &&,std::string &&,std::string &&)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -62,6 +62,18 @@ TEST_CASE("t20008", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()", "B<int>", "b(int)"),
|
||||
FindMessage(j, "B<int>", "A<int>", "a1(int)"),
|
||||
FindMessage(j, "tmain()", "B<const char *>", "b(const char *)"),
|
||||
FindMessage(
|
||||
j, "B<const char *>", "A<const char *>", "a2(const char *)"),
|
||||
FindMessage(j, "tmain()", "B<std::string>", "b(std::string)"),
|
||||
FindMessage(
|
||||
j, "B<std::string>", "A<std::string>", "a3(std::string)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -55,6 +55,17 @@ TEST_CASE("t20009", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()", "B<std::string>", "b(std::string)"),
|
||||
FindMessage(
|
||||
j, "B<std::string>", "A<std::string>", "a(std::string)"),
|
||||
FindMessage(j, "tmain()", "B<int>", "b(int)"),
|
||||
FindMessage(j, "B<int>", "A<int>", "a(int)"),
|
||||
FindMessage(j, "tmain()", "B<float>", "b(float)"),
|
||||
FindMessage(j, "B<float>", "A<float>", "a(float)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -56,6 +56,18 @@ TEST_CASE("t20010", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()", "B<int>", "b1()"),
|
||||
FindMessage(j, "B<int>", "A", "a1()"),
|
||||
FindMessage(j, "tmain()", "B<int>", "b2()"),
|
||||
FindMessage(j, "B<int>", "A", "a2()"),
|
||||
FindMessage(j, "tmain()", "B<int>", "b3()"),
|
||||
FindMessage(j, "B<int>", "A", "a3()"),
|
||||
FindMessage(j, "tmain()", "B<int>", "b4()"),
|
||||
FindMessage(j, "B<int>", "A", "a4()")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -85,6 +85,38 @@ TEST_CASE("t20012", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()",
|
||||
"tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)",
|
||||
"operator()()"),
|
||||
FindMessage(j,
|
||||
"tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)", "A",
|
||||
"a()"),
|
||||
FindMessage(j, "A", "A", "aa()"), FindMessage(j, "A", "A", "aaa()"),
|
||||
FindMessage(j,
|
||||
"tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)", "B",
|
||||
"b()"),
|
||||
FindMessage(j, "B", "B", "bb()"), FindMessage(j, "B", "B", "bbb()"),
|
||||
FindMessage(j,
|
||||
"tmain()::(lambda ../../tests/t20012/t20012.cc:79:20)", "C",
|
||||
"c()"),
|
||||
FindMessage(j, "C", "C", "cc()"), FindMessage(j, "C", "C", "ccc()"),
|
||||
FindMessage(j,
|
||||
"tmain()::(lambda ../../tests/t20012/t20012.cc:79:20)",
|
||||
"tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)",
|
||||
"operator()()"),
|
||||
FindMessage(j, "tmain()",
|
||||
"R<R::(lambda ../../tests/t20012/t20012.cc:85:9)>", "r()"),
|
||||
FindMessage(j, "R<R::(lambda ../../tests/t20012/t20012.cc:85:9)>",
|
||||
"tmain()::(lambda ../../tests/t20012/t20012.cc:85:9)",
|
||||
"operator()()"),
|
||||
FindMessage(j,
|
||||
"tmain()::(lambda ../../tests/t20012/t20012.cc:85:9)", "C",
|
||||
"c()"),
|
||||
FindMessage(j, "tmain()", "D", "add5(int)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -56,6 +56,16 @@ TEST_CASE("t20013", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain(int,char **)", "B", "b(int)"),
|
||||
FindMessage(j, "B", "A", "a1(int)"),
|
||||
FindMessage(j, "tmain(int,char **)", "B", "b(double)"),
|
||||
FindMessage(j, "B", "A", "a2(double)"),
|
||||
FindMessage(j, "tmain(int,char **)", "B", "b(const char *)"),
|
||||
FindMessage(j, "B", "A", "a3(const char *)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -54,6 +54,17 @@ TEST_CASE("t20014", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()", "B", "b1(int,int)"),
|
||||
FindMessage(j, "B", "A", "a1(int,int)"),
|
||||
FindMessage(j, "tmain()", "B", "b2(int,int)"),
|
||||
FindMessage(j, "B", "A", "a2(int,int)"),
|
||||
FindMessage(
|
||||
j, "tmain()", "C<clanguml::t20014::B,int>", "c1(int,int)"),
|
||||
FindMessage(j, "C<clanguml::t20014::B,int>", "B", "b1(int,int)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -55,6 +55,11 @@ TEST_CASE("t20015", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {FindMessage(
|
||||
j, "tmain()", "B", "setup_a(std::shared_ptr<detail::A> &)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,14 @@ TEST_CASE("t20016", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()", "B<long>", "b1(long)"),
|
||||
FindMessage(j, "B<long>", "A", "a1(int)"),
|
||||
FindMessage(j, "tmain()", "B<long>", "b2(long)"),
|
||||
FindMessage(j, "B<long>", "A", "a2(const long &)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -58,6 +58,20 @@ TEST_CASE("t20017", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, File("t20017.cc"), File("include/t20017_a.h"),
|
||||
"a3(int,int)"),
|
||||
FindMessage(j, File("t20017.cc"), File("include/t20017_b.h"),
|
||||
"b1(int,int)"),
|
||||
FindMessage(j, File("t20017.cc"), File("include/t20017_a.h"),
|
||||
"a2(int,int)"),
|
||||
FindMessage(j, File("t20017.cc"), File("include/t20017_a.h"),
|
||||
"a1(int,int)"),
|
||||
FindMessage(j, File("t20017.cc"), File("include/t20017_b.h"),
|
||||
"b2<int>(int,int)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -62,6 +62,19 @@ TEST_CASE("t20018", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()",
|
||||
"Answer<clanguml::t20018::Factorial<5>,120>", "print()"),
|
||||
FindMessage(j, "Answer<clanguml::t20018::Factorial<5>,120>",
|
||||
"Factorial<5>", "print(int)"),
|
||||
FindMessage(j, "Factorial<5>", "Factorial<4>", "print(int)"),
|
||||
FindMessage(j, "Factorial<4>", "Factorial<3>", "print(int)"),
|
||||
FindMessage(j, "Factorial<3>", "Factorial<2>", "print(int)"),
|
||||
FindMessage(j, "Factorial<2>", "Factorial<1>", "print(int)"),
|
||||
FindMessage(j, "Factorial<1>", "Factorial<0>", "print(int)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,14 @@ TEST_CASE("t20019", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()", "Base<clanguml::t20019::D1>", "name()"),
|
||||
FindMessage(j, "Base<clanguml::t20019::D1>", "D1", "impl()"),
|
||||
FindMessage(j, "tmain()", "Base<clanguml::t20019::D2>", "name()"),
|
||||
FindMessage(j, "Base<clanguml::t20019::D2>", "D2", "impl()")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -59,6 +59,20 @@ TEST_CASE("t20020", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {FindMessage(j, "tmain()", "A", "a1()"),
|
||||
FindMessage(j, "tmain()", "A", "a2()"),
|
||||
FindMessage(j, "tmain()", "C", "c3(int)"),
|
||||
FindMessage(j, "tmain()", "B", "b1()"),
|
||||
FindMessage(j, "tmain()", "A", "a3()"),
|
||||
FindMessage(j, "tmain()", "B", "b2()"),
|
||||
FindMessage(j, "tmain()", "A", "a4()"),
|
||||
FindMessage(j, "tmain()", "B", "log()"),
|
||||
FindMessage(j, "tmain()", "C", "c1()"),
|
||||
FindMessage(j, "C", "C", "c2()"), FindMessage(j, "C", "C", "log()"),
|
||||
FindMessage(j, "tmain()", "D<int>", "d1(int,int)")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -67,6 +67,23 @@ TEST_CASE("t20021", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()", "C", "c4()"),
|
||||
FindMessage(j, "C", "C", "c5()"),
|
||||
FindMessage(j, "tmain()", "A", "a3()"),
|
||||
FindMessage(j, "tmain()", "A", "a2()"),
|
||||
FindMessage(j, "tmain()", "C", "c1()"),
|
||||
FindMessage(j, "tmain()", "C", "c2()"),
|
||||
FindMessage(j, "tmain()", "A", "a1()"),
|
||||
FindMessage(j, "tmain()", "C", "c3()"),
|
||||
FindMessage(j, "tmain()", "B", "b2()"),
|
||||
FindMessage(j, "tmain()", "C", "contents()")
|
||||
// TODO: Repeated messge gets wrong index
|
||||
// FindMessage(j, "tmain()", "B", "b2()")
|
||||
};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -47,6 +47,11 @@ TEST_CASE("t20022", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {FindMessage(j, "tmain()", "A", "a()"),
|
||||
FindMessage(j, "A", "B", "b()")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,12 @@ TEST_CASE("t20023", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {FindMessage(j, "tmain()", "A", "a()"),
|
||||
FindMessage(j, "A", "A", "a1()"), FindMessage(j, "A", "A", "a2()"),
|
||||
FindMessage(j, "A", "A", "a3()"), FindMessage(j, "A", "A", "a4()")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -55,6 +55,13 @@ TEST_CASE("t20024", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()", "A", "select(enum_a)"),
|
||||
FindMessage(j, "A", "A", "a0()"), FindMessage(j, "A", "A", "a1()"),
|
||||
FindMessage(j, "A", "A", "a2()"), FindMessage(j, "A", "A", "a3()")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,12 @@ TEST_CASE("t20025", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {FindMessage(j, "tmain()", "A", "a()"),
|
||||
// FindMessage(j, "tmain()", "A", "a2()"),
|
||||
FindMessage(j, "tmain()", "add(int,int)", "")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -46,6 +46,10 @@ TEST_CASE("t20026", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {FindMessage(j, "tmain()", "A", "a()")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -48,6 +48,10 @@ TEST_CASE("t20027", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {FindMessage(j, "tmain()", "A", "a()")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,13 @@ TEST_CASE("t20028", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {FindMessage(j, "tmain()", "A", "a()"),
|
||||
FindMessage(j, "tmain()", "A", "b()"),
|
||||
FindMessage(j, "tmain()", "A", "c()"),
|
||||
FindMessage(j, "tmain()", "A", "d()")};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -68,6 +68,20 @@ TEST_CASE("t20029", "[test-case][sequence]")
|
||||
|
||||
using namespace json;
|
||||
|
||||
std::vector<int> messages = {
|
||||
FindMessage(j, "tmain()", "ConnectionPool", "connect()"),
|
||||
FindMessage(j, "tmain()",
|
||||
"Encoder<clanguml::t20029::Retrier<clanguml::t20029::ConnectionPool>>",
|
||||
"send(std::string &&)")/*,
|
||||
FindMessage(j,
|
||||
"Encoder<clanguml::t20029::Retrier<clanguml::t20029::"
|
||||
"ConnectionPool>>",
|
||||
"encode_b64(std::string &&)", "encode_b64(std::string &&)"),
|
||||
FindMessage(j, "Retrier<clanguml::t20029::ConnectionPool>",
|
||||
"ConnectionPool", "send(const std::string &)")*/};
|
||||
|
||||
REQUIRE(std::is_sorted(messages.begin(), messages.end()));
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
@@ -881,6 +881,13 @@ int find_message_nested(const nlohmann::json &j, const std::string &from,
|
||||
return nested_res;
|
||||
}
|
||||
}
|
||||
else if (m.contains("messages")) {
|
||||
auto nested_res =
|
||||
find_message_nested(m, from, to, msg, from_p, to_p, count);
|
||||
|
||||
if (nested_res >= 0)
|
||||
return nested_res;
|
||||
}
|
||||
else {
|
||||
if ((m["from"]["participant_id"] == from_p["id"]) &&
|
||||
(m["to"]["participant_id"] == to_p["id"]) && (m["name"] == msg))
|
||||
@@ -892,13 +899,13 @@ int find_message_nested(const nlohmann::json &j, const std::string &from,
|
||||
|
||||
return res;
|
||||
}
|
||||
} // namespace detail
|
||||
|
||||
int FindMessage(const nlohmann::json &j, const std::string &from,
|
||||
int find_message_impl(const nlohmann::json &j, const std::string &from,
|
||||
const std::string &to, const std::string &msg)
|
||||
{
|
||||
auto from_p = get_participant(j, expand_name(j, from));
|
||||
auto to_p = get_participant(j, expand_name(j, to));
|
||||
|
||||
auto from_p = get_participant(j, from);
|
||||
auto to_p = get_participant(j, to);
|
||||
|
||||
// TODO: support diagrams with multiple sequences...
|
||||
const auto &sequence_0 = j["sequences"][0];
|
||||
@@ -915,6 +922,30 @@ int FindMessage(const nlohmann::json &j, const std::string &from,
|
||||
fmt::format("No such message {} {} {}", from, to, msg));
|
||||
}
|
||||
|
||||
} // namespace detail
|
||||
|
||||
struct File {
|
||||
explicit File(const std::string &f)
|
||||
: file{f}
|
||||
{
|
||||
}
|
||||
|
||||
const std::string file;
|
||||
};
|
||||
|
||||
int FindMessage(const nlohmann::json &j, const File &from, const File &to,
|
||||
const std::string &msg)
|
||||
{
|
||||
return detail::find_message_impl(j, from.file, to.file, msg);
|
||||
}
|
||||
|
||||
int FindMessage(const nlohmann::json &j, const std::string &from,
|
||||
const std::string &to, const std::string &msg)
|
||||
{
|
||||
return detail::find_message_impl(
|
||||
j, expand_name(j, from), expand_name(j, to), msg);
|
||||
}
|
||||
|
||||
} // namespace json
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user