diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-01-18 16:17:27 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-01-18 16:17:27 +0000 | 
| commit | 67c32a98315f785a9ec9d531c1f571a0196c7463 (patch) | |
| tree | 4abb9cbeecc7901726dd0b4a37369596c852e9ef /unittests/Support/LineIteratorTest.cpp | |
| parent | 9f61947910e6ab40de38e6b4034751ef1513200f (diff) | |
Notes
Diffstat (limited to 'unittests/Support/LineIteratorTest.cpp')
| -rw-r--r-- | unittests/Support/LineIteratorTest.cpp | 130 | 
1 files changed, 104 insertions, 26 deletions
diff --git a/unittests/Support/LineIteratorTest.cpp b/unittests/Support/LineIteratorTest.cpp index 18f3fa99bcde..67f9d9777363 100644 --- a/unittests/Support/LineIteratorTest.cpp +++ b/unittests/Support/LineIteratorTest.cpp @@ -17,9 +17,9 @@ using namespace llvm::sys;  namespace {  TEST(LineIteratorTest, Basic) { -  std::unique_ptr<MemoryBuffer> Buffer(MemoryBuffer::getMemBuffer("line 1\n" -                                                                  "line 2\n" -                                                                  "line 3")); +  std::unique_ptr<MemoryBuffer> Buffer = MemoryBuffer::getMemBuffer("line 1\n" +                                                                    "line 2\n" +                                                                    "line 3");    line_iterator I = line_iterator(*Buffer), E; @@ -40,15 +40,17 @@ TEST(LineIteratorTest, Basic) {    EXPECT_EQ(E, I);  } -TEST(LineIteratorTest, CommentSkipping) { +TEST(LineIteratorTest, CommentAndBlankSkipping) {    std::unique_ptr<MemoryBuffer> Buffer(        MemoryBuffer::getMemBuffer("line 1\n"                                   "line 2\n"                                   "# Comment 1\n" -                                 "line 4\n" +                                 "\n" +                                 "line 5\n" +                                 "\n"                                   "# Comment 2")); -  line_iterator I = line_iterator(*Buffer, '#'), E; +  line_iterator I = line_iterator(*Buffer, true, '#'), E;    EXPECT_FALSE(I.is_at_eof());    EXPECT_NE(E, I); @@ -59,20 +61,57 @@ TEST(LineIteratorTest, CommentSkipping) {    EXPECT_EQ("line 2", *I);    EXPECT_EQ(2, I.line_number());    ++I; -  EXPECT_EQ("line 4", *I); -  EXPECT_EQ(4, I.line_number()); +  EXPECT_EQ("line 5", *I); +  EXPECT_EQ(5, I.line_number()); +  ++I; + +  EXPECT_TRUE(I.is_at_eof()); +  EXPECT_EQ(E, I); +} + +TEST(LineIteratorTest, CommentSkippingKeepBlanks) { +  std::unique_ptr<MemoryBuffer> Buffer( +      MemoryBuffer::getMemBuffer("line 1\n" +                                 "line 2\n" +                                 "# Comment 1\n" +                                 "# Comment 2\n" +                                 "\n" +                                 "line 6\n" +                                 "\n" +                                 "# Comment 3")); + +  line_iterator I = line_iterator(*Buffer, false, '#'), E; + +  EXPECT_FALSE(I.is_at_eof()); +  EXPECT_NE(E, I); + +  EXPECT_EQ("line 1", *I); +  EXPECT_EQ(1, I.line_number()); +  ++I; +  EXPECT_EQ("line 2", *I); +  EXPECT_EQ(2, I.line_number()); +  ++I; +  EXPECT_EQ("", *I); +  EXPECT_EQ(5, I.line_number()); +  ++I; +  EXPECT_EQ("line 6", *I); +  EXPECT_EQ(6, I.line_number()); +  ++I; +  EXPECT_EQ("", *I); +  EXPECT_EQ(7, I.line_number());    ++I;    EXPECT_TRUE(I.is_at_eof());    EXPECT_EQ(E, I);  } +  TEST(LineIteratorTest, BlankSkipping) { -  std::unique_ptr<MemoryBuffer> Buffer(MemoryBuffer::getMemBuffer("\n\n\n" -                                                                  "line 1\n" -                                                                  "\n\n\n" -                                                                  "line 2\n" -                                                                  "\n\n\n")); +  std::unique_ptr<MemoryBuffer> Buffer = MemoryBuffer::getMemBuffer("\n\n\n" +                                                                    "line 1\n" +                                                                    "\n\n\n" +                                                                    "line 2\n" +                                                                    "\n\n\n");    line_iterator I = line_iterator(*Buffer), E; @@ -90,26 +129,65 @@ TEST(LineIteratorTest, BlankSkipping) {    EXPECT_EQ(E, I);  } +TEST(LineIteratorTest, BlankKeeping) { +  std::unique_ptr<MemoryBuffer> Buffer = MemoryBuffer::getMemBuffer("\n\n" +                                                                    "line 3\n" +                                                                    "\n" +                                                                    "line 5\n" +                                                                    "\n\n"); +  line_iterator I = line_iterator(*Buffer, false), E; + +  EXPECT_FALSE(I.is_at_eof()); +  EXPECT_NE(E, I); + +  EXPECT_EQ("", *I); +  EXPECT_EQ(1, I.line_number()); +  ++I; +  EXPECT_EQ("", *I); +  EXPECT_EQ(2, I.line_number()); +  ++I; +  EXPECT_EQ("line 3", *I); +  EXPECT_EQ(3, I.line_number()); +  ++I; +  EXPECT_EQ("", *I); +  EXPECT_EQ(4, I.line_number()); +  ++I; +  EXPECT_EQ("line 5", *I); +  EXPECT_EQ(5, I.line_number()); +  ++I; +  EXPECT_EQ("", *I); +  EXPECT_EQ(6, I.line_number()); +  ++I; +  EXPECT_EQ("", *I); +  EXPECT_EQ(7, I.line_number()); +  ++I; + +  EXPECT_TRUE(I.is_at_eof()); +  EXPECT_EQ(E, I); +} +  TEST(LineIteratorTest, EmptyBuffers) { -  std::unique_ptr<MemoryBuffer> Buffer(MemoryBuffer::getMemBuffer("")); +  std::unique_ptr<MemoryBuffer> Buffer = MemoryBuffer::getMemBuffer("");    EXPECT_TRUE(line_iterator(*Buffer).is_at_eof());    EXPECT_EQ(line_iterator(), line_iterator(*Buffer)); +  EXPECT_TRUE(line_iterator(*Buffer, false).is_at_eof()); +  EXPECT_EQ(line_iterator(), line_iterator(*Buffer, false)); -  Buffer.reset(MemoryBuffer::getMemBuffer("\n\n\n")); +  Buffer = MemoryBuffer::getMemBuffer("\n\n\n");    EXPECT_TRUE(line_iterator(*Buffer).is_at_eof());    EXPECT_EQ(line_iterator(), line_iterator(*Buffer)); -  Buffer.reset(MemoryBuffer::getMemBuffer("# foo\n" -                                          "\n" -                                          "# bar")); -  EXPECT_TRUE(line_iterator(*Buffer, '#').is_at_eof()); -  EXPECT_EQ(line_iterator(), line_iterator(*Buffer, '#')); - -  Buffer.reset(MemoryBuffer::getMemBuffer("\n" -                                          "# baz\n" -                                          "\n")); -  EXPECT_TRUE(line_iterator(*Buffer, '#').is_at_eof()); -  EXPECT_EQ(line_iterator(), line_iterator(*Buffer, '#')); +  Buffer = MemoryBuffer::getMemBuffer("# foo\n" +                                      "\n" +                                      "# bar"); +  EXPECT_TRUE(line_iterator(*Buffer, true, '#').is_at_eof()); +  EXPECT_EQ(line_iterator(), line_iterator(*Buffer, true, '#')); + +  Buffer = MemoryBuffer::getMemBuffer("\n" +                                      "# baz\n" +                                      "\n"); +  EXPECT_TRUE(line_iterator(*Buffer, true, '#').is_at_eof()); +  EXPECT_EQ(line_iterator(), line_iterator(*Buffer, true, '#'));  }  } // anonymous namespace  | 
