Commit | Line | Data |
---|---|---|
15d1825d BA |
1 | #include "tests/helpers.h" |
2 | #include "sources/connexity.h" | |
3 | ||
4 | //completely disconnected graph (no edges) | |
5 | void test_connexity1() | |
6 | { | |
7 | int n = 10; | |
8 | int* lengthNIix = (int*)calloc(n,sizeof(int)); | |
9 | int** NIix = (int**)malloc(n*sizeof(int*)); | |
10 | for (int i=0; i<n; i++) NIix[i] = NULL; | |
11 | int* cc = getConnectedComponents_core(NIix, lengthNIix, n); | |
12 | //cc should contain all integers from 1 to n | |
13 | ASSERT_TRUE(countDistinctValues(cc,n) == n); | |
14 | free(lengthNIix); | |
15 | free(NIix); | |
16 | free(cc); | |
17 | } | |
18 | ||
19 | //bipartite graph | |
20 | void test_connexity2() | |
21 | { | |
22 | int n = 10; | |
23 | int* lengthNIix = (int*)malloc(n*sizeof(int)); | |
24 | int** NIix = (int**)malloc(n*sizeof(int*)); | |
25 | for (int i=0; i<n; i++) | |
26 | { | |
27 | lengthNIix[i] = 1; | |
28 | NIix[i] = (int*)malloc(sizeof(int)); | |
29 | } | |
30 | // connect 0 with 1, 2 with 3 ... | |
31 | for (int i=0; i<n; i+=2) | |
32 | { | |
33 | NIix[i][0] = i+1; | |
34 | NIix[i+1][0] = i; | |
35 | } | |
36 | int* cc = getConnectedComponents_core(NIix, lengthNIix, n); | |
37 | //cc should contain exactly n/2 integers | |
38 | ASSERT_TRUE(countDistinctValues(cc,n) == n/2); | |
39 | free(lengthNIix); | |
40 | for (int i=0; i<n; i++) | |
41 | free(NIix[i]); | |
42 | free(NIix); | |
43 | free(cc); | |
44 | } | |
45 | ||
46 | //~ //cyclic graph | |
47 | //~ void test_connexity3() { | |
48 | //~ int n = 10; | |
49 | //~ int* adjMat = (int*)calloc(n*n,sizeof(int)); | |
50 | //~ // connect 0 with 1, 1 with 2 ... | |
51 | //~ for (int i=0; i<n; i++) { | |
52 | //~ adjMat[i+n*((i+1)%n)] = TRUE; | |
53 | //~ adjMat[(i+1)%n+n*i] = TRUE; | |
54 | //~ } | |
55 | //~ int* cc = getConnectedComponents_core(adjMat, n); | |
56 | //~ //cc should contain only one value (presumably '1') | |
57 | //~ warnIfFails(countDistinctValues(cc,n) == 1, "c3", ""); | |
58 | //~ free(adjMat); | |
59 | //~ free(cc); | |
60 | //~ } | |
61 | //~ | |
62 | //~ //custom graph with 3 connex components | |
63 | //~ void test_connexity4() { | |
64 | //~ int n = 10; | |
65 | //~ | |
66 | //~ | |
67 | //~ {2,4}, | |
68 | //~ {2,4}, | |
69 | //~ {0,1}, | |
70 | //~ {5,8,9}, | |
71 | //~ {0,1}, | |
72 | //~ {3,7}, | |
73 | //~ {}, | |
74 | //~ {5,9}, | |
75 | //~ {3}, | |
76 | //~ {3,7} | |
77 | //~ | |
78 | //~ int adjMat[100] = | |
79 | //~ { | |
80 | //~ 0,0,1,0,1,0,0,0,0,0, | |
81 | //~ 0,0,1,0,1,0,0,0,0,0, | |
82 | //~ 1,1,0,0,0,0,0,0,0,0, | |
83 | //~ 0,0,0,0,0,1,0,0,1,1, | |
84 | //~ 1,1,0,0,0,0,0,0,0,0, | |
85 | //~ 0,0,0,1,0,0,0,1,0,0, | |
86 | //~ 0,0,0,0,0,0,0,0,0,0, | |
87 | //~ 0,0,0,0,0,1,0,0,0,1, | |
88 | //~ 0,0,0,1,0,0,0,0,0,0, | |
89 | //~ 0,0,0,1,0,0,0,1,0,0 | |
90 | //~ }; | |
91 | //~ int* cc = getConnectedComponents_core(adjMat, n); | |
92 | //~ //cc should contain exactly 3 values | |
93 | //~ warnIfFails(countDistinctValues(cc,n) == 3, "c4", ""); | |
94 | //~ free(cc); | |
95 | //~ } | |
96 | //~ | |
97 | //~ //custom graph, 1 connex component | |
98 | //~ void test_connexity5() { | |
99 | //~ int n = 10; | |
100 | //~ int adjMat[100] = | |
101 | //~ { | |
102 | //~ 0,0,1,1,0,0,0,1,0,0, | |
103 | //~ 0,0,1,0,1,0,1,0,0,0, | |
104 | //~ 1,1,0,0,0,0,0,0,0,0, | |
105 | //~ 1,0,0,0,0,1,0,0,1,1, | |
106 | //~ 0,1,0,0,0,0,0,0,0,0, | |
107 | //~ 0,0,0,1,0,0,0,1,0,0, | |
108 | //~ 0,1,0,0,0,0,0,0,0,0, | |
109 | //~ 1,0,0,0,0,1,0,0,0,1, | |
110 | //~ 0,0,0,1,0,0,0,0,0,0, | |
111 | //~ 0,0,0,1,0,0,0,1,0,0 | |
112 | //~ }; | |
113 | //~ int* cc = getConnectedComponents_core(adjMat, n); | |
114 | //~ //cc should contain only one value (presumably '1') | |
115 | //~ warnIfFails(countDistinctValues(cc,n) == 1, "c5", ""); | |
116 | //~ free(cc); | |
117 | //~ } |