summaryrefslogtreecommitdiff
path: root/src/io/line_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/io/line_test.cpp')
-rw-r--r--src/io/line_test.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/io/line_test.cpp b/src/io/line_test.cpp
index ae316c6..6f0706f 100644
--- a/src/io/line_test.cpp
+++ b/src/io/line_test.cpp
@@ -348,3 +348,50 @@ TEST(io, linechar5)
lr.adv();
EXPECT_FALSE(lr.get(c));
}
+
+TEST(io, linespan)
+{
+ io::LineCharReader lr("<span>", string_pipe("Hello\nWorld\n"));
+ io::LineSpan span;
+ do
+ {
+ lr.get(span.begin);
+ lr.adv();
+ }
+ while (span.begin.ch() != 'e');
+ do
+ {
+ lr.get(span.end);
+ lr.adv();
+ }
+ while (span.end.ch() != 'o');
+ EXPECT_EQ(span.message_str("info", "meh"),
+ "<span>:1:2: info: meh\n"
+ "Hello\n"
+ " ^~~~\n"
+ );
+ do
+ {
+ lr.get(span.end);
+ lr.adv();
+ }
+ while (span.end.ch() != 'r');
+
+ EXPECT_EQ(span.begin.message_str("note", "foo"),
+ "<span>:1:2: note: foo\n"
+ "Hello\n"
+ " ^\n"
+ );
+ EXPECT_EQ(span.end.message_str("warning", "bar"),
+ "<span>:2:3: warning: bar\n"
+ "World\n"
+ " ^\n"
+ );
+ EXPECT_EQ(span.message_str("error", "qux"),
+ "<span>:1:2: error: qux\n"
+ "Hello\n"
+ " ^~~~ ...\n"
+ "World\n"
+ "~~~\n"
+ );
+}