Improved unexposed template parameter tokenization
This commit is contained in:
@@ -301,6 +301,7 @@ using namespace clanguml::test::matchers;
|
||||
#endif
|
||||
#include "t00060/test_case.h"
|
||||
#include "t00061/test_case.h"
|
||||
#include "t00062/test_case.h"
|
||||
|
||||
///
|
||||
/// Sequence diagram tests
|
||||
|
||||
@@ -286,4 +286,38 @@ TEST_CASE(
|
||||
|
||||
CHECK(sink_s.calculate_specialization_match(sink_t));
|
||||
}
|
||||
|
||||
{
|
||||
auto tp1 = template_parameter::make_template_type({});
|
||||
tp1.set_method_template(true);
|
||||
tp1.add_template_param(template_parameter::make_template_type("Ret"));
|
||||
tp1.add_template_param(template_parameter::make_template_type("C"));
|
||||
tp1.add_template_param(
|
||||
template_parameter::make_template_type("Arg0"));
|
||||
|
||||
auto tp2 = template_parameter::make_template_type({});
|
||||
tp2.set_method_template(true);
|
||||
tp2.add_template_param(template_parameter::make_argument("char"));
|
||||
tp2.add_template_param(template_parameter::make_template_type("C"));
|
||||
tp2.add_template_param(template_parameter::make_argument("double"));
|
||||
|
||||
CHECK(tp2.calculate_specialization_match(tp1));
|
||||
}
|
||||
|
||||
{
|
||||
auto tp1 = template_parameter::make_template_type({});
|
||||
tp1.set_method_template(true);
|
||||
tp1.add_template_param(template_parameter::make_template_type("Ret"));
|
||||
tp1.add_template_param(template_parameter::make_template_type("C"));
|
||||
tp1.add_template_param(
|
||||
template_parameter::make_template_type("Arg0"));
|
||||
|
||||
auto tp2 = template_parameter::make_template_type({});
|
||||
tp2.set_method_template(true);
|
||||
tp2.add_template_param(template_parameter::make_argument("char"));
|
||||
tp2.add_template_param(template_parameter::make_template_type("C"));
|
||||
tp2.add_template_param(template_parameter::make_argument("double"));
|
||||
|
||||
CHECK(tp2.calculate_specialization_match(tp1));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -285,3 +285,107 @@ TEST_CASE("Test hash_seed", "[unit-test]")
|
||||
CHECK(hash_seed(1) == hash_seed(1));
|
||||
CHECK(hash_seed(1) != hash_seed(2));
|
||||
}
|
||||
|
||||
TEST_CASE("Test tokenize_unexposed_template_parameter", "[unit-test]")
|
||||
{
|
||||
using namespace clanguml::common;
|
||||
|
||||
{
|
||||
auto r = tokenize_unexposed_template_parameter("type-parameter-0-1");
|
||||
CHECK(r[0] == "type-parameter-0-1");
|
||||
}
|
||||
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
auto r =
|
||||
tokenize_unexposed_template_parameter("const type-parameter-0-1 &");
|
||||
CHECK(r[i++] == "const");
|
||||
CHECK(r[i++] == "type-parameter-0-1");
|
||||
CHECK(r[i++] == "&");
|
||||
}
|
||||
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
auto r = tokenize_unexposed_template_parameter(
|
||||
"const type-parameter-0-0 type-parameter-0-1::* &&");
|
||||
CHECK(r[i++] == "const");
|
||||
CHECK(r[i++] == "type-parameter-0-0");
|
||||
CHECK(r[i++] == "type-parameter-0-1");
|
||||
CHECK(r[i++] == "::");
|
||||
CHECK(r[i++] == "*");
|
||||
CHECK(r[i++] == "&&");
|
||||
}
|
||||
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
auto r = tokenize_unexposed_template_parameter(
|
||||
"type-parameter-0-0 [type-parameter-0-1]");
|
||||
CHECK(r[i++] == "type-parameter-0-0");
|
||||
CHECK(r[i++] == "[");
|
||||
CHECK(r[i++] == "type-parameter-0-1");
|
||||
CHECK(r[i++] == "]");
|
||||
}
|
||||
|
||||
{
|
||||
int i = 0;
|
||||
auto r = tokenize_unexposed_template_parameter(
|
||||
"type-parameter-0-0 (type-parameter-0-1::*)(type-parameter-0-2, "
|
||||
"type-parameter-0-3, type-parameter-0-4)");
|
||||
CHECK(r[i++] == "type-parameter-0-0");
|
||||
CHECK(r[i++] == "(");
|
||||
CHECK(r[i++] == "type-parameter-0-1");
|
||||
CHECK(r[i++] == "::");
|
||||
CHECK(r[i++] == "*");
|
||||
CHECK(r[i++] == ")");
|
||||
CHECK(r[i++] == "(");
|
||||
CHECK(r[i++] == "type-parameter-0-2");
|
||||
CHECK(r[i++] == ",");
|
||||
CHECK(r[i++] == "type-parameter-0-3");
|
||||
CHECK(r[i++] == ",");
|
||||
CHECK(r[i++] == "type-parameter-0-4");
|
||||
CHECK(r[i++] == ")");
|
||||
}
|
||||
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
auto r = tokenize_unexposed_template_parameter(
|
||||
"const ns1::ns2::A &");
|
||||
CHECK(r[i++] == "const");
|
||||
CHECK(r[i++] == "ns1::ns2::A");
|
||||
CHECK(r[i++] == "&");
|
||||
}
|
||||
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
auto r = tokenize_unexposed_template_parameter(
|
||||
"class ns1::ns2::A &");
|
||||
CHECK(r[i++] == "ns1::ns2::A");
|
||||
CHECK(r[i++] == "&");
|
||||
}
|
||||
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
auto r = tokenize_unexposed_template_parameter(
|
||||
"ns1::ns2::A C::* &&");
|
||||
CHECK(r[i++] == "ns1::ns2::A");
|
||||
CHECK(r[i++] == "C");
|
||||
CHECK(r[i++] == "::");
|
||||
CHECK(r[i++] == "*");
|
||||
CHECK(r[i++] == "&&");
|
||||
}
|
||||
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
auto r = tokenize_unexposed_template_parameter(
|
||||
"unsigned int");
|
||||
CHECK(r[i++] == "unsigned");
|
||||
CHECK(r[i++] == "int");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user