Пример #1
0
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;
}
Пример #2
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;
}
Пример #3
0
Файл: Main.c Проект: DDCSF/repa
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));
}