diff --git a/src/tests/localworker.c b/src/tests/localworker.c
new file mode 100644
index 0000000..3b87380
--- /dev/null
+++ b/src/tests/localworker.c
@@ -0,0 +1,22 @@
+//=-------------------------------------------------------------------------=//
+// Local worker tests //
+// //
+// Copyright © 2021 The Gem-graph Project //
+// //
+// This file is part of gem-graph. //
+// //
+// This program is free software: you can redistribute it and/or modify //
+// it under the terms of the GNU Affero General Public License as //
+// published by the Free Software Foundation, either version 3 of the //
+// License, or (at your option) any later version. //
+// //
+// This program 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 Affero General Public License for more details. //
+// //
+// You should have received a copy of the GNU Affero General Public License //
+// along with this program. If not, see . //
+//=-------------------------------------------------------------------------=//
+
+#include "../localworker.c"
diff --git a/src/tests/scheduler.c b/src/tests/scheduler.c
new file mode 100644
index 0000000..0ca4564
--- /dev/null
+++ b/src/tests/scheduler.c
@@ -0,0 +1,181 @@
+//=-------------------------------------------------------------------------=//
+// Scheduler tests //
+// //
+// Copyright © 2021 The Gem-graph Project //
+// //
+// This file is part of gem-graph. //
+// //
+// This program is free software: you can redistribute it and/or modify //
+// it under the terms of the GNU Affero General Public License as //
+// published by the Free Software Foundation, either version 3 of the //
+// License, or (at your option) any later version. //
+// //
+// This program 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 Affero General Public License for more details. //
+// //
+// You should have received a copy of the GNU Affero General Public License //
+// along with this program. If not, see . //
+//=-------------------------------------------------------------------------=//
+
+#include "../scheduler.c"
+
+#include
+
+//
+// Tests for Center_t functions
+//
+
+void printCenters(Center_t *firstCenter)
+{
+ while (firstCenter) {
+ printf("Center %p\n\tNext %p\n\tPrev %p\n\n",
+ firstCenter,
+ firstCenter->next,
+ firstCenter->prev
+ );
+ firstCenter = firstCenter->next;
+ }
+}
+
+bool TestCenterRemove
+(void)
+{
+ Center_t *anyCenter = NULL;
+
+ // adding a something to a bad pointer
+ centerRemove(anyCenter);
+
+ //printf("* Status of centers list after deleting NULL\n");
+ //printCenters(anyCenter);
+
+ assert(anyCenter == NULL);
+
+ anyCenter = (Center_t*) calloc(1, sizeof(Center_t));
+
+ //printf("* Initial status of centers list\n");
+ //printCenters(anyCenter);
+
+ assert(anyCenter->next == NULL);
+ assert(anyCenter->prev == NULL);
+ assert(anyCenter != NULL);
+
+ // Deleting a lonely pointer
+ centerRemove(anyCenter);
+
+ //printf("* Status of centers list after deleting a lonely center\n");
+ //printCenters(anyCenter);
+
+
+ anyCenter = (Center_t*) calloc(1, sizeof(Center_t));
+ centerAdd(anyCenter, (Center_t*) calloc(1, sizeof(Center_t)));
+ centerAdd(anyCenter, (Center_t*) calloc(1, sizeof(Center_t)));
+ centerAdd(anyCenter, (Center_t*) calloc(1, sizeof(Center_t)));
+ centerAdd(anyCenter, (Center_t*) calloc(1, sizeof(Center_t)));
+ centerAdd(anyCenter, (Center_t*) calloc(1, sizeof(Center_t)));
+
+ Center_t *oldfirst = anyCenter->next;
+ Center_t *oldsecond = anyCenter->next->next;
+
+
+ // Deleting a the first pointer
+ centerRemove(anyCenter->next);
+
+ //printf("* Status of centers list after deleting the head center\n");
+ //printCenters(anyCenter);
+
+ assert(anyCenter->next == oldsecond);
+
+ return true;
+}
+
+bool TestCenterAdd(void)
+{
+ Center_t *anyCenter = NULL;
+
+ // adding a something to a bad pointer
+ centerAdd(anyCenter, NULL);
+
+ //printf("* Status of centers list after adding something to NULL\n");
+ //printCenters(anyCenter);
+
+ assert(anyCenter == NULL);
+
+ anyCenter = (Center_t*) calloc(1, sizeof(Center_t));
+
+ //printf("* Initial status of centers list\n");
+ //printCenters(anyCenter);
+
+ assert(anyCenter->next == NULL);
+ assert(anyCenter->prev == NULL);
+ assert(anyCenter != NULL);
+
+ // adding a bad pointer
+ centerAdd(anyCenter, NULL);
+
+ //printf("* Status of centers list after adding NULL\n");
+ //printCenters(anyCenter);
+
+ assert(anyCenter->next == NULL);
+ assert(anyCenter->prev == NULL);
+ assert(anyCenter != NULL);
+
+ // adding a good pointer
+ Center_t *goodpointer = (Center_t*) calloc(1, sizeof(Center_t));
+ centerAdd(anyCenter, goodpointer);
+
+ //printf("* Status of centers list after adding a center\n");
+ //printCenters(anyCenter);
+
+ assert(anyCenter != NULL);
+ assert(anyCenter->next == goodpointer);
+ assert(anyCenter->prev == NULL);
+ assert(goodpointer->prev == anyCenter);
+ assert(goodpointer->next == NULL);
+
+ // adding another good pointer
+ Center_t *newgoodpointer = (Center_t*) calloc(1, sizeof(Center_t));
+ centerAdd(anyCenter, newgoodpointer);
+
+ //printf("* Status of centers list after adding another center\n");
+ //printCenters(anyCenter);
+
+ assert(anyCenter != NULL);
+ assert(anyCenter->next == newgoodpointer);
+ assert(anyCenter->prev == NULL);
+ assert(newgoodpointer->prev == anyCenter);
+ assert(newgoodpointer->next == goodpointer);
+
+ // adding another good pointer
+ Center_t *strangepointer = (Center_t*) calloc(1, sizeof(Center_t));
+ strangepointer->next = (Center_t*)0xCAFEBABE;
+ strangepointer->prev = (Center_t*)0xCAFEBABE;
+ centerAdd(anyCenter, strangepointer);
+
+ //printf("* Status of centers list after adding a strange center\n");
+ //printCenters(anyCenter);
+
+ assert(anyCenter != NULL);
+ assert(anyCenter->next == strangepointer);
+ assert(anyCenter->prev == NULL);
+ assert(strangepointer->prev != (Center_t*)0xCAFEBABE);
+ assert(strangepointer->next != (Center_t*)0xCAFEBABE);
+
+ return true;
+}
+
+
+
+int main(int argc, char **argv)
+{
+ printf("\n==== Testing scheduler.c/centerAdd() ====\n");
+ TestCenterAdd();
+ printf("\n==== Testing scheduler.c/centerAdd() ==== : OK\n");
+
+ printf("\n==== Testing scheduler.c/centerRemove() ====\n");
+ TestCenterRemove();
+ printf("\n==== Testing scheduler.c/centerRemove() ==== : OK\n");
+
+ return 0;
+}
diff --git a/src/tests/server.c b/src/tests/server.c
new file mode 100644
index 0000000..80f92af
--- /dev/null
+++ b/src/tests/server.c
@@ -0,0 +1,22 @@
+//=-------------------------------------------------------------------------=//
+// Server tests //
+// //
+// Copyright © 2021 The Gem-graph Project //
+// //
+// This file is part of gem-graph. //
+// //
+// This program is free software: you can redistribute it and/or modify //
+// it under the terms of the GNU Affero General Public License as //
+// published by the Free Software Foundation, either version 3 of the //
+// License, or (at your option) any later version. //
+// //
+// This program 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 Affero General Public License for more details. //
+// //
+// You should have received a copy of the GNU Affero General Public License //
+// along with this program. If not, see . //
+//=-------------------------------------------------------------------------=//
+
+#include "../server.c"