aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlessandro Iezzi <aiezzi@alessandroiezzi.it>2023-03-13 17:24:03 +0100
committerAlessandro Iezzi <aiezzi@alessandroiezzi.it>2023-03-13 17:24:03 +0100
commitb889758f19a058b7dae49954cba8d51efb42a218 (patch)
treeedad4ac8e9f3a9974bba93bb156b1707691c1a25 /test
parent3f846f386c6e51f707ab418b549e4fb4180960de (diff)
downloadutils-b889758f19a058b7dae49954cba8d51efb42a218.tar.gz
utils-b889758f19a058b7dae49954cba8d51efb42a218.zip
Rewrite tests
Diffstat (limited to 'test')
-rw-r--r--test/main.c62
-rw-r--r--test/test_list.c180
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");
+}