diff options
author | 2023-03-13 17:24:03 +0100 | |
---|---|---|
committer | 2023-03-13 17:24:03 +0100 | |
commit | b889758f19a058b7dae49954cba8d51efb42a218 (patch) | |
tree | edad4ac8e9f3a9974bba93bb156b1707691c1a25 | |
parent | 3f846f386c6e51f707ab418b549e4fb4180960de (diff) | |
download | utils-b889758f19a058b7dae49954cba8d51efb42a218.tar.gz utils-b889758f19a058b7dae49954cba8d51efb42a218.zip |
Rewrite tests
-rw-r--r-- | test/main.c | 62 | ||||
-rw-r--r-- | test/test_list.c | 180 |
2 files changed, 206 insertions, 36 deletions
diff --git a/test/main.c b/test/main.c index 87eb324..e826502 100644 --- a/test/main.c +++ b/test/main.c @@ -21,45 +21,35 @@ #include <stdlib.h> #include <string.h> #include <list.h> +#include <map.h> -int main(int argc, char** argv) -{ - int i; - list_item_t *current, *r; - char buffer[4]; - char *dest = malloc(sizeof(char) * 4); - - iterator_t it; - - list_t list1 = clist_create(); - list_t list2 = clist_create(); - - for (i = 0; i < 2; i++) { - sprintf(buffer, "%d", i); - strcpy(dest, "i"); - strcat(dest, buffer); - clist_add(&list1, dest, sizeof(int)); - } +void test_list1(); +void test_list2(); +void test_list3(); +void test_list4(); +void test_list5(); +void test_list6(); - for (i = 0; i < 5; i++) { - sprintf(buffer, "%d", i); - strcpy(dest, "j"); - strcat(dest, buffer); - clist_add(&list2, dest, sizeof(int)); - if (i == 3) r = list2.last; - } - - clist_remove(&list2, r); - clist_add_all(&list1, &list2); +void +test_map() +{ + map_t map = cmap_create(); + cmap_put(&map, "hi", "test"); + cmap_put(&map, "hello", "test"); + cmap_put(&map, "good", "test"); + cmap_put(&map, "best", "test"); +} - printf("Version: %s\n\n", clist_version()); - printf("read from list with iterator:\n"); +int main(int argc, char** argv) +{ + test_list1(); + test_list2(); + test_list3(); + test_list4(); + test_list5(); + test_list6(); - it = clist_iterator(&list1); - while(clist_iterator_has_next(&it)) { - current = clist_iterator_next(&it); - printf("%s\n", (char *) current->data); - } + test_map(); - return 0; + return 0; } diff --git a/test/test_list.c b/test/test_list.c new file mode 100644 index 0000000..8bfffe1 --- /dev/null +++ b/test/test_list.c @@ -0,0 +1,180 @@ +/* + * Copyright (C) 2022-2023 Alessandro Iezzi <aiezzi AT alessandroiezzi PERIOD it> + * + * This file is part of libutils. + * + * libutils is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * libutils is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with libutils. If not, see <https://www.gnu.org/licenses/>. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <list.h> +#include <map.h> + +#define assert(c) if (c == 0) { printf("%d", __LINE__); exit(1);} +#define log(str) printf("%s: %s\n", __func__, str); + +void +test_list1() +{ + /* Test adding elements in a list */ + log("Running..."); + + const char *data = "hello"; + + list_t list = clist_create(); + clist_add(&list, (void *) data); + + assert(list.first == list.last); + assert(strcmp(list.first->data, data) == 0); + assert(list.size == 1); + + log("OK\n"); +} + +void +test_list2() +{ + /* Test iterator */ + log("Running..."); + + char *data1 = strdup("hello"); + + list_t list = clist_create(); + clist_add(&list, data1); + + iterator_t it = clist_iterator(&list); + assert(clist_iterator_has_next(it)); + + void *data2 = clist_iterator_next(&it); + assert(data2 != NULL); + assert(strcmp(data1, data2) == 0); + + assert(clist_iterator_has_next(it) == 0); + + log("OK\n"); +} + +void +test_list3() +{ + /* Test adding a collection to another one */ + log("Running..."); + + list_t l1 = clist_create(); + list_t l2 = clist_create(); + + clist_add(&l1, "test1"); + clist_add(&l2, "test2"); + + clist_add_all(&l1, &l2); + + iterator_t i = clist_iterator(&l1); + if (clist_iterator_has_next(i)) + assert(strcmp(clist_iterator_next(&i), "test1") == 0); + + if (clist_iterator_has_next(i)) + assert(strcmp(clist_iterator_next(&i), "test2") == 0); + + assert(l1.size == 2); + + log("OK\n"); +} + +void +test_list4() +{ + /* Test adding a collection to another one and add a new element */ + log("Running..."); + + list_t l1 = clist_create(); + list_t l2 = clist_create(); + + clist_add(&l1, "test1"); + clist_add(&l2, "test2"); + clist_add_all(&l1, &l2); + + /* add a new element */ + clist_add(&l1, "test3"); + + iterator_t i = clist_iterator(&l1); + if (clist_iterator_has_next(i)) + assert(strcmp(clist_iterator_next(&i), "test1") == 0); + + if (clist_iterator_has_next(i)) + assert(strcmp(clist_iterator_next(&i), "test2") == 0); + + if (clist_iterator_has_next(i)) + assert(strcmp(clist_iterator_next(&i), "test3") == 0); + + log("OK\n"); +} + +void +test_list5() +{ + log("Running..."); + + +list_item_t *r; + char buffer[4]; + char *dest = malloc(sizeof(char) * 4); + + iterator_t it; + + list_t list1 = clist_create(); + list_t list2 = clist_create(); + + for (int i = 0; i < 2; i++) { + sprintf(buffer, "%d", i); + strcpy(dest, "i"); + strcat(dest, buffer); + clist_add(&list1, dest); + } + + for (int i = 0; i < 5; i++) { + sprintf(buffer, "%d", i); + strcpy(dest, "j"); + strcat(dest, buffer); + clist_add(&list2, dest); + if (i == 3) r = list2.last; + } + + clist_remove(&list2, r); + clist_add_all(&list1, &list2); + + + printf("read from list with iterator:\n"); + + it = clist_iterator(&list1); + while(clist_iterator_has_next(it)) { + printf("%s\n", (char *) clist_iterator_next(&it)); + } + + printf("%s\n", (char *) list1.first->data); + log("OK\n"); +} + +void +test_list6() +{ + log("Running..."); + + char buff[127]; + sprintf(buff, "Version: %s", clist_version()); + log(buff); + + log("OK\n"); +} |