Ejemplo n.º 1
0
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;
    }
}
Ejemplo n.º 2
0
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();
    }
}
Ejemplo n.º 3
0
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();
    }
}