:(scenario copy_literal)
recipe main [
1:number <- copy 23
]
+run: 1:number <- copy 23
+mem: storing 23 in location 1
:(scenario copy)
recipe main [
1:number <- copy 23
2:number <- copy 1:number
]
+run: 2:number <- copy 1:number
+mem: location 1 is 23
+mem: storing 23 in location 2
:(scenario copy_multiple)
recipe main [
1:number, 2:number <- copy 23, 24
]
+mem: storing 23 in location 1
+mem: storing 24 in location 2
:(before "End Types")
struct routine {
recipe_ordinal running_recipe;
long long int running_step_index;
routine(recipe_ordinal r) :running_recipe(r), running_step_index(0) {}
bool completed() const;
};
:(before "End Globals")
routine* Current_routine = NULL;
map<string, long long int> Instructions_running;
map<string, long long int> Locations_read;
map<string, long long int> Locations_read_by_instruction;
:(code)
void run(recipe_ordinal r) {
routine rr(r);
Current_routine = &rr;
run_current_routine();
}
void run_current_routine()
{
while (!Current_routine->completed())
{
if (current_instruction().is_label) { ++current_step_index(); continue; }
trace(Initial_callstack_depth + Trace_stream->callstack_depth, "run") << current_instruction().to_string() << end();
if (get_or_insert(Memory, 0) != 0) {
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Mu - 051scenario_test.mu</title>
<meta name="Generator" content="Vim/7.4">
<meta name="plugin-version" content="vim7.4_v1">
<meta name="syntax" content="none">
<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=">
<meta name="colorscheme" content="minimal">
<style type="text/css">
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #eeeeee; background-color: #080808; }
body { font-family: monospace; color: #eeeeee; background-color: #080808; }
* { font-size: 1.05em; }
.muScenario { color: #00af00; }
.Comment { color: #9090ff; }
.Constant { color: #00a0a0; }
.Special { color: #ff6060; }
-->
</style>
<script type='text/javascript'>
<!--
-->
</script>
</head>
<body>
<pre id='vimCodeElement'>
<span class="Comment"># tests for 'scenario' in previous layer</span>
<span class="muScenario">scenario</span> first_scenario_in_mu [
run [
<span class="Constant">1</span>:number<span class="Special"> <- </span>add <span class="Constant">2</span>, <span class="Constant">2</span>
]
memory-should-contain [
<span class="Constant">1</span><span class="Special"> <- </span><span class="Constant">4</span>
]
]
<span class="muScenario">scenario</span> scenario_with_comment_in_mu [
run [
<span class="Comment"># comment</span>
<span class="Constant">1</span>:number<span class="Special"> <- </span>add <span class="Constant">2</span>, <span class="Constant">2</span>
]
memory-should-contain [
<span class="Constant">1</span><span class="Special"> <- </span><span class="Constant">4</span>
]
]
<span class="muScenario">scenario</span> scenario_with_multiple_comments_in_mu [
run [
<span class="Comment"># comment1</span>
<span class="Comment"># comment2</span>
<span class="Constant">1</span>:number<span class="Special"> <- </span>add <span class="Constant">2</span>, <span class="Constant">2</span>
]
memory-should-contain [
<span class="Constant">1</span><span class="Special"> <- </span><span class="Constant">4</span>
]
]
<span class="muScenario">scenario</span> check_text_in_memory [
run [
<span class="Constant">1</span>:number<span class="Special"> <- </span>copy <span class="Constant">3</span>
<span class="Constant">2</span>:character<span class="Special"> <- </span>copy <span class="Constant">97</span> <span class="Comment"># 'a'</span>
<span class="Constant">3</span>:character<span class="Special"> <- </span>copy <span class="Constant">98</span> <span class="Comment"># 'b'</span>
<span class="Constant">4</span>:character<span class="Special"> <- </span>copy <span class="Constant">99</span> <span class="Comment"># 'c'</span>
]
memory-should-contain [
<span class="Constant">1</span>:array:character<span class="Special"> <- </span><span class="Constant">[abc]</span>
]
]
<span class="muScenario">scenario</span> check_trace [
run [
<span class="Constant">1</span>:number<span class="Special"> <- </span>add <span class="Constant">2</span>, <span class="Constant">2</span>
]
trace-should-contain [
mem: storing <span class="Constant">4</span> in location <span class="Constant">1</span>
]
]
<span class="muScenario">scenario</span> check_trace_negative [
run [
<span class="Constant">1</span>:number<span class="Special"> <- </span>add <span class="Constant">2</span>, <span class="Constant">2</span>
]
trace-should-not-contain [
mem: storing <span class="Constant">5</span> in location <span class="Constant">1</span>
]
]
<span class="muScenario">scenario</span> check_trace_instruction [
run [
trace <span class="Constant">1</span>, <span class="Constant">[foo]</span>, <span class="Constant">[aaa]</span>
]
trace-should-contain [
foo: aaa
]
]
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->