aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ADT/StringRefTest.cpp
diff options
context:
space:
mode:
authorChris Bieneman <beanz@abolishcrlf.org>2022-01-18 18:20:14 -0600
committerChris Bieneman <beanz@abolishcrlf.org>2022-01-21 09:47:02 -0600
commit9d3437fbf3419502351d41ff9e28f06b0c3f06e8 (patch)
treed38c6c313963c7d7d4cea210d954c5c84d3c65a7 /llvm/unittests/ADT/StringRefTest.cpp
parent9900acacfb3ff2bc5c957aeb84225c29aa1b74fc (diff)
downloadllvm-9d3437fbf3419502351d41ff9e28f06b0c3f06e8.zip
llvm-9d3437fbf3419502351d41ff9e28f06b0c3f06e8.tar.gz
llvm-9d3437fbf3419502351d41ff9e28f06b0c3f06e8.tar.bz2
[ADT] [NFC] Add StringRef::detectEOL
This change moves EOL detection out of the clang::InclusionRewriter into llvm::StringRef so that it can be easily reused elsewhere. It also adds additional explicit test cases to verify the correct and expected return results. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D117626
Diffstat (limited to 'llvm/unittests/ADT/StringRefTest.cpp')
-rw-r--r--llvm/unittests/ADT/StringRefTest.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/StringRefTest.cpp b/llvm/unittests/ADT/StringRefTest.cpp
index 41c3580..e80a25a 100644
--- a/llvm/unittests/ADT/StringRefTest.cpp
+++ b/llvm/unittests/ADT/StringRefTest.cpp
@@ -1109,6 +1109,36 @@ TEST(StringRefTest, GTestPrinter) {
EXPECT_EQ(R"("foo")", ::testing::PrintToString(StringRef("foo")));
}
+TEST(StringRefTest, LFLineEnding) {
+ constexpr StringRef Cases[] = {"\nDoggo\nPupper", "Floofer\n", "Woofer"};
+ EXPECT_EQ(StringRef("\n"), Cases[0].detectEOL());
+ EXPECT_EQ(StringRef("\n"), Cases[1].detectEOL());
+ EXPECT_EQ(StringRef("\n"), Cases[2].detectEOL());
+}
+
+TEST(StringRefTest, CRLineEnding) {
+ constexpr StringRef Cases[] = {"\rDoggo\rPupper", "Floofer\r", "Woo\rfer\n"};
+ EXPECT_EQ(StringRef("\r"), Cases[0].detectEOL());
+ EXPECT_EQ(StringRef("\r"), Cases[1].detectEOL());
+ EXPECT_EQ(StringRef("\r"), Cases[2].detectEOL());
+}
+
+TEST(StringRefTest, CRLFLineEnding) {
+ constexpr StringRef Cases[] = {"\r\nDoggo\r\nPupper", "Floofer\r\n",
+ "Woofer\r\nSubWoofer\n"};
+ EXPECT_EQ(StringRef("\r\n"), Cases[0].detectEOL());
+ EXPECT_EQ(StringRef("\r\n"), Cases[1].detectEOL());
+ EXPECT_EQ(StringRef("\r\n"), Cases[2].detectEOL());
+}
+
+TEST(StringRefTest, LFCRLineEnding) {
+ constexpr StringRef Cases[] = {"\n\rDoggo\n\rPupper", "Floofer\n\r",
+ "Woofer\n\rSubWoofer\n"};
+ EXPECT_EQ(StringRef("\n\r"), Cases[0].detectEOL());
+ EXPECT_EQ(StringRef("\n\r"), Cases[1].detectEOL());
+ EXPECT_EQ(StringRef("\n\r"), Cases[2].detectEOL());
+}
+
static_assert(std::is_trivially_copyable<StringRef>::value,
"trivially copyable");