Как мне провести минимальный юнит-тест в с? - PullRequest
0 голосов
/ 27 января 2019

Я написал код для синтаксического анализатора для языка программирования черепах LOGO и мне нужно его протестировать.

Я бы хотел использовать минимальную единицу измерения (http://www.jera.com/techinfo/jtns/jtn002.html#Example), так как это кажется наиболее простым способом тестирования. Ниже приведен небольшой раздел кода моего анализатора. Пожалуйста, не могли бы вы привести пример, используя мой собственныйкод о том, как реализовать минимальное модульное тестирование?

Заранее спасибо:)

int main(int argc, char **argv)
{
   int x;
   FILE *input_file;
   Prog input; /* struct to hold file*/

   if (check_inputs(argc) != true) {
      return EXIT_FAILURE;
   }

   input.current_line = 0;
   for(x=0; x<MAX_LINES; x++) {
     input.words[x][0] = '\0';
   }

   input_file = fopen(argv[1], "r");
   if (input_file == NULL) {
      fclose(input_file);
      fprintf(stderr, "Failed to open %s\n", argv[1]);
      return EXIT_FAILURE;
   }

   x = 0;
   while(fscanf(input_file, "%s", input.words[x++]) == 1
                                     && x < MAX_LINES) {
      assert(x < MAX_LINES);
   }

   start_parse(&input);
   printf("All instructions parsed okay if no other error messages printed!\n");
   fclose(input_file);
   free(input_file);
   return EXIT_SUCCESS;
}


/*check command line inputs and return file name as a string*/
int check_inputs (int argc)
{
   if (argc != ARG_NUM) {
      fprintf(stderr,"Incorrect number of argumemts.\n");
      return false;
   }
   return true;
 }


/*structs */
struct prog {
   char words[MAX_LINES][MT_SIZE];
   int vars[NUM_VARS];
   int current_line;
   int current_var;
};
typedef struct prog Prog;
...