Beispiel #1
0
static int generate_test(struct TestCase *test, int *test_i)
{
    if (test->next)
        generate_test(test->next, test_i);

    *test_i += 1;
    fprintf(fout, "  subroutine funit_test%i(funit_passed_, funit_message_)\n",
            *test_i);
    fputs("    implicit none\n\n", fout);
    fputs("    logical, intent(out) :: funit_passed_\n", fout);
    fputs("    character(*), intent(out) :: funit_message_\n", fout);
    if (test->need_array_iterator)
        fputs("    integer :: funit_i_\n", fout);
    fputs("\n", fout);

    if (test->code) {
        if (generate_code(test->code))
            return -1;
    }

    fputs("\n    funit_passed_ = .true.\n", fout);
    fprintf(fout, "  end subroutine funit_test%i\n\n", *test_i);

    return 0;
}
Beispiel #2
0
static int generate_set(struct TestSet *set, int *set_i)
{
    int test_i;

    if (set->next)
        generate_set(set->next, set_i);

    tolerance = (set->tolerance > 0.0) ? set->tolerance : DEFAULT_TOLERANCE;

    (*set_i)++;
    fprintf(fout, "subroutine funit_set%i\n", *set_i);
    fputs("  use funit\n", fout);
    
    if (set->mods)
        print_use(set->mods);
    
    fputs("\n", fout);
    fputs("  implicit none\n\n", fout);
    fputs("  character*1024 :: funit_message_\n", fout);
    fputs("  logical :: funit_passed_\n\n", fout);
    
    if (set->code)
        generate_code(set->code);
    
    if (set->tests) {
        size_t max_name = max_test_name_width(set->tests);
        test_i = 0;
        generate_test_call(set, set->tests, &test_i, max_name);
    }
    
    fputs("contains\n\n", fout);
    
    if (set->setup)
        generate_support(set->setup, "setup");
    if (set->teardown)
        generate_support(set->setup, "teardown");
    if (set->tests) {
        test_i = 0;
        if (generate_test(set->tests, &test_i))
            return -1;
    }

    fprintf(fout, "end subroutine funit_set%i\n", *set_i);

    return 0;
}
bool ErlangGenerator::Generate(const FileDescriptor * file, const string & parameter, GeneratorContext* context, string * error) const
{
    typedef std::vector<std::pair<std::string,std::string> > config_vec;
    config_vec config;
    bool tests=false;
    ParseGeneratorParameter(parameter,&config);
    for(config_vec::iterator i=config.begin(); i != config.end(); ++i)
    {
        if("triq_tests" == i->first)
            tests=true;
        if("stict_naming" == i->first)
            is_strict_naming=true;
    }
    std::string name=module_name(file);
    std::stringstream out;
    out << "";
    {
        scoped_ptr<ZeroCopyOutputStream> header(context->Open("include/"+name+".hrl"));
        Printer printer(header.get(),'$');
        generate_header(printer,file);
    }

    {
        scoped_ptr<ZeroCopyOutputStream> source(context->Open("src/"+name+".erl"));
        Printer printer(source.get(),'$');
        generate_source(printer,file);
    }

    if(tests)
    {
        scoped_ptr<ZeroCopyOutputStream> source(context->Open("test/"+name+"_tests.erl"));
        Printer printer(source.get(),'$');
        generate_test(printer,file);
    }

    *error = out.str();
    return true;
}
int main()
{
    copy_test();
    copy_backward_test();
    transform_test();
    replace_test();
    replace_if_test();
    replace_copy_test();
    replace_copy_if_test();
    fill_test();
    fill_n_test();
    generate_test();
    generate_n_test();
    remove_test();
    remove_if_test();
    remove_copy_test();
    remove_copy_if_test();
    unique_test();
    unique_copy_test();
    reverse_test();
    reverse_copy_test();
    boost::report_errors();
}