void test_block_as_assertions_list(Block* block, std::string const& contextStr) { if (has_static_errors(block)) { std::cout << "Static error " << contextStr << ":" << std::endl; print_static_errors_formatted(block, std::cout); declare_current_test_failed(); return; } std::stringstream checkInvariantsOutput; if (!block_check_invariants_print_result(block, checkInvariantsOutput)) { std::cout << "Failed invariant " << contextStr << std::endl; std::cout << checkInvariantsOutput.str() << std::endl; declare_current_test_failed(); return; } Stack context; evaluate_block(&context, block); if (context.errorOccurred) { std::cout << "Runtime error " << contextStr << std::endl; print_error_stack(&context, std::cout); declare_current_test_failed(); return; } int boolean_statements_found = 0; for (int i=0; i < block->length(); i++) { Term* term = block->get(i); if (!is_statement(term)) continue; if (!is_bool(term_value(term))) continue; boolean_statements_found++; if (!as_bool(term_value(term))) { std::cout << "Assertion failed " << contextStr << std::endl; std::cout << "failed: " << get_term_source_text(term) << std::endl; declare_current_test_failed(); return; } } if (boolean_statements_found == 0) { std::cout << "No boolean statements found " << contextStr << std::endl; declare_current_test_failed(); return; } }
void test_assert_function(Block* block, int line, const char* file) { if (!block_check_invariants_print_result(block, std::cout)) { std::cout << "Block failed invariant check in " << file << ", line " << line << std::endl; declare_current_test_failed(); } List errors; check_for_static_errors(&errors, block); if (!errors.empty()) { std::cout << "Block has static errors at " << file << ", line " << line << std::endl; print_static_errors_formatted(&errors, std::cout); declare_current_test_failed(); } }
void test_assert_function(Block* block, int line, const char* file) { Value str; if (!block_check_invariants_print_result(block, &str)) { std::cout << as_cstring(&str) << std::endl; std::cout << "Block failed invariant check in " << file << ", line " << line << std::endl; declare_current_test_failed(); } Value errors; check_for_static_errors(&errors, block); if (!errors.isEmpty()) { std::cout << "Block has static errors at " << file << ", line " << line << std::endl; print_static_errors_formatted(&errors, &str); std::cout << as_cstring(&str) << std::endl; declare_current_test_failed(); } }