loa

Virtual machine for the Logic of Assumptions
git clone git://juanmeleiro.mat.br/loa
Log | Files | Refs

assoc.test.c (1403B)


      1 #include <stdbool.h>
      2 #include <assert.h>
      3 #include <stdio.h>
      4 
      5 #include "symbol.h"
      6 #include "assoc.h"
      7 
      8 bool
      9 test_get_after_set_is_id()
     10 {
     11 	symbol k = intern("k");
     12 
     13 	assoc *a = new_assoc();
     14 	assoc_set(a, k, (void*)123);
     15 	bool res = (assoc_get(a, k) == (void*)123);
     16 	free_assoc(a);
     17 	return res;
     18 }
     19 
     20 bool
     21 test_amount_of_keys()
     22 {
     23 	symbol k = intern("k");
     24 	symbol l = intern("l");
     25 	symbol m = intern("m");
     26 	assoc *a = new_assoc();
     27 
     28 	assoc_set(a, k, (void*)1);
     29 	assoc_set(a, l, (void*)2);
     30 	assoc_set(a, m, (void*)3);
     31 
     32 	bool res = (get_amount_of_keys(a) == 3);
     33 
     34 	free_assoc(a);
     35 
     36 	return res;
     37 }
     38 
     39 bool
     40 test_keys()
     41 {
     42 	symbol k = intern("k");
     43 	symbol l = intern("l");
     44 	symbol m = intern("m");
     45 	assoc *a = new_assoc();
     46 
     47 	assoc_set(a, k, (void*)1);
     48 	assoc_set(a, l, (void*)2);
     49 	assoc_set(a, m, (void*)3);
     50 
     51 	symbol *keys = get_keys(a);
     52 	size_t num_keys = get_amount_of_keys(a);
     53 
     54 	bool res = true;
     55 	for (size_t i = 0; i < num_keys; i++) {
     56 		res &= (
     57 			keys[i] == k ||
     58 			keys[i] == l ||
     59 			keys[i] == m
     60 		);
     61 
     62 		res &= (assoc_get(a, keys[i]) != NULL);
     63 	}
     64 
     65 	free_assoc(a);
     66 
     67 	return res;
     68 }
     69 
     70 void
     71 test_many_keys()
     72 {
     73 	assoc *a = new_assoc();
     74 	char k[2] = "a";
     75 	for (char c = 'a'; c <= 'z'; c++) {
     76 		k[0] = c;
     77 		assoc_set(a, intern(k), (void*)1);
     78 	}
     79 	assert(get_amount_of_keys(a) == 26);
     80 }
     81 
     82 int
     83 main()
     84 {
     85 	assert(test_get_after_set_is_id());
     86 	assert(test_amount_of_keys());
     87 	assert(test_keys());
     88 	test_many_keys();
     89 	return 0;
     90 }