From 65361948ca7975553757a0e0df4ac7352413044c Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Thu, 14 May 2015 16:04:45 -0700 Subject: 1376 - update github docs --- html/050scenario.cc.html | 109 ++++++++++++++++++++++++++++------------------- 1 file changed, 65 insertions(+), 44 deletions(-) (limited to 'html/050scenario.cc.html') diff --git a/html/050scenario.cc.html b/html/050scenario.cc.html index 9037d68c..b1f294fa 100644 --- a/html/050scenario.cc.html +++ b/html/050scenario.cc.html @@ -2,7 +2,7 @@ -Mu - 050scenario.cc +~/Desktop/s/mu/050scenario.cc @@ -15,13 +15,13 @@ body { font-family: monospace; color: #d0d0d0; background-color: #000000; } * { font-size: 1em; } .cSpecial { color: #008000; } .CommentedCode { color: #6c6c6c; } +.traceAbsent { color: #c00000; } .Constant { color: #008080; } .Comment { color: #8080ff; } .Delimiter { color: #c000c0; } .Special { color: #ff6060; } .Identifier { color: #008080; } .SalientComment { color: #00ffff; } -.traceAbsent { color: #c00000; } .traceContains { color: #008000; } --> @@ -44,7 +44,7 @@ body { font-family: monospace; color: #d0d0d0; background-color: #000000; } :(scenario scenario_block) scenario foo [ run [ - 1:integer <- copy 13:literal + 1:number <- copy 13:literal ] memory-should-contain [ 1 <- 13 @@ -55,13 +55,13 @@ scenario foo [ :(scenario scenario_multiple_blocks) scenario foo [ run [ - 1:integer <- copy 13:literal + 1:number <- copy 13:literal ] memory-should-contain [ 1 <- 13 ] run [ - 2:integer <- copy 13:literal + 2:number <- copy 13:literal ] memory-should-contain [ 1 <- 13 @@ -72,7 +72,7 @@ scenario foo [ :(scenario scenario_check_memory_and_trace) scenario foo [ run [ - 1:integer <- copy 13:literal + 1:number <- copy 13:literal trace [a], [a b c] ] memory-should-contain [ @@ -124,10 +124,22 @@ time_t mu_time; time("\nMu tests: " << ctime(&mu_time); for (index_t i = 0; i < Scenarios.size(); ++i) { //? cerr << Passed << '\n'; //? 1 - run_mu_scenario(Scenarios[i]); +//? cerr << i << ": " << Scenarios.at(i).name << '\n'; //? 3 + run_mu_scenario(Scenarios.at(i)); if (Passed) cerr << "."; } +//: Convenience: run a single named scenario. +:(before "Loading Commandline Files") +if (argc == 2 && Run_tests) { + for (index_t i = 0; i < Scenarios.size(); ++i) { + if (Scenarios.at(i).name == argv[1]) { + run_mu_scenario(Scenarios.at(i)); + return 0; + } + } +} + :(before "End Globals") const scenario* Current_scenario = NULL; :(code) @@ -162,7 +174,7 @@ void run_mu_scenario(const scenario& s#? % Trace_stream->dump_layer = "all"; recipe main [ run [ - 1:integer <- copy 13:literal + 1:number <- copy 13:literal ] ] +mem: storing 13 in location 1 @@ -173,26 +185,26 @@ RUN, Recipe_number["run"] = RUN; :(before "End Primitive Recipe Implementations") case RUN: { -//? cout << "recipe " << current_instruction().ingredients[0].name << '\n'; //? 1 +//? cout << "recipe " << current_instruction().ingredients.at(0).name << '\n'; //? 1 ostringstream tmp; - tmp << "recipe run" << Next_recipe_number << " [ " << current_instruction().ingredients[0].name << " ]"; + tmp << "recipe run" << Next_recipe_number << " [ " << current_instruction().ingredients.at(0).name << " ]"; //? Show_rest_of_stream = true; //? 1 vector<recipe_number> tmp_recipe = load(tmp.str()); // Predefined Scenario Locals In Run. // End Predefined Scenario Locals In Run. transform_all(); -//? cout << tmp_recipe[0] << ' ' << Recipe_number["main"] << '\n'; //? 1 - Current_routine->calls.push(call(tmp_recipe[0])); +//? cout << tmp_recipe.at(0) << ' ' << Recipe_number["main"] << '\n'; //? 1 + Current_routine->calls.push_front(call(tmp_recipe.at(0))); continue; // not done with caller; don't increment current_step_index() } :(scenario run_multiple) recipe main [ run [ - 1:integer <- copy 13:literal + 1:number <- copy 13:literal ] run [ - 2:integer <- copy 13:literal + 2:number <- copy 13:literal ] ] +mem: storing 13 in location 1 @@ -217,8 +229,8 @@ MEMORY_SHOULD_CONTAIN, Recipe_number["memory-should-contain"] = MEMORY_SHOULD_CONTAIN; :(before "End Primitive Recipe Implementations") case MEMORY_SHOULD_CONTAIN: { -//? cout << current_instruction().ingredients[0].name << '\n'; //? 1 - check_memory(current_instruction().ingredients[0].name); +//? cout << current_instruction().ingredients.at(0).name << '\n'; //? 1 + check_memory(current_instruction().ingredients.at(0).name); break; } @@ -235,7 +247,7 @@ void check_memory(const string& s(lhs, in); continue; } - int address = to_int(lhs); + int address = to_number(lhs); skip_whitespace_and_comments(in); string _assign; in >> _assign; assert(_assign == "<-"); skip_whitespace_and_comments(in); @@ -257,8 +269,8 @@ void check_memory(const string& s(const string& lhs, istream& in) { reagent x(lhs); - if (x.properties[0].second[0] == "string") { - x.set_value(to_int(x.name)); + if (x.properties.at(0).second.at(0) == "string") { + x.set_value(to_number(x.name)); skip_whitespace_and_comments(in); string _assign = next_word(in); assert(_assign == "<-"); @@ -266,8 +278,8 @@ void check_type(const string& lhs(in); index_t address = x.value; // exclude quoting brackets - assert(literal[0] == '['); literal.erase(0, 1); - assert(literal[literal.size()-1] == ']'); literal.erase(literal.size()-1); + assert(*literal.begin() == '['); literal.erase(literal.begin()); + assert(*--literal.end() == ']'); literal.erase(--literal.end()); check_string(address, literal); return; } @@ -281,8 +293,8 @@ void check_string(index_t address; // now skip length for (index_t i = 0; i < literal.size(); ++i) { trace("run") << "checking location " << address+i; - if (Memory[address+i] != literal[i]) - raise << "expected location " << (address+i) << " to contain " << literal[i] << " but saw " << Memory[address+i] << '\n'; + if (Memory[address+i] != literal.at(i)) + raise << "expected location " << (address+i) << " to contain " << literal.at(i) << " but saw " << Memory[address+i] << '\n'; } } @@ -299,10 +311,10 @@ recipe main [ :(scenario memory_check_string_length) % Hide_warnings = true; recipe main [ - 1:integer <- copy 3:literal - 2:integer <- copy 97:literal # 'a' - 3:integer <- copy 98:literal # 'b' - 4:integer <- copy 99:literal # 'c' + 1:number <- copy 3:literal + 2:number <- copy 97:literal # 'a' + 3:number <- copy 98:literal # 'b' + 4:number <- copy 99:literal # 'c' memory-should-contain [ 1:string <- [ab] ] @@ -311,10 +323,10 @@ recipe main [ :(scenario memory_check_string) recipe main [ - 1:integer <- copy 3:literal - 2:integer <- copy 97:literal # 'a' - 3:integer <- copy 98:literal # 'b' - 4:integer <- copy 99:literal # 'c' + 1:number <- copy 3:literal + 2:number <- copy 97:literal # 'a' + 3:number <- copy 98:literal # 'b' + 4:number <- copy 99:literal # 'c' memory-should-contain [ 1:string <- [abc] ] @@ -329,6 +341,10 @@ recipe main [ // Like runs of contiguous '+' lines, order is important. The trace checks // that the lines are present *and* in the specified sequence. (There can be // other lines in between.) +// +// Be careful not to mix setting Hide_warnings and checking the trace in .mu +// files. It'll work in C++ scenarios, but the test failure gets silently +// hidden in mu scenarios. :(scenario trace_check_warns_on_failure) % Hide_warnings = true; @@ -346,7 +362,7 @@ TRACE_SHOULD_CONTAIN, Recipe_number["trace-should-contain"] = TRACE_SHOULD_CONTAIN; :(before "End Primitive Recipe Implementations") case TRACE_SHOULD_CONTAIN: { - check_trace(current_instruction().ingredients[0].name); + check_trace(current_instruction().ingredients.at(0).name); break; } @@ -354,20 +370,25 @@ case TRACE_SHOULD_CONTAIN: { // simplified version of check_trace_contents() that emits warnings rather // than just printing to stderr bool check_trace(const string& expected) { +//? cerr << "AAA " << expected << '\n'; //? 1 Trace_stream->newline(); vector<pair<string, string> > expected_lines = parse_trace(expected); +//? cerr << "BBB " << expected_lines.size() << '\n'; //? 1 if (expected_lines.empty()) return true; index_t curr_expected_line = 0; for (vector<pair<string, pair<int, string> > >::iterator p = Trace_stream->past_lines.begin(); p != Trace_stream->past_lines.end(); ++p) { - if (expected_lines[curr_expected_line].first != p->first) continue; - if (expected_lines[curr_expected_line].second != p->second.second) continue; + if (expected_lines.at(curr_expected_line).first != p->first) continue; + if (expected_lines.at(curr_expected_line).second != p->second.second) continue; // match ++curr_expected_line; - if (curr_expected_line == expected_lines.size()) return true; + if (curr_expected_line == expected_lines.size()) { +//? cerr << "ZZZ\n"; //? 1 + return true; + } } - raise << "missing [" << expected_lines[curr_expected_line].second << "] " - << "in trace layer " << expected_lines[curr_expected_line].first << '\n'; + raise << "missing [" << expected_lines.at(curr_expected_line).second << "] " + << "in trace layer " << expected_lines.at(curr_expected_line).first << '\n'; Passed = false; return false; } @@ -376,10 +397,10 @@ vector<pair<string, string> > parse_t vector<string> buf = split(expected, "\n"); vector<pair<string, string> > result; for (index_t i = 0; i < buf.size(); ++i) { - buf[i] = trim(buf[i]); - if (buf[i].empty()) continue; - index_t delim = buf[i].find(": "); - result.push_back(pair<string, string>(buf[i].substr(0, delim), buf[i].substr(delim+2))); + buf.at(i) = trim(buf.at(i)); + if (buf.at(i).empty()) continue; + index_t delim = buf.at(i).find(": "); + result.push_back(pair<string, string>(buf.at(i).substr(0, delim), buf.at(i).substr(delim+2))); } return result; } @@ -431,7 +452,7 @@ TRACE_SHOULD_NOT_CONTAIN, Recipe_number["trace-should-not-contain"] = TRACE_SHOULD_NOT_CONTAIN; :(before "End Primitive Recipe Implementations") case TRACE_SHOULD_NOT_CONTAIN: { - check_trace_missing(current_instruction().ingredients[0].name); + check_trace_missing(current_instruction().ingredients.at(0).name); break; } @@ -442,8 +463,8 @@ bool check_trace_missing(const string& in->newline(); vector<pair<string, string> > lines = parse_trace(in); for (index_t i = 0; i < lines.size(); ++i) { - if (trace_count(lines[i].first, lines[i].second) != 0) { - raise << "unexpected [" << lines[i].second << "] in trace layer " << lines[i].first << '\n'; + if (trace_count(lines.at(i).first, lines.at(i).second) != 0) { + raise << "unexpected [" << lines.at(i).second << "] in trace layer " << lines.at(i).first << '\n'; Passed = false; return false; } -- cgit 1.4.1-2-gfad0