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"