int main (int argc, char** argv) { U32 seed, startTestNb=0, pause=0, totalTest = FUZ_NB_TESTS; int argNb; seed = FUZ_GetMilliStart() % 10000; DISPLAYLEVEL (1, "FSE (%2i bits) automated test\n", (int)sizeof(void*)*8); for (argNb=1; argNb<argc; argNb++) { char* argument = argv[argNb]; if (argument[0]=='-') { argument++; while (argument[0]!=0) { switch (argument[0]) { /* seed setting */ case 's': argument++; seed=0; while ((*argument>='0') && (*argument<='9')) { seed *= 10; seed += *argument - '0'; argument++; } break; /* total tests */ case 'i': argument++; totalTest=0; while ((*argument>='0') && (*argument<='9')) { totalTest *= 10; totalTest += *argument - '0'; argument++; } break; /* jump to test nb */ case 't': argument++; startTestNb=0; while ((*argument>='0') && (*argument<='9')) { startTestNb *= 10; startTestNb += *argument - '0'; argument++; } break; /* verbose mode */ case 'v': argument++; displayLevel=4; break; /* pause (hidden) */ case 'p': argument++; pause=1; break; default: return badUsage(argv[0]); } } } } if (startTestNb == 0) unitTest(); DISPLAY("Fuzzer seed : %u \n", seed); FUZ_tests (seed, totalTest, startTestNb); DISPLAY ("\rAll %u tests passed \n", totalTest); if (pause) { int unused; DISPLAY("press enter ...\n"); unused = getchar(); (void)unused; } return 0; }
int main(int argc, char* args[]) { extern FILE *yyin; // файл module_lex.cpp extern QString resultH, resultCpp; // файл generator.cpp yyin = 0; //по умолчанию будет заполнено в функции yylex() в значение stdin const char *tsmName = args[0]; // имя запускаемого файла //обрабатываем входные параметры QString resname, filename, prefix; for ( int i=1; i<argc; ++i ) { if ( args[i][0] == '-' ) { // настроечный параметр switch (args[i][1]) { case 't': // установка типа формируемого выхода (клиент или сервер) ++i; if (strcmp(args[i], "client" )==0) tType = ttClient; else if (strcmp(args[i], "server" )==0) tType = ttServer; break; case 'r': // установка наименования результирующих файлов ++i; resname = args[i]; break; case 'p': // установка префикса выходного файла ++i; prefix = args[i]; break; //case 's': // задаем имя файлов шаблонов // case 'x': // ... //break; case 'h': // запрос справки по использованию default: // неизвестный параметр badUsage(tsmName); return 0; } } else { // последний параметр - имя файла для обработки filename = args[i]; #ifdef TSMDEBUG qDebug()<<"File to process "<<args[i]; qDebug()<<"make "<< ( (tType==ttClient) ? "client" : "server" ); #endif break; } } if ( resname=="" ) { QRegExp rx("(\\w+)\\.\\w+"); if ( rx.indexIn(filename)>=0 ) { resname = rx.cap(1); } else { resname = filename; } } if (prefix=="") prefix = "tsm_"; QRegExp rx("^" + prefix + "\\w+"); if ( !rx.exactMatch(resname) ) // если начинается не с $prefix resname = prefix + resname; qDebug() << "RES NAME = " << resname; if ( tType == ttUndefined || filename == "" ) { badUsage(tsmName); return -1; } yyin = fopen(filename.toLocal8Bit().data(), "r"); if (yyin == 0) { qCritical() << "Unable to open file " << filename; return -1; } preDefined(); int result = yyparse(); if (yyin) fclose(yyin); #ifdef TSMDEBUG //qDebug() << resultH << "\n"; //qDebug() << resultCpp << "\n"; #endif QString hGuardian = "_" + resname.toUpper() + "_H_\n"; QFile fH(resname+".h"), fCpp(resname+".cpp"); fH.open(QIODevice::WriteOnly); QTextStream outH(&fH); outH << "#ifndef " << hGuardian; outH << "#define " << hGuardian << "\n"; outH << "#include <QList>\n"; outH << "#include <tsm/tsminterface.h>\n\n"; //outH << "class Command;\n" ; // -> см. файл <tsm/commander.h> //outH << "namespace TSM { class Commander; }\n\n" ; outH << resultH; outH << "\n#endif // " << hGuardian; fCpp.open(QIODevice::WriteOnly); QTextStream outCpp(&fCpp); outCpp << "#include <cmdparser.h>\n"; outCpp << "#include <tsm/commander.h>\n\n"; outCpp << "#include \"" + resname + ".h\"\n\n"; outCpp << resultCpp << "\n"; return result; }
int main(int argc, char** argv) { // Argument parsing. Matrix* mat[2]; int matNum = 0; int dumpInputMatrices = 0; char* outFileName = 0; for(int a = 1; a < argc; ) { if( (strcmp(argv[a], "-random") == 0) && (a + 2 < argc) && (matNum < 2)) { a++; int width = 0; int height = 0; if(sscanf(argv[a++], "%d", &width) != 1) { printf("mmult: can't parse matrix width\n"); exit(1); } if(sscanf(argv[a++], "%d", &height) != 1) { printf("mmult: can't parse matrix height\n"); exit(1); } mat[matNum++] = newRandomMatrix (width, height); } else if ( (strcmp(argv[a], "-out") == 0) && (a + 1 < argc)) { a++; outFileName = argv[a++]; } else if ( strcmp(argv[a], "-dumpinput") == 0) { a++; dumpInputMatrices = 1; } else badUsage(); } if (matNum != 2) badUsage(); // Alloc the destination matrix. Matrix* matDest = newZeroMatrix (mat[1]->width, mat[0]->height); // Do the dead. struct benchtime *bt = bench_begin(); mmult(matDest, mat[0], mat[1]); bench_done(bt); // Write out matrices as files, if we were asked for them if (dumpInputMatrices) { char name[80]; snprintf(name, 80, "input1-%dx%d.mat", mat[0]->width, mat[0]->height); writeMatrixAsTextFile(name, mat[0]); snprintf(name, 80, "input2-%dx%d.mat", mat[1]->width, mat[1]->height); writeMatrixAsTextFile(name, mat[1]); } if(outFileName != 0) writeMatrixAsTextFile(outFileName, matDest); // Dump checksum printf("sum = %f\n", sumMatrix(matDest)); }