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; }
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(); }