dict

Dictionary for sd_t's
git clone git://www.tkruger.se/dict.git
Log | Files | Refs | README

test_dict.c (1955B)


      1 #include <stdlib.h>
      2 #include <stdio.h>
      3 #include <assert.h>
      4 #include "dict.h"
      5 
      6 static void test_dict_init() {
      7   size_t i;
      8   dict_t d;
      9   dict_init_size(&d, 20);
     10 
     11   assert(d.nalloc == 20);
     12   assert(d.nelts == 0);
     13   assert(d.keys != NULL);
     14   assert(d.values != NULL);
     15   assert(d.nvalues != NULL);
     16   assert(d.value_alloc != NULL);
     17 
     18   for (i = 0; i < d.nalloc; i++) {
     19     assert(d.nvalues[i] == 0);
     20     assert(d.value_alloc[i] == 0);
     21     assert(d.keys[i] == NULL);
     22     assert(d.values[i] == NULL);
     23   }
     24 
     25   dict_clear(&d);
     26 
     27   dict_init(&d);
     28 
     29   assert(d.nalloc == DICT_DEFAULT_SIZE);
     30   assert(d.nelts == 0);
     31   assert(d.keys != NULL);
     32   assert(d.values != NULL);
     33   assert(d.nvalues != NULL);
     34   assert(d.value_alloc != NULL);
     35 
     36   for (i = 0; i < d.nalloc; i++) {
     37     assert(d.nvalues[i] == 0);
     38     assert(d.value_alloc[i] == 0);
     39     assert(d.keys[i] == NULL);
     40     assert(d.values[i] == NULL);
     41   }
     42 
     43   dict_clear(&d);
     44 }
     45 
     46 static void test_dict_insert() {
     47   dict_t d;
     48   dict_init_size(&d, 4);
     49 
     50   sd_t elts[7];
     51   uint64_t values[7] = {1,2,3,4,5,6,7};
     52   size_t i;
     53   for(i = 0; i < 7; i++) {
     54     sd_init_u64(&elts[i], 2*i+1);
     55     dict_insert(&d, elts[i], &values[i]);
     56   }
     57 
     58   assert(d.nelts == 7);
     59   assert(d.nalloc >= 7);
     60 
     61   for(i = 0; i < 7; i++)
     62     sd_clear(&elts[i]);
     63   dict_clear(&d);
     64 }
     65 
     66 static void test_dict_lookup() {
     67   dict_t d;
     68   dict_init_size(&d, 4);
     69 
     70   sd_t elts[7];
     71   uint64_t values[7] = {1,2,3,4,5,6,7};
     72   size_t i;
     73   for(i = 0; i < 7; i++) {
     74     sd_init_u64(&elts[i], 2*i+1);
     75     dict_insert(&d, elts[i], &values[i]);
     76   }
     77 
     78   sd_t pelt[2];
     79   sd_init_u64(&pelt[0], 5);
     80   sd_init_u64(&pelt[1], 37);
     81 
     82   for(i = 0; i < 7; i++)
     83     assert(* (uint64_t*) dict_lookup(&d, elts[i]) == i+1);
     84 
     85   assert(* (uint64_t*)  dict_lookup(&d, pelt[0]) == 3);
     86   assert(dict_lookup(&d, pelt[1]) == NULL);
     87 
     88   for(i = 0; i < 7; i++)
     89     sd_clear(&elts[i]);
     90   dict_clear(&d);
     91 }
     92 
     93 
     94 int main() {
     95   test_dict_init();
     96   test_dict_insert();
     97   test_dict_lookup();
     98 
     99   printf("test ok\n");
    100 }