[ClangImporter] Handle underscore-punctuated enum names (used by CoreMedia).

<rdar://problem/17594425>

Swift SVN r19732
This commit is contained in:
Jordan Rose
2014-07-09 18:44:43 +00:00
parent d347bb5539
commit c99b417a59
5 changed files with 84 additions and 14 deletions

View File

@@ -56,6 +56,36 @@ TEST(CamelCaseWordsTest, Iteration) {
EXPECT_EQ(iter, words.end());
}
TEST(CamelCaseWordsTest, WordsWithUnderscores) {
auto words = camel_case::getWords("CF_Flags_789");
EXPECT_EQ(5, std::distance(words.begin(), words.end()));
auto iter = words.begin();
EXPECT_EQ("CF", *iter++);
EXPECT_EQ("_", *iter++);
EXPECT_EQ("Flags", *iter++);
EXPECT_EQ("_", *iter++);
EXPECT_EQ("789", *iter++);
EXPECT_EQ("789", *--iter);
EXPECT_EQ("_", *--iter);
EXPECT_EQ("Flags", *--iter);
EXPECT_EQ("_", *--iter);
EXPECT_EQ("CF", *--iter);
auto manyUnderscores = camel_case::getWords("___ABC");
EXPECT_EQ(4, std::distance(manyUnderscores.begin(), manyUnderscores.end()));
iter = manyUnderscores.begin();
EXPECT_EQ("_", *iter++);
EXPECT_EQ("_", *iter++);
EXPECT_EQ("_", *iter++);
EXPECT_EQ("ABC", *iter++);
EXPECT_EQ("ABC", *--iter);
EXPECT_EQ("_", *--iter);
EXPECT_EQ("_", *--iter);
EXPECT_EQ("_", *--iter);
}
TEST(ToLowercaseTest, Words) {
llvm::SmallString<64> scratch;