1
2
3
4
5
6
7
8
9
10 package edu.uci.ics.jung.algorithms.importance;
11
12 import junit.framework.Assert;
13 import junit.framework.Test;
14 import junit.framework.TestCase;
15 import junit.framework.TestSuite;
16 import edu.uci.ics.jung.graph.DirectedGraph;
17 import edu.uci.ics.jung.graph.DirectedSparseGraph;
18 import edu.uci.ics.jung.graph.UndirectedGraph;
19 import edu.uci.ics.jung.graph.UndirectedSparseGraph;
20
21
22
23
24 public class TestBetweennessCentrality extends TestCase {
25 public static Test suite() {
26 return new TestSuite(TestBetweennessCentrality.class);
27 }
28
29 @Override
30 protected void setUp() {}
31
32
33
34
35
36
37
38 public void testRanker() {
39 UndirectedGraph<Integer,Integer> graph =
40 new UndirectedSparseGraph<Integer,Integer>();
41 for(int i=0; i<9; i++) {
42 graph.addVertex(i);
43 }
44
45 int edge = 0;
46 graph.addEdge(edge++, 0,1);
47 graph.addEdge(edge++, 0,6);
48 graph.addEdge(edge++, 1,2);
49 graph.addEdge(edge++, 1,3);
50 graph.addEdge(edge++, 2,4);
51 graph.addEdge(edge++, 3,4);
52 graph.addEdge(edge++, 4,5);
53 graph.addEdge(edge++, 5,8);
54 graph.addEdge(edge++, 7,8);
55 graph.addEdge(edge++, 6,7);
56
57 BetweennessCentrality<Integer,Integer> bc =
58 new BetweennessCentrality<Integer,Integer>(graph);
59 bc.setRemoveRankScoresOnFinalize(false);
60 bc.evaluate();
61
62
63
64
65
66 Assert.assertEquals(bc.getVertexRankScore(0)/28.0,0.2142,.001);
67 Assert.assertEquals(bc.getVertexRankScore(1)/28.0,0.2797,.001);
68 Assert.assertEquals(bc.getVertexRankScore(2)/28.0,0.0892,.001);
69 Assert.assertEquals(bc.getVertexRankScore(3)/28.0,0.0892,.001);
70 Assert.assertEquals(bc.getVertexRankScore(4)/28.0,0.2797,.001);
71 Assert.assertEquals(bc.getVertexRankScore(5)/28.0,0.2142,.001);
72 Assert.assertEquals(bc.getVertexRankScore(6)/28.0,0.1666,.001);
73 Assert.assertEquals(bc.getVertexRankScore(7)/28.0,0.1428,.001);
74 Assert.assertEquals(bc.getVertexRankScore(8)/28.0,0.1666,.001);
75
76 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(0,1)),
77 10.66666,.001);
78
79 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(0,1)),10.66666,.001);
80 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(0,6)),9.33333,.001);
81 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(1,2)),6.5,.001);
82 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(1,3)),6.5,.001);
83 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(2,4)),6.5,.001);
84 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(3,4)),6.5,.001);
85 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(4,5)),10.66666,.001);
86 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(5,8)),9.33333,.001);
87 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(6,7)),8.0,.001);
88 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(7,8)),8.0,.001);
89 }
90
91 public void testRankerDirected() {
92 DirectedGraph<Integer,Integer> graph = new DirectedSparseGraph<Integer,Integer>();
93 for(int i=0; i<5; i++) {
94 graph.addVertex(i);
95 }
96
97 int edge=0;
98 graph.addEdge(edge++, 0,1);
99 graph.addEdge(edge++, 1,2);
100 graph.addEdge(edge++, 3,1);
101 graph.addEdge(edge++, 4,2);
102
103 BetweennessCentrality<Integer,Integer> bc =
104 new BetweennessCentrality<Integer,Integer>(graph);
105 bc.setRemoveRankScoresOnFinalize(false);
106 bc.evaluate();
107
108 Assert.assertEquals(bc.getVertexRankScore(0),0,.001);
109 Assert.assertEquals(bc.getVertexRankScore(1),2,.001);
110 Assert.assertEquals(bc.getVertexRankScore(2),0,.001);
111 Assert.assertEquals(bc.getVertexRankScore(3),0,.001);
112 Assert.assertEquals(bc.getVertexRankScore(4),0,.001);
113
114 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(0,1)),2,.001);
115 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(1,2)),3,.001);
116 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(3,1)),2,.001);
117 Assert.assertEquals(bc.getEdgeRankScore(graph.findEdge(4,2)),1,.001);
118 }
119 }