Added name mangling tests.

This commit is contained in:
eelke 2018-09-17 15:41:47 +02:00
parent 8f4845d4d2
commit 22bad8fb22
2 changed files with 54 additions and 28 deletions

View file

@ -34,11 +34,10 @@ public:
ReplaceRules replaceRules; ReplaceRules replaceRules;
// { {"[ -_]", QRegularExpression::OptimizeOnFirstUsageOption }, "", true } // { {"[ -_]", QRegularExpression::OptimizeOnFirstUsageOption }, "", true }
QString replaceSpaceWith; ///< default is empty string which means remove spaces
//CollisionHandling CollisionHandling = CollisionHandling::Restrict; //CollisionHandling CollisionHandling = CollisionHandling::Restrict;
CaseConversion caseConversion = CaseConversion::AsIs; ///< overall case conversion rule CaseConversion caseConversion = CaseConversion::AsIs; ///< overall case conversion rule
//CaseConversion caseFirstChar = CaseConversion::AsIs; ///< case of the first char //CaseConversion caseFirstChar = CaseConversion::AsIs; ///< case of the first char
bool camelCase = false; ///< removes underscores and make first char after underscore uppercase // bool camelCase = false; ///< removes underscores and make first char after underscore uppercase
void apply(const ReplaceRule &rule, QString &in) const; void apply(const ReplaceRule &rule, QString &in) const;

View file

@ -14,41 +14,68 @@ protected:
{ {
NameManglingRules r; NameManglingRules r;
auto p = GetParam(); // auto p = GetParam();
//ReplaceRules replaceRules; // //ReplaceRules replaceRules;
// { {"[ -_]", QRegularExpression::OptimizeOnFirstUsageOption }, "", true } // // { {"[ -_]", QRegularExpression::OptimizeOnFirstUsageOption }, "", true }
r.replaceRules; // // r.replaceRules;
//QString replaceSpaceWith; ///< default is empty string which means remove spaces // //CaseConversion caseConversion = CaseConversion::AsIs; ///< overall case conversion rule
r.replaceSpaceWith = std::get<0>(p); // r.caseConversion = std::get<1>(p);
// //CaseConversion caseFirstChar = CaseConversion::AsIs; ///< case of the first char
//CollisionHandling CollisionHandling = CollisionHandling::Restrict; // //r.camelCase = std::get<2>(p); ///< removes underscores and make first char after underscore uppercase
//CaseConversion caseConversion = CaseConversion::AsIs; ///< overall case conversion rule // rules = r;
r.caseConversion = std::get<1>(p);
//CaseConversion caseFirstChar = CaseConversion::AsIs; ///< case of the first char
r.camelCase = std::get<2>(p); ///< removes underscores and make first char after underscore uppercase
rules = r;
} }
NameManglingRules rules; NameManglingRules rules;
}; };
// First a few test to test some basic things
TEST_P(NameManglingRulesTest, test1)
TEST_F(NameManglingRulesTest, caseConversionAsIs)
{ {
ASSERT_EQ(rules.replaceSpaceWith, std::get<0>(GetParam())); QString input = "Ab";
QString expected = input;
NameManglingRules rules;
rules.caseConversion = NameManglingRules::CaseConversion::AsIs;
QString result = rules.transform(input);
ASSERT_EQ(result, expected);
} }
TEST_P(NameManglingRulesTest, test2) TEST_F(NameManglingRulesTest, caseConversionLower)
{ {
ASSERT_EQ(rules.camelCase, std::get<2>(GetParam())); QString input = "Ab";
QString expected = "ab";
NameManglingRules rules;
rules.caseConversion = NameManglingRules::CaseConversion::Lower;
QString result = rules.transform(input);
ASSERT_EQ(result, expected);
}
TEST_F(NameManglingRulesTest, caseConversionUpper)
{
QString input = "Ab";
QString expected = "AB";
NameManglingRules rules;
rules.caseConversion = NameManglingRules::CaseConversion::Upper;
QString result = rules.transform(input);
ASSERT_EQ(result, expected);
}
TEST_F(NameManglingRulesTest, replace)
{
QString input = "abc-def ghi";
QString expected = "abc_Def_Ghi";
NameManglingRules rules;
rules.replaceRules.push_back({QRegularExpression("[- ]"), "_", true});
QString result = rules.transform(input);
ASSERT_EQ(result, expected);
} }
INSTANTIATE_TEST_CASE_P(InstantiationName1,
NameManglingRulesTest,
::testing::Combine(
::testing::Values("", "_", "+"),
::testing::Values(NameManglingRules::CaseConversion::AsIs,
NameManglingRules::CaseConversion::Lower,
NameManglingRules::CaseConversion::Upper),
::testing::Bool()
));