about summary refs log tree commit diff stats
path: root/cpp/tangle/030tangle.test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/tangle/030tangle.test.cc')
-rw-r--r--cpp/tangle/030tangle.test.cc38
1 files changed, 37 insertions, 1 deletions
diff --git a/cpp/tangle/030tangle.test.cc b/cpp/tangle/030tangle.test.cc
index 4bc9fd6f..4aab6316 100644
--- a/cpp/tangle/030tangle.test.cc
+++ b/cpp/tangle/030tangle.test.cc
@@ -9,7 +9,7 @@ void test_tangle_with_linenumber() {
   istringstream in("a\nb\nc\n:(before b)\nd\n");
   list<string> dummy;
   tangle(in, dummy);
-  CHECK_TRACE_CONTENTS("tangle", "a#line 5dbc");
+  CHECK_TRACE_CONTENTS("tangle", "a#line 5d#line 2bc");
 }
 
 void test_tangle_with_filename() {
@@ -21,6 +21,33 @@ void test_tangle_with_filename() {
   CHECK_TRACE_CONTENTS("tangle", "a#line 5 \"foo\"dbc");
 }
 
+void test_tangle_with_multiple_filenames() {
+  istringstream in1("a\nb\nc");
+  list<string> dummy;
+  Filename = "foo";
+  tangle(in1, dummy);
+  CLEAR_TRACE;
+  Filename = "bar";
+  istringstream in2(":(before b)\nd\n");
+  tangle(in2, dummy);
+  Filename = "";
+  CHECK_TRACE_CONTENTS("tangle", "a#line 2 \"bar\"d#line 2 \"foo\"bc");
+}
+
+void test_tangle_with_multiple_filenames_after() {
+  istringstream in1("a\nb\nc");
+  list<string> dummy;
+  Filename = "foo";
+  tangle(in1, dummy);
+  CLEAR_TRACE;
+  Filename = "bar";
+  istringstream in2(":(after b)\nd\n");
+  tangle(in2, dummy);
+  Filename = "";
+  CHECK_TRACE_CONTENTS("tangle", "ab#line 2 \"bar\"d#line 3 \"foo\"c");
+//?   exit(0); //? 1
+}
+
 void test_tangle2() {
   istringstream in("a\nb\nc\n:(after b)\nd\n");
   list<string> dummy;
@@ -114,6 +141,7 @@ void test_tangle_supports_scenarios() {
   istringstream in(":(scenario does_bar)\nabc def\n+layer1: pqr\n+layer2: xyz");
   list<string> lines;
   tangle(in, lines);
+  CHECK_EQ(lines.front(), "#line 1");  lines.pop_front();
   CHECK_EQ(lines.front(), "#line 2");  lines.pop_front();
   CHECK_EQ(lines.front(), "TEST(does_bar)");  lines.pop_front();
   CHECK_EQ(lines.front(), "  run(\"abc def\\n\");");  lines.pop_front();
@@ -126,6 +154,7 @@ void test_tangle_supports_configurable_toplevel() {
   istringstream in(":(scenarios foo)\n:(scenario does_bar)\nabc def\n+layer1: pqr");
   list<string> lines;
   tangle(in, lines);
+  CHECK_EQ(lines.front(), "#line 1");  lines.pop_front();
   CHECK_EQ(lines.front(), "#line 3");  lines.pop_front();
   CHECK_EQ(lines.front(), "TEST(does_bar)");  lines.pop_front();
   CHECK_EQ(lines.front(), "  foo(\"abc def\\n\");");  lines.pop_front();
@@ -141,6 +170,7 @@ void test_tangle_can_hide_warnings_in_scenarios() {
   istringstream in(":(scenario does_bar)\nhide warnings\nabc def\n+layer1: pqr\n+layer2: xyz");
   list<string> lines;
   tangle(in, lines);
+  CHECK_EQ(lines.front(), "#line 1");  lines.pop_front();
   CHECK_EQ(lines.front(), "#line 2");  lines.pop_front();
   CHECK_EQ(lines.front(), "TEST(does_bar)");  lines.pop_front();
   CHECK_EQ(lines.front(), "  Hide_warnings = true;");  lines.pop_front();
@@ -154,6 +184,7 @@ void test_tangle_supports_strings_in_scenarios() {
   istringstream in(":(scenario does_bar)\nabc \"def\"\n+layer1: pqr\n+layer2: \"xyz\"");
   list<string> lines;
   tangle(in, lines);
+  CHECK_EQ(lines.front(), "#line 1");  lines.pop_front();
   CHECK_EQ(lines.front(), "#line 2");  lines.pop_front();
   CHECK_EQ(lines.front(), "TEST(does_bar)");  lines.pop_front();
   CHECK_EQ(lines.front(), "  run(\"abc \\\"def\\\"\\n\");");  lines.pop_front();
@@ -166,6 +197,7 @@ void test_tangle_supports_strings_in_scenarios2() {
   istringstream in(":(scenario does_bar)\nabc \"\"\n+layer1: pqr\n+layer2: \"\"");
   list<string> lines;
   tangle(in, lines);
+  CHECK_EQ(lines.front(), "#line 1");  lines.pop_front();
   CHECK_EQ(lines.front(), "#line 2");  lines.pop_front();
   CHECK_EQ(lines.front(), "TEST(does_bar)");  lines.pop_front();
   CHECK_EQ(lines.front(), "  run(\"abc \\\"\\\"\\n\");");  lines.pop_front();
@@ -178,6 +210,7 @@ void test_tangle_supports_multiline_input_in_scenarios() {
   istringstream in(":(scenario does_bar)\nabc def\n  efg\n+layer1: pqr\n+layer2: \"\"");
   list<string> lines;
   tangle(in, lines);
+  CHECK_EQ(lines.front(), "#line 1");  lines.pop_front();
   CHECK_EQ(lines.front(), "#line 2");  lines.pop_front();
   CHECK_EQ(lines.front(), "TEST(does_bar)");  lines.pop_front();
   CHECK_EQ(lines.front(), "  run(\"abc def\\n  efg\\n\");");  lines.pop_front();
@@ -190,6 +223,7 @@ void test_tangle_supports_reset_in_scenarios() {
   istringstream in(":(scenario does_bar)\nabc def\n===\nefg\n+layer1: pqr\n+layer2: \"\"");
   list<string> lines;
   tangle(in, lines);
+  CHECK_EQ(lines.front(), "#line 1");  lines.pop_front();
   CHECK_EQ(lines.front(), "#line 2");  lines.pop_front();
   CHECK_EQ(lines.front(), "TEST(does_bar)");  lines.pop_front();
   CHECK_EQ(lines.front(), "  run(\"abc def\\n\");");  lines.pop_front();
@@ -204,6 +238,7 @@ void test_tangle_can_check_for_absence_at_end_of_scenarios() {
   istringstream in(":(scenario does_bar)\nabc def\n  efg\n+layer1: pqr\n-layer1: xyz");
   list<string> lines;
   tangle(in, lines);
+  CHECK_EQ(lines.front(), "#line 1");  lines.pop_front();
   CHECK_EQ(lines.front(), "#line 2");  lines.pop_front();
   CHECK_EQ(lines.front(), "TEST(does_bar)");  lines.pop_front();
   CHECK_EQ(lines.front(), "  run(\"abc def\\n  efg\\n\");");  lines.pop_front();
@@ -217,6 +252,7 @@ void test_tangle_can_check_for_absence_at_end_of_scenarios2() {
   istringstream in(":(scenario does_bar)\nabc def\n  efg\n-layer1: pqr\n-layer1: xyz");
   list<string> lines;
   tangle(in, lines);
+  CHECK_EQ(lines.front(), "#line 1");  lines.pop_front();
   CHECK_EQ(lines.front(), "#line 2");  lines.pop_front();
   CHECK_EQ(lines.front(), "TEST(does_bar)");  lines.pop_front();
   CHECK_EQ(lines.front(), "  run(\"abc def\\n  efg\\n\");");  lines.pop_front();