Exemplo n.º 1
0
Arquivo: ptest.c Projeto: 08opt/CPlus
static void ptest_signal(int sig) {

  test_passing = 0;
  
  switch( sig ) {
    case SIGFPE:  sprintf(assert_err_buff,
      "        %i. Division by Zero\n", assert_err_num+1);
    break;
    case SIGILL:  sprintf(assert_err_buff,
      "        %i. Illegal Instruction\n", assert_err_num+1);
    break;
    case SIGSEGV: sprintf(assert_err_buff,
      "        %i. Segmentation Fault\n", assert_err_num+1);
    break;
  }
  
  assert_err_num++;
  strcat(assert_err, assert_err_buff);
  
  pt_color(RED); 
  printf("Failed! \n\n%s\n", assert_err);
  pt_color(DEFAULT);
  
  puts("    | Stopping Execution.");
  fflush(stdout);
  exit(0);
  
}
Exemplo n.º 2
0
void pt_run() {
  
  printf("    \n");
  printf("    +-------------------------------------------+\n");
  printf("    | ptest          MicroTesting Magic for C   |\n");
  printf("    |                                           |\n");
  printf("    | Daniel Holden ([email protected]) |\n");
  printf("    +-------------------------------------------+\n");
  
  signal(SIGFPE,  ptest_signal);
  signal(SIGILL,  ptest_signal);
  signal(SIGSEGV, ptest_signal);
  
  start = clock();
  strcpy(current_suite, "");
  
  for(int i = 0; i < num_tests; i++) {
    
    test_t test = tests[i];
    
    /* Check for transition to a new suite */
    if (strcmp(test.suite, current_suite)) {
      
      /* Don't increment any counter for first entrance */
      if (strcmp(current_suite, "")) {
        if (suite_passing) {
          num_suites_passes++;
        } else {
          num_suites_fails++;
        }
      }
    
      suite_passing = true;
      strcpy(current_suite, test.suite);
      printf("\n\n  ===== %s =====\n\n", current_suite);
    }
    
    /* Run Test */
    
    test_passing = true;
    strcpy(assert_err, "");
    strcpy(assert_err_buff, "");
    assert_err_num = 0;
    printf("    | %s ... ", test.name);
    
    test.func();
    
    suite_passing = suite_passing && test_passing;
    
    if (test_passing) {
      num_tests_passes++;
      pt_color(GREEN);  printf("Passed! \n"); pt_color(WHITE);
    } else {
      num_tests_fails++;
      pt_color(RED);    printf("Failed! \n\n%s\n", assert_err); pt_color(WHITE);
    }
    
  }
  
  if (suite_passing) {
    num_suites_passes++;
  } else {
    num_suites_fails++;
  }
  
  end = clock();
  
  printf("  \n");
  printf("  +---------------------------------------------------+\n");
  printf("  |                      Summary                      |\n");
  printf("  +---------++------------+-------------+-------------+\n");
  
  printf("  | Suites  ||");
  pt_color(YELLOW); printf(" Total %4d ",  num_suites);        pt_color(WHITE); printf("|");
  pt_color(GREEN);  printf(" Passed %4d ", num_suites_passes); pt_color(WHITE); printf("|");
  pt_color(RED);    printf(" Failed %4d ", num_suites_fails);  pt_color(WHITE); printf("|\n");
  
  printf("  | Tests   ||");
  pt_color(YELLOW); printf(" Total %4d ",  num_tests);         pt_color(WHITE); printf("|");
  pt_color(GREEN);  printf(" Passed %4d ", num_tests_passes);  pt_color(WHITE); printf("|");
  pt_color(RED);    printf(" Failed %4d ", num_tests_fails);   pt_color(WHITE); printf("|\n");
  
  printf("  | Asserts ||");
  pt_color(YELLOW); printf(" Total %4d ",  num_asserts);       pt_color(WHITE); printf("|");
  pt_color(GREEN);  printf(" Passed %4d ", num_assert_passes); pt_color(WHITE); printf("|");
  pt_color(RED);    printf(" Failed %4d ", num_assert_fails);  pt_color(WHITE); printf("|\n");
  
  printf("  +---------++------------+-------------+-------------+\n");
  printf("  \n");
  
  double total = (double)(end - start) / CLOCKS_PER_SEC;
  
  printf("      Total Running Time: %0.3fs\n\n", total);
}
Exemplo n.º 3
0
Arquivo: ptest.c Projeto: 08opt/CPlus
int pt_run(void) {
  
  unsigned int i;
  double total;
  test_t test;

  puts("");
  puts("    +-------------------------------------------+");
  puts("    | ptest          MicroTesting Magic for C   |");
  puts("    |                                           |");
  puts("    | http://github.com/orangeduck/ptest        |");
  puts("    |                                           |");
  puts("    | Daniel Holden ([email protected]) |");
  puts("    +-------------------------------------------+");
  
  signal(SIGFPE,  ptest_signal);
  signal(SIGILL,  ptest_signal);
  signal(SIGSEGV, ptest_signal);
  
  start = clock();
  strcpy(current_suite, "");
  
  for(i = 0; i < num_tests; i++) {

    test = tests[i];
    
    /* Check for transition to a new suite */
    if (strcmp(test.suite, current_suite)) {

      /* Don't increment any counter for first entrance */
      if (strcmp(current_suite, "")) {
        if (suite_passing) {
          num_suites_passes++;
        } else {
          num_suites_fails++;
        }
      }
    
      suite_passing = 1;
      strcpy(current_suite, test.suite);
      printf("\n\n  ===== %s =====\n\n", current_suite);
    }
    
    /* Run Test */
    
    test_passing = 1;
    strcpy(assert_err, "");
    strcpy(assert_err_buff, "");
    assert_err_num = 0;
    printf("    | %s ... ", test.name);
    fflush(stdout);
    
    test.func();
    
    suite_passing = suite_passing && test_passing;
    
    if (test_passing) {
      num_tests_passes++;
      pt_color(GREEN);
      puts("Passed!");
      pt_color(DEFAULT);
    } else {
      num_tests_fails++;
      pt_color(RED); 
      printf("Failed! \n\n%s\n", assert_err);
      pt_color(DEFAULT);
    }
    
  }
  
  if (suite_passing) {
    num_suites_passes++;
  } else {
    num_suites_fails++;
  }
  
  end = clock();
  
  puts("");
  puts("  +---------------------------------------------------+");
  puts("  |                      Summary                      |");
  puts("  +---------++------------+-------------+-------------+");
  
  printf("  | Suites  ||");
  pt_color(YELLOW);  printf(" Total %4d ",  num_suites);        
  pt_color(DEFAULT); putchar('|');
  pt_color(GREEN);   printf(" Passed %4d ", num_suites_passes); 
  pt_color(DEFAULT); putchar('|');
  pt_color(RED);     printf(" Failed %4d ", num_suites_fails);  
  pt_color(DEFAULT); puts("|");
  
  printf("  | Tests   ||");
  pt_color(YELLOW);  printf(" Total %4d ",  num_tests);         
  pt_color(DEFAULT); putchar('|');
  pt_color(GREEN);   printf(" Passed %4d ", num_tests_passes);  
  pt_color(DEFAULT); putchar('|');
  pt_color(RED);     printf(" Failed %4d ", num_tests_fails);   
  pt_color(DEFAULT); puts("|");
  
  printf("  | Asserts ||");
  pt_color(YELLOW);  printf(" Total %4d ",  num_asserts);       
  pt_color(DEFAULT); putchar('|');
  pt_color(GREEN);   printf(" Passed %4d ", num_assert_passes); 
  pt_color(DEFAULT); putchar('|');
  pt_color(RED);     printf(" Failed %4d ", num_assert_fails);  
  pt_color(DEFAULT); puts("|");
  
  puts("  +---------++------------+-------------+-------------+");
  puts("");
  
  total = (double)(end - start) / CLOCKS_PER_SEC;
  
  printf("      Total Running Time: %0.3fs\n\n", total);
  
  if (num_suites_fails > 0) { return 1; } else { return 0; }
}