test_graph.c (1547B)
1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <assert.h> 4 #include "graph.h" 5 6 static void test_graph_maker() { 7 graph_t g; 8 graph_init(&g, 10); 9 10 // create Petersen graph 11 graph_add_edge(&g, 0, 1); 12 graph_add_edge(&g, 0, 4); 13 graph_add_edge(&g, 0, 5); 14 graph_add_edge(&g, 1, 2); 15 graph_add_edge(&g, 1, 6); 16 graph_add_edge(&g, 2, 3); 17 graph_add_edge(&g, 2, 7); 18 graph_add_edge(&g, 3, 4); 19 graph_add_edge(&g, 3, 8); 20 graph_add_edge(&g, 4, 9); 21 graph_add_edge(&g, 5, 7); 22 graph_add_edge(&g, 7, 9); 23 graph_add_edge(&g, 9, 6); 24 graph_add_edge(&g, 6, 8); 25 graph_add_edge(&g, 8, 5); 26 27 graph_clear(&g); 28 } 29 30 static void test_graph_bfs() { 31 graph_t g; 32 graph_init(&g, 10); 33 34 // create Petersen graph 35 graph_add_edge(&g, 0, 1); 36 graph_add_edge(&g, 0, 4); 37 graph_add_edge(&g, 0, 5); 38 graph_add_edge(&g, 1, 2); 39 graph_add_edge(&g, 1, 6); 40 graph_add_edge(&g, 2, 3); 41 graph_add_edge(&g, 2, 7); 42 graph_add_edge(&g, 3, 4); 43 graph_add_edge(&g, 3, 8); 44 graph_add_edge(&g, 4, 9); 45 graph_add_edge(&g, 5, 7); 46 graph_add_edge(&g, 7, 9); 47 graph_add_edge(&g, 9, 6); 48 graph_add_edge(&g, 6, 8); 49 graph_add_edge(&g, 8, 5); 50 51 uint64_t expected[10] = {0, 1, 4, 5, 2, 6, 3, 9, 7, 8}; 52 uint64_t t; 53 size_t i; 54 55 graph_bfs_t bfs; 56 graph_bfs_init(&bfs, &g, 0); 57 58 for(i = 0; i < 10; i++) { 59 t = graph_bfs_next(&bfs, &g); 60 assert(t == expected[i]); 61 } 62 63 assert(graph_bfs_next(&bfs, &g) == UINT64_MAX); 64 65 graph_bfs_clear(&bfs); 66 67 graph_clear(&g); 68 } 69 70 int main() { 71 test_graph_maker(); 72 test_graph_bfs(); 73 74 printf("tests ok\n"); 75 }