diff options
author | Chris Bieneman <beanz@abolishcrlf.org> | 2022-01-18 18:20:14 -0600 |
---|---|---|
committer | Chris Bieneman <beanz@abolishcrlf.org> | 2022-01-21 09:47:02 -0600 |
commit | 9d3437fbf3419502351d41ff9e28f06b0c3f06e8 (patch) | |
tree | d38c6c313963c7d7d4cea210d954c5c84d3c65a7 /llvm/unittests/ADT/StringRefTest.cpp | |
parent | 9900acacfb3ff2bc5c957aeb84225c29aa1b74fc (diff) | |
download | llvm-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.cpp | 30 |
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"); |