diff options
Diffstat (limited to 'tangle/003tangle.test.cc')
-rw-r--r-- | tangle/003tangle.test.cc | 530 |
1 files changed, 100 insertions, 430 deletions
diff --git a/tangle/003tangle.test.cc b/tangle/003tangle.test.cc index 732c8f2e..c7cc96b4 100644 --- a/tangle/003tangle.test.cc +++ b/tangle/003tangle.test.cc @@ -6,10 +6,10 @@ void test_tangle() { "d\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "d" - "b" - "c"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "d\n" + "b\n" + "c\n"); } void test_tangle_with_linenumber() { @@ -20,13 +20,13 @@ void test_tangle_with_linenumber() { "d\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "#line 1" - "a" - "#line 5" - "d" - "#line 2" - "b" - "c"); + CHECK_TRACE_CONTENTS("tangle", "#line 1\n" + "a\n" + "#line 5\n" + "d\n" + "#line 2\n" + "b\n" + "c\n"); // no other #line directives CHECK_TRACE_DOESNT_CONTAIN("tangle", "#line 3"); CHECK_TRACE_DOESNT_CONTAIN("tangle", "#line 4"); @@ -40,11 +40,11 @@ void test_tangle_linenumbers_with_filename() { "d\n"); list<Line> dummy; tangle(in, "foo", dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "#line 5 \"foo\"" - "d" - "b" - "c"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "#line 5 \"foo\"\n" + "d\n" + "b\n" + "c\n"); } void test_tangle_line_numbers_with_multiple_filenames() { @@ -57,12 +57,12 @@ void test_tangle_line_numbers_with_multiple_filenames() { istringstream in2(":(before b)\n" "d\n"); tangle(in2, "bar", dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "#line 2 \"bar\"" - "d" - "#line 2 \"foo\"" - "b" - "c"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "#line 2 \"bar\"\n" + "d\n" + "#line 2 \"foo\"\n" + "b\n" + "c\n"); } void test_tangle_linenumbers_with_multiple_directives() { @@ -77,15 +77,15 @@ void test_tangle_linenumbers_with_multiple_directives() { ":(before c)\n" "e"); tangle(in2, "bar", dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "#line 2 \"bar\"" - "d" - "#line 2 \"foo\"" - "b" - "#line 4 \"bar\"" - "e" - "#line 3 \"foo\"" - "c"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "#line 2 \"bar\"\n" + "d\n" + "#line 2 \"foo\"\n" + "b\n" + "#line 4 \"bar\"\n" + "e\n" + "#line 3 \"foo\"\n" + "c\n"); } void test_tangle_with_multiple_filenames_after() { @@ -98,12 +98,12 @@ void test_tangle_with_multiple_filenames_after() { istringstream in2(":(after b)\n" "d\n"); tangle(in2, "bar", dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "b" - "#line 2 \"bar\"" - "d" - "#line 3 \"foo\"" - "c"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "b\n" + "#line 2 \"bar\"\n" + "d\n" + "#line 3 \"foo\"\n" + "c\n"); } void test_tangle_skip_tanglecomments() { @@ -115,12 +115,12 @@ void test_tangle_skip_tanglecomments() { "d\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "b" - "c" - "" - "" - "d"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "b\n" + "c\n" + "\n" + "\n" + "d\n"); CHECK_TRACE_DOESNT_CONTAIN("tangle", "//: 1"); } @@ -135,14 +135,14 @@ void test_tangle_with_tanglecomments_and_directive() { "e\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "#line 6" - "d" - "#line 3" - "b" - "c" - "#line 8" - "e"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "#line 6\n" + "d\n" + "#line 3\n" + "b\n" + "c\n" + "#line 8\n" + "e\n"); CHECK_TRACE_DOESNT_CONTAIN("tangle", "//: 1"); } @@ -158,14 +158,14 @@ void test_tangle_with_tanglecomments_inside_directive() { "e\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "#line 7" - "d" - "#line 3" - "b" - "c" - "#line 9" - "e"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "#line 7\n" + "d\n" + "#line 3\n" + "b\n" + "c\n" + "#line 9\n" + "e\n"); CHECK_TRACE_DOESNT_CONTAIN("tangle", "//: 1"); } @@ -176,9 +176,9 @@ void test_tangle_with_multiword_directives() { "d\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a b" - "d" - "c"); + CHECK_TRACE_CONTENTS("tangle", "a b\n" + "d\n" + "c\n"); } void test_tangle_with_quoted_multiword_directives() { @@ -188,9 +188,9 @@ void test_tangle_with_quoted_multiword_directives() { "d\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a \"b\"" - "d" - "c"); + CHECK_TRACE_CONTENTS("tangle", "a \"b\"\n" + "d\n" + "c\n"); } void test_tangle2() { @@ -201,10 +201,10 @@ void test_tangle2() { "d\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "b" - "d" - "c"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "b\n" + "d\n" + "c\n"); } void test_tangle_at_end() { @@ -215,10 +215,10 @@ void test_tangle_at_end() { "d\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "b" - "c" - "d"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "b\n" + "c\n" + "d\n"); } void test_tangle_indents_hunks_correctly() { @@ -229,10 +229,10 @@ void test_tangle_indents_hunks_correctly() { "d\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - " b" - " d" - "c"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + " b\n" + " d\n" + "c\n"); } void test_tangle_warns_on_missing_target() { @@ -261,7 +261,7 @@ void test_tangle_delete_range_of_lines() { ":(delete{} \"b\")\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a"); + CHECK_TRACE_CONTENTS("tangle", "a\n"); CHECK_TRACE_DOESNT_CONTAIN("tangle", "b"); CHECK_TRACE_DOESNT_CONTAIN("tangle", "c"); } @@ -274,9 +274,9 @@ void test_tangle_replace() { "d\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "d" - "c"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "d\n" + "c\n"); CHECK_TRACE_DOESNT_CONTAIN("tangle", "b"); } @@ -290,9 +290,9 @@ void test_tangle_replace_range_of_lines() { "e\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "d" - "e"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "d\n" + "e\n"); CHECK_TRACE_DOESNT_CONTAIN("tangle", "b {"); CHECK_TRACE_DOESNT_CONTAIN("tangle", "c"); } @@ -308,10 +308,10 @@ void test_tangle_replace_tracks_old_lines() { "e\n"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "d" - "c" - "e"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "d\n" + "c\n" + "e\n"); CHECK_TRACE_DOESNT_CONTAIN("tangle", "b {"); } @@ -325,12 +325,12 @@ void test_tangle_nested_patterns() { "e"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "c" - "b" - "c" - "e" - "d"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "c\n" + "b\n" + "c\n" + "e\n" + "d\n"); } void test_tangle_nested_patterns2() { @@ -343,346 +343,16 @@ void test_tangle_nested_patterns2() { "e"); list<Line> dummy; tangle(in, dummy); - CHECK_TRACE_CONTENTS("tangle", "a" - "c" - "b" - "c" - "e" - "d"); + CHECK_TRACE_CONTENTS("tangle", "a\n" + "c\n" + "b\n" + "c\n" + "e\n" + "d\n"); } // todo: include line numbers in tangle errors -//// scenarios - -void test_tangle_supports_scenarios() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - "+layer1: pqr\n" - "+layer2: xyz"); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer2: xyz\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_ignores_empty_lines_in_scenarios() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - "+layer1: pqr\n" - " \n" - "+layer2: xyz"); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer2: xyz\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_handles_empty_lines_in_scenarios() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - "\n" - "+layer1: pqr\n" - "+layer2: xyz"); - list<Line> lines; - tangle(in, lines); - // no infinite loop -} - -void test_tangle_supports_configurable_toplevel() { - istringstream in(":(scenarios foo)\n" - ":(scenario does_bar)\n" - "abc def\n" - "+layer1: pqr"); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " foo("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); - - istringstream cleanup(":(scenarios run)\n"); - tangle(cleanup, lines); -} - -void test_tangle_can_hide_warnings_in_scenarios() { - istringstream in(":(scenario does_bar)\n" - "% Hide_warnings = true;\n" - "abc def\n" - "+layer1: pqr\n" - "+layer2: xyz"); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " Hide_warnings = true;"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer2: xyz\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_can_include_c_code_at_end_of_scenario() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - "+layer1: pqr\n" - "+layer2: xyz\n" - "% int x = 1;"); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer2: xyz\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " int x = 1;"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_can_include_c_code_at_end_of_scenario_without_trace_expectations() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - "% int x = 1;"); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " int x = 1;"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_supports_strings_in_scenarios() { - istringstream in(":(scenario does_bar)\n" - "abc \"def\"\n" - "+layer1: pqr\n" - "+layer2: \"xyz\""); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc \\\"def\\\"\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer2: \\\"xyz\\\"\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_supports_strings_in_scenarios2() { - istringstream in(":(scenario does_bar)\n" - "abc \"\"\n" - "+layer1: pqr\n" - "+layer2: \"\""); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc \\\"\\\"\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer2: \\\"\\\"\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_supports_multiline_input_in_scenarios() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - " efg\n" - "+layer1: pqr\n" - "+layer2: \"\""); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \" efg\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer2: \\\"\\\"\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_supports_reset_in_scenarios() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - "===\n" - "efg\n" - "+layer1: pqr\n" - "+layer2: \"\""); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CLEAR_TRACE;"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"efg\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer2: \\\"\\\"\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_can_check_for_absence_at_end_of_scenarios() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - " efg\n" - "+layer1: pqr\n" - "-layer1: xyz"); - list<Line> lines; - tangle(in, lines); -//? for (list<Line>::iterator p = lines.begin(); p != lines.end(); ++p) -//? cerr << p->contents << '\n'; - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \" efg\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_DOESNT_CONTAIN(\"layer1: xyz\");"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_can_check_for_absence_at_end_of_scenarios2() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - " efg\n" - "-layer1: pqr\n" - "-layer1: xyz"); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \" efg\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_DOESNT_CONTAIN(\"layer1: pqr\");"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_DOESNT_CONTAIN(\"layer1: xyz\");"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_can_check_for_count_in_scenario() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - " efg\n" - "$layer1: 2"); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \" efg\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_COUNT(\"layer1\", 2);"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_can_handle_mu_comments_in_scenario() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - "# comment1\n" - " efg\n" - " # indented comment 2\n" - "+layer1: pqr\n" - "# comment inside expected_trace\n" - "+layer1: xyz\n" - "# comment after expected trace\n" - "-layer1: z\n" - "# comment before trace count\n" - "$layer1: 2\n" - "# comment at end\n" - "\n"); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"# comment1\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \" efg\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \" # indented comment 2\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: xyz\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_DOESNT_CONTAIN(\"layer1: z\");"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_COUNT(\"layer1\", 2);"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - -void test_tangle_can_interleave_present_and_absent_lines_to_kludgily_avoid_specifying_order() { - istringstream in(":(scenario does_bar)\n" - "abc def\n" - "+layer1: pqr\n" - "-absent\n" - "+layer2: xyz"); - list<Line> lines; - tangle(in, lines); - CHECK_EQ(lines.front().contents, "void test_does_bar() {"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " run("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"abc def\\n\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer1: pqr\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_DOESNT_CONTAIN(\"absent\");"); lines.pop_front(); - CHECK_EQ(lines.front().contents, " CHECK_TRACE_CONTENTS("); lines.pop_front(); - CHECK_EQ(lines.front().contents, " \"layer2: xyz\""); lines.pop_front(); - CHECK_EQ(lines.front().contents, " );"); lines.pop_front(); - CHECK_EQ(lines.front().contents, "}"); lines.pop_front(); - CHECK(lines.empty()); -} - //// helpers void test_trim() { |