Exemplo n.º 1
0
void test_set_remove (void) {
  Set* set;
  char buf[10];
  int i;
  unsigned int num_entries;

  set = generate_set();

  num_entries = set_num_entries (set);
  assert (num_entries == 10000);

  /* Remove some entries */

  for (i = 4000; i < 6000; ++i) {

    sprintf (buf, "%i", i);

    /* Check this is in the set */

    assert (set_query (set, buf) != 0);

    /* Remove it */

    assert (set_remove (set, buf) != 0);

    /* Check the number of entries decreases */

    assert (set_num_entries (set) == num_entries - 1);

    /* Check it is no longer in the set */

    assert (set_query (set, buf) == 0);

    --num_entries;
    }

  /* Try to remove some invalid entries */

  for (i = -1000; i < -500; ++i) {
    sprintf (buf, "%i", i);

    assert (set_remove (set, buf) == 0);
    assert (set_num_entries (set) == num_entries);
    }

  for (i = 50000; i < 51000; ++i) {
    sprintf (buf, "%i", i);

    assert (set_remove (set, buf) == 0);
    assert (set_num_entries (set) == num_entries);
    }

  set_free (set);
  }
Exemplo n.º 2
0
struct set *generate_sets(struct passed_args *args) {
/*
    Function to generate all cache sets
*/
    int number_of_sets = get_number_of_sets(args->set_index_bits_num);
    struct set *sets = malloc(number_of_sets * sizeof(struct set));
    int i = 0;
    for (i = 0; i < number_of_sets; i++) {
        generate_set(args, &sets[i], i);
    }
    return sets;
}
Exemplo n.º 3
0
int generate_code_file(struct TestSet *set, FILE *file_out)
{
    // set file-wide out file pointer
    fout = file_out;

    // XXX look for this file and emit it if not present
    fputs(module_code, fout);

    int set_i = 0;
    if (generate_set(set, &set_i))
        return -1;
    set_i = 0;
    generate_main(set, &set_i);

    return 0;
}
Exemplo n.º 4
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;
}
Exemplo n.º 5
0
void test_set_query (void) {
  Set* set;
  char buf[10];
  int i;

  set = generate_set();

  /* Test all values */

  for (i = 0; i < 10000; ++i) {
    sprintf (buf, "%i", i);
    assert (set_query (set, buf) != 0);
    }

  /* Test invalid values returning zero */

  assert (set_query (set, "-1") == 0);
  assert (set_query (set, "100001") == 0);

  set_free (set);
  }
Exemplo n.º 6
0
void test_set_iterating_remove (void) {
  Set* set;
  SetIterator iterator;
  int count;
  unsigned int removed;
  char* value;

  set = generate_set();

  count = 0;
  removed = 0;

  /* Iterate over all values in the set */

  set_iterate (set, &iterator);

  while (set_iter_has_more (&iterator)) {

    value = set_iter_next (&iterator);

    if ( (atoi (value) % 100) == 0) {

      /* Remove this value */

      set_remove (set, value);

      ++removed;
      }

    ++count;
    }

  /* Check final counts */

  assert (count == 10000);
  assert (removed == 100);
  assert (set_num_entries (set) == 10000 - removed);

  set_free (set);
  }
Exemplo n.º 7
0
void test_set_iterating (void) {
  Set* set;
  SetIterator iterator;
  int count;

  set = generate_set();

  /* Iterate over all values in the set */

  count = 0;
  set_iterate (set, &iterator);

  while (set_iter_has_more (&iterator)) {

    set_iter_next (&iterator);

    ++count;
    }

  /* Test iter_next after iteration has completed. */

  assert (set_iter_next (&iterator) == NULL);

  /* Check final count */

  assert (count == 10000);

  set_free (set);

  /* Test iterating over an empty set */

  set = set_new (int_hash, int_equal);

  set_iterate (set, &iterator);

  assert (set_iter_has_more (&iterator) == 0);

  set_free (set);
  }