graph

Graph/multigraph type
git clone git://www.tkruger.se/graph.git
Log | Files | Refs | README

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 }