本文整理汇总了C++中Branch::clear方法的典型用法代码示例。如果您正苦于以下问题:C++ Branch::clear方法的具体用法?C++ Branch::clear怎么用?C++ Branch::clear使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Branch
的用法示例。
在下文中一共展示了Branch::clear方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: test_if_elif_else
void test_if_elif_else()
{
Branch branch;
branch.compile("if true { a = 1 } elif true { a = 2 } else { a = 3 } a=a");
evaluate_branch(&branch);
test_assert(branch.contains("a"));
test_equals(branch["a"]->asInt(), 1);
branch.compile(
"if false { b = 'apple' } elif false { b = 'orange' } else { b = 'pineapple' } b=b");
evaluate_branch(&branch);
test_assert(branch.contains("b"));
test_assert(branch["b"]->asString() == "pineapple");
// try one without 'else'
branch.clear();
branch.compile("c = 0");
branch.compile("if false { c = 7 } elif true { c = 8 }; c=c");
evaluate_branch(&branch);
test_assert(branch.contains("c"));
test_assert(branch["c"]->asInt() == 8);
// try with some more complex conditions
branch.clear();
branch.compile("x = 5");
branch.compile("if x > 6 { compare = 1 } elif x < 6 { compare = -1 } else { compare = 0}");
branch.compile("compare=compare");
evaluate_branch(&branch);
test_assert(branch.contains("compare"));
test_assert(branch["compare"]->asInt() == -1);
}
示例2: test_state_simple
void test_state_simple()
{
Branch branch;
Stack context;
// Simple test, condition never changes
Term* block = branch.compile("if true { state i = 0; i += 1 }");
evaluate_branch(&context, &branch);
caValue *i = context.state.getField("_if_block")->getIndex(0)->getField("i");
test_assert(i != NULL);
test_assert(as_int(i) == 1);
evaluate_branch(&context, &branch);
i = context.state.getField("_if_block")->getIndex(0)->getField("i");
test_assert(as_int(i) == 2);
evaluate_branch(&context, &branch);
i = context.state.getField("_if_block")->getIndex(0)->getField("i");
test_assert(as_int(i) == 3);
// Same test with elif
branch.clear();
block = branch.compile("if false {} elif true { state i = 0; i += 1 }");
evaluate_branch(&context, &branch);
i = context.state.getField("_if_block")->getIndex(1)->getField("i");
test_assert(as_int(i) == 1);
evaluate_branch(&context, &branch);
i = context.state.getField("_if_block")->getIndex(1)->getField("i");
test_assert(as_int(i) == 2);
evaluate_branch(&context, &branch);
i = context.state.getField("_if_block")->getIndex(1)->getField("i");
test_assert(as_int(i) == 3);
// Same test with else
branch.clear();
Stack context2;
block = branch.compile("if false {} else { state i = 0; i += 1 }");
evaluate_branch(&context2, &branch);
i = context2.state.getField("_if_block")->getIndex(1)->getField("i");
test_assert(as_int(i) == 1);
evaluate_branch(&context2, &branch);
i = context2.state.getField("_if_block")->getIndex(1)->getField("i");
test_assert(as_int(i) == 2);
evaluate_branch(&context2, &branch);
i = context2.state.getField("_if_block")->getIndex(1)->getField("i");
test_assert(as_int(i) == 3);
}
示例3: generate_source_for_function_calls
void generate_source_for_function_calls() {
Branch branch;
Term* a = create_int(&branch, 5, "a");
Term* b = create_int(&branch, 9, "b");
Term* c = apply(&branch, "add", TermList(a,b));
test_assert(should_print_term_source_line(a));
test_assert(should_print_term_source_line(b));
test_assert(should_print_term_source_line(c));
test_equals(get_branch_source_text(&branch), "a = 5\nb = 9\nadd(a, b)");
// Same test with anonymous values
branch.clear();
Term* d = create_int(&branch, 3);
Term* e = create_int(&branch, 4);
/*Term* f =*/ apply(&branch, "add", TermList(d,e));
/*
TODO, fix this
test_assert(!should_print_term_source_line(d));
test_assert(!should_print_term_source_line(e));
test_assert(should_print_term_source_line(f));
test_equals(get_branch_source_text(branch), "add(3, 4)");
// Do a test where some calls are parser-created, and then user-created calls
// are added.
branch.clear();
branch.compile("a = 1");
branch.compile("b = 2");
a = create_int(branch, 3, "c");
b = create_int(branch, 4, "d");
apply(branch, "add", TermList(a,b));
test_equals(get_branch_source_text(branch), "a = 1\nb = 2\nc = 3\nd = 4\nadd(c, d)");
*/
}
示例4: test_execution
void test_execution()
{
Branch branch;
internal_debug_function::spy_clear();
// Start off with some simple expressions
branch.compile("if true { test_spy('Success 1') }");
branch.compile("if false { test_spy('Fail') }");
branch.compile("if (1 + 2) > 1 { test_spy('Success 2') }");
branch.compile("if (1 + 2) < 1 { test_spy('Fail') }");
evaluate_branch(&branch);
test_assert(&branch);
test_equals(internal_debug_function::spy_results(), "['Success 1', 'Success 2']");
// Use 'else'
branch.clear();
internal_debug_function::spy_clear();
branch.compile("if true { test_spy('Success 1') } else { test_spy('Fail') }");
branch.compile("if false { test_spy('Fail') } else { test_spy('Success 2') }");
branch.compile("if true { test_spy('Success 3-1') test_spy('Success 3-2') test_spy('Success 3-3') } "
"else { test_spy('Fail') }");
branch.compile("if false { test_spy('Fail') test_spy('Fail 2') } "
"else { test_spy('Success 4-1') test_spy('Success 4-2') test_spy('Success 4-3') }");
evaluate_branch(&branch);
test_assert(&branch);
test_equals(internal_debug_function::spy_results(),
"['Success 1', 'Success 2', 'Success 3-1', 'Success 3-2', 'Success 3-3', "
"'Success 4-1', 'Success 4-2', 'Success 4-3']");
// Do some nested blocks
branch.clear();
internal_debug_function::spy_clear();
branch.compile("if true { if false { test_spy('Error!') } else { test_spy('Nested 1') } } "
"else { test_spy('Error!') }");
evaluate_branch(&branch);
test_assert(&branch);
test_equals(internal_debug_function::spy_results(), "['Nested 1']");
branch.clear();
internal_debug_function::spy_clear();
branch.compile("if false { test_spy('Error!') } else { if false { test_spy('Error!') } "
"else { test_spy('Nested 2') } }");
evaluate_branch(&branch);
test_assert(&branch);
test_equals(internal_debug_function::spy_results(), "['Nested 2']");
branch.clear();
internal_debug_function::spy_clear();
branch.compile("if false { test_spy('Error!') }"
"else { if true { test_spy('Nested 3') } else { test_spy('Error!') } }");
evaluate_branch(&branch);
test_assert(&branch);
test_equals(internal_debug_function::spy_results(), "['Nested 3']");
branch.clear();
internal_debug_function::spy_clear();
branch.compile("if true { if false { test_spy('Error!') } else { test_spy('Nested 4') } } "
"else { test_spy('Error!') }");
evaluate_branch(&branch);
test_assert(&branch);
test_equals(internal_debug_function::spy_results(), "['Nested 4']");
branch.clear();
internal_debug_function::spy_clear();
branch.compile(
"if (false)\n"
" test_spy('Error!')\n"
"else\n"
" if (true)\n"
" if (false)\n"
" test_spy('Error!')\n"
" else\n"
" if (false)\n"
" test_spy('Error!')\n"
" else\n"
" if (true)\n"
" test_spy('Nested 5')\n"
" else\n"
" test_spy('Error!')\n"
" test_spy('Error!')\n"
);
evaluate_branch(&branch);
test_assert(&branch);
test_equals(internal_debug_function::spy_results(), "['Nested 5']");
}