68 lines
1.9 KiB
C
68 lines
1.9 KiB
C
#include "sorted_set.h"
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#define REF(dtype, value) ((dtype []){ (value) })
|
|
|
|
void print_set(const sorted_str_set* set) {
|
|
for (int i = 0; i < set->size; ++i) {
|
|
printf("\"%s\": %d\n", set->data[i].key, *(int*)set->data[i].element);
|
|
}
|
|
}
|
|
|
|
int main() {
|
|
|
|
sorted_str_set *set = sorted_str_set_new(sizeof(int));
|
|
|
|
printf("%p\n", sorted_str_set_get(set, "zero"));
|
|
|
|
printf("-%d\n", strcmp("-one", "one"));
|
|
|
|
sorted_str_set_insert(set, "three", REF(int, 3));
|
|
sorted_str_set_insert(set, "one", REF(int, 1));
|
|
sorted_str_set_insert(set, "-one", REF(int, -1));
|
|
sorted_str_set_insert(set, "four", REF(int, 4));
|
|
sorted_str_set_insert(set, "two", REF(int, 2));
|
|
|
|
print_set(set);
|
|
|
|
printf("\nsize: %lu\n", set->size);
|
|
printf("%d\n", *(int*)sorted_str_set_get(set, "one"));
|
|
printf("%d\n", *(int*)sorted_str_set_get(set, "two"));
|
|
printf("%d\n", *(int*)sorted_str_set_get(set, "three"));
|
|
printf("%d\n", *(int*)sorted_str_set_get(set, "four"));
|
|
printf("%d\n", *(int*)sorted_str_set_get(set, "-one"));
|
|
|
|
printf("\n%d should be 2\n", *(int*)sorted_str_set_insert(set, "two", REF(int, -2)));
|
|
printf("size: %lu (should be the same as before)\n", set->size);
|
|
|
|
sorted_str_set_insert(set, "ten", REF(int, 10));
|
|
sorted_str_set_insert(set, "eleven", REF(int, 11));
|
|
sorted_str_set_insert(set, "negative four", REF(int, -4));
|
|
sorted_str_set_insert(set, "fifty", REF(int, 50));
|
|
|
|
printf("%d\n", *(int*)sorted_str_set_get(set, "ten"));
|
|
printf("%d\n", *(int*)sorted_str_set_get(set, "eleven"));
|
|
printf("%d\n", *(int*)sorted_str_set_get(set, "negative four"));
|
|
printf("%d\n", *(int*)sorted_str_set_get(set, "fifty"));
|
|
|
|
printf("size: %lu\n", set->size);
|
|
|
|
print_set(set);
|
|
|
|
sorted_str_set_remove(set, "three");
|
|
sorted_str_set_remove(set, "one");
|
|
sorted_str_set_remove(set, "three");
|
|
sorted_str_set_remove(set, "four");
|
|
sorted_str_set_remove(set, "four");
|
|
|
|
printf("size: %lu\n", set->size);
|
|
|
|
print_set(set);
|
|
|
|
sorted_str_set_free(set);
|
|
|
|
return 0;
|
|
}
|