#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include "../mecha/mecha.h"

void testArray();
void testMap();

int main(int argc, char **argv) {
    testMap();
}

void testMap() {
    struct mapShash map;

    mapFhash_init(&map, NULL, NULL,
            (int (*)(const void *, const void *, size_t))strncmp, 16);

    char *first = "first";
    char *last = "last";
    char *firstn = "Alex";
    char *lastn = "Leigh";

    mapFhash_set(&map, first, strlen(first)+1, firstn);
    int ret = mapFhash_set(&map, last, strlen(last)+1, lastn);

    char *name;

    ret = mapFhash_get((void **)&name, &map, first, strlen(first)+1);

    if(ret!=0) {
        printf("mapFhash_get() failed.");
        exit(1);
    }

    printf("Found Name: %s\n", name);

    mapFhash_free(&map);
}

void testArray() {
    struct lstSarray a;

    lstFarray_init(&a, 5);
    lstFarray_add(&a, "alex", NULL);
    lstFarray_add(&a, "abcd", NULL);
    lstFarray_add(&a, "defg", NULL);

    for(int i=0;i<a.size;i++) {
        char *z;
        lstFarray_get((void **)&z, &a, i);
        printf("%s\n", z);
    }

    printf("---\n");

    lstFarray_remove(&a, 1);
    lstFarray_set(&a, 1, "alex");

    for(int i=0;i<a.size;i++) {
        char *z;
        lstFarray_get((void **)&z, &a, i);
        printf("%s\n", z);
    }

    lstFarray_free(&a, NULL);
}