Files
agent_compositor_test/references/igraph-1.0.1/tests/unit/igraph_diversity.c
T
Abdelrahman Said a11edf0c53 Add graph references
2026-06-28 13:49:01 +01:00

87 lines
2.5 KiB
C

#include <igraph.h>
#include "test_utilities.h"
int main(void) {
igraph_t g;
igraph_vector_t result;
igraph_vector_t weights;
igraph_vector_init(&result, 0);
/* null graph */
igraph_empty(&g, 0, IGRAPH_UNDIRECTED);
igraph_vector_init(&weights, 0);
printf("Null graph:\n");
igraph_diversity(&g, &weights, &result, igraph_vss_all());
print_vector(&result);
igraph_vector_destroy(&weights);
igraph_destroy(&g);
/* graph with no edges */
igraph_empty(&g, 5, IGRAPH_UNDIRECTED);
igraph_vector_init(&weights, 0);
printf("Empty graph:\n");
igraph_diversity(&g, &weights, &result, igraph_vss_all());
print_vector(&result);
igraph_vector_destroy(&weights);
igraph_destroy(&g);
/* real graph */
igraph_small(&g, 4, IGRAPH_UNDIRECTED, 0,1, 0,2, 1,2, 1,3, 2,3, -1);
igraph_vector_init_int_end(&weights, -1, 3, 2, 8, 1, 1, -1);
printf("Graph with 4 nodes and 5 edges:\n");
igraph_diversity(&g, &weights, &result, igraph_vss_all());
print_vector(&result);
igraph_vector_destroy(&weights);
igraph_destroy(&g);
/* degree-one vertices */
igraph_kary_tree(&g, 10, 2, IGRAPH_TREE_UNDIRECTED);
igraph_vector_init_range(&weights, 1, igraph_ecount(&g) + 1);
printf("Tree (having degree-one vertices):\n");
igraph_diversity(&g, &weights, &result, igraph_vss_all());
print_vector(&result);
igraph_vector_destroy(&weights);
igraph_destroy(&g);
/* error conditions are tested from now on */
VERIFY_FINALLY_STACK();
/* graph with multiple edges */
igraph_small(&g, 3, IGRAPH_UNDIRECTED, 0,1, 0,2, 2,0, -1);
igraph_vector_init_int_end(&weights, -1, 3, 2, 8, -1);
CHECK_ERROR(igraph_diversity(&g, &weights, &result, igraph_vss_all()), IGRAPH_EINVAL);
igraph_vector_destroy(&weights);
igraph_destroy(&g);
/* negative weights */
igraph_small(&g, 3, IGRAPH_UNDIRECTED, 0,1, 0,2, 2,1, -1);
igraph_vector_init_int_end(&weights, -1, 3, -2, 8, -1);
CHECK_ERROR(igraph_diversity(&g, &weights, &result, igraph_vss_all()), IGRAPH_EINVAL);
igraph_vector_destroy(&weights);
igraph_destroy(&g);
/* directed graph */
igraph_small(&g, 3, IGRAPH_DIRECTED, 0,1, 0,2, -1);
igraph_vector_init_int_end(&weights, -1, 3, 2, -1);
CHECK_ERROR(igraph_diversity(&g, &weights, &result, igraph_vss_all()), IGRAPH_EINVAL);
igraph_vector_destroy(&weights);
igraph_destroy(&g);
igraph_vector_destroy(&result);
VERIFY_FINALLY_STACK();
return 0;
}