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;
// { {"[ -_]", QRegularExpression::OptimizeOnFirstUsageOption }, "", true }
QString replaceSpaceWith; ///< default is empty string which means remove spaces
//CollisionHandling CollisionHandling = CollisionHandling::Restrict;
CaseConversion caseConversion = CaseConversion::AsIs; ///< overall case conversion rule
//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;

View file

@ -14,41 +14,68 @@ protected:
{
NameManglingRules r;
auto p = GetParam();
//ReplaceRules replaceRules;
// { {"[ -_]", QRegularExpression::OptimizeOnFirstUsageOption }, "", true }
r.replaceRules;
// auto p = GetParam();
// //ReplaceRules replaceRules;
// // { {"[ -_]", QRegularExpression::OptimizeOnFirstUsageOption }, "", true }
// // r.replaceRules;
//QString replaceSpaceWith; ///< default is empty string which means remove spaces
r.replaceSpaceWith = std::get<0>(p);
//CollisionHandling CollisionHandling = CollisionHandling::Restrict;
//CaseConversion caseConversion = CaseConversion::AsIs; ///< overall case conversion rule
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;
// //CaseConversion caseConversion = CaseConversion::AsIs; ///< overall case conversion rule
// 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;
};
// 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()
));