First unit tests for scheduler

This commit is contained in:
Adrien Bourmault 2021-06-14 20:22:26 +02:00
parent 0319676d7e
commit 46c024efe6
No known key found for this signature in database
GPG Key ID: 6EB408FE0ACEC664
3 changed files with 225 additions and 0 deletions

22
src/tests/localworker.c Normal file
View File

@ -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 <https://www.gnu.org/licenses/>. //
//=-------------------------------------------------------------------------=//
#include "../localworker.c"

181
src/tests/scheduler.c Normal file
View File

@ -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 <https://www.gnu.org/licenses/>. //
//=-------------------------------------------------------------------------=//
#include "../scheduler.c"
#include <assert.h>
//
// 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;
}

22
src/tests/server.c Normal file
View File

@ -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 <https://www.gnu.org/licenses/>. //
//=-------------------------------------------------------------------------=//
#include "../server.c"