labfy-investigation/tests/test_investigation_node.c
grayTerminal-sh 2bd29e6208 arbo
2026-07-13 13:57:25 +02:00

233 lines
5.3 KiB
C

/******************************************************************************
* @file test_investigation_node.c
* @brief Tests du module InvestigationNode.
******************************************************************************/
#include "core/investigation_node.h"
#include <assert.h>
#include <stdio.h>
#include <string.h>
static void test_directory_node(void)
{
InvestigationNode *node = NULL;
node = investigation_node_new(
"01_Preuves_Originales",
INVESTIGATION_NODE_DIRECTORY
);
assert(node != NULL);
assert(strcmp(
investigation_node_get_name(node),
"01_Preuves_Originales"
) == 0);
assert(
investigation_node_get_type(node) ==
INVESTIGATION_NODE_DIRECTORY
);
assert(investigation_node_get_parent(node) == NULL);
assert(investigation_node_get_children_count(node) == 0);
investigation_node_free(node);
}
static void test_file_node(void)
{
InvestigationNode *node = NULL;
node = investigation_node_new(
"Chronologie.md",
INVESTIGATION_NODE_FILE
);
assert(node != NULL);
assert(strcmp(
investigation_node_get_name(node),
"Chronologie.md"
) == 0);
assert(
investigation_node_get_type(node) ==
INVESTIGATION_NODE_FILE
);
investigation_node_free(node);
}
static void test_add_children(void)
{
InvestigationNode *root = NULL;
InvestigationNode *database_directory = NULL;
InvestigationNode *database_file = NULL;
const InvestigationNode *returned_child = NULL;
root = investigation_node_new(
"Template",
INVESTIGATION_NODE_DIRECTORY
);
database_directory = investigation_node_new(
"00_BaseDeDonnees",
INVESTIGATION_NODE_DIRECTORY
);
database_file = investigation_node_new(
"Enquete.sqlite",
INVESTIGATION_NODE_FILE
);
assert(root != NULL);
assert(database_directory != NULL);
assert(database_file != NULL);
assert(
investigation_node_add_child(
root,
database_directory
)
);
assert(
investigation_node_add_child(
database_directory,
database_file
)
);
assert(investigation_node_get_children_count(root) == 1);
assert(
investigation_node_get_children_count(
database_directory
) == 1
);
returned_child = investigation_node_get_child(root, 0);
assert(returned_child == database_directory);
assert(
investigation_node_get_parent(database_directory) ==
root
);
assert(
investigation_node_get_parent(database_file) ==
database_directory
);
/*
* root possède database_directory,
* qui possède database_file.
* La destruction est donc récursive.
*/
investigation_node_free(root);
}
static void test_invalid_additions(void)
{
InvestigationNode *directory = NULL;
InvestigationNode *file = NULL;
InvestigationNode *child = NULL;
InvestigationNode *second_parent = NULL;
directory = investigation_node_new(
"Directory",
INVESTIGATION_NODE_DIRECTORY
);
file = investigation_node_new(
"File.txt",
INVESTIGATION_NODE_FILE
);
child = investigation_node_new(
"Child",
INVESTIGATION_NODE_DIRECTORY
);
second_parent = investigation_node_new(
"SecondParent",
INVESTIGATION_NODE_DIRECTORY
);
assert(directory != NULL);
assert(file != NULL);
assert(child != NULL);
assert(second_parent != NULL);
assert(!investigation_node_add_child(NULL, child));
assert(!investigation_node_add_child(directory, NULL));
assert(!investigation_node_add_child(file, child));
assert(!investigation_node_add_child(directory, directory));
assert(investigation_node_add_child(directory, child));
assert(!investigation_node_add_child(second_parent, child));
/*
* directory possède désormais child.
*/
investigation_node_free(directory);
investigation_node_free(file);
investigation_node_free(second_parent);
}
static void test_invalid_index(void)
{
InvestigationNode *node = NULL;
node = investigation_node_new(
"Template",
INVESTIGATION_NODE_DIRECTORY
);
assert(node != NULL);
assert(investigation_node_get_child(node, 0) == NULL);
assert(investigation_node_get_child(node, 42) == NULL);
assert(investigation_node_get_child(NULL, 0) == NULL);
investigation_node_free(node);
}
static void test_invalid_names(void)
{
assert(
investigation_node_new(
NULL,
INVESTIGATION_NODE_FILE
) == NULL
);
assert(
investigation_node_new(
"",
INVESTIGATION_NODE_FILE
) == NULL
);
}
static void test_null_behaviour(void)
{
assert(investigation_node_get_name(NULL) == NULL);
assert(investigation_node_get_children_count(NULL) == 0);
assert(investigation_node_get_parent(NULL) == NULL);
investigation_node_free(NULL);
}
int main(void)
{
test_directory_node();
test_file_node();
test_add_children();
test_invalid_additions();
test_invalid_index();
test_invalid_names();
test_null_behaviour();
printf(
"InvestigationNode : tous les tests de hiérarchie sont valides.\n"
);
return 0;
}