1
2
3
4
5
6
7
8
9
10
11
12 package edu.uci.ics.jung.algorithms.scoring;
13
14 import java.util.HashMap;
15 import java.util.HashSet;
16 import java.util.Map;
17 import java.util.Set;
18
19 import junit.framework.TestCase;
20
21 import com.google.common.base.Functions;
22
23 import edu.uci.ics.jung.graph.Graph;
24 import edu.uci.ics.jung.graph.UndirectedSparseMultigraph;
25
26
27
28
29
30 public class TestVoltageScore extends TestCase
31 {
32 protected Graph<Number,Number> g;
33
34 @Override
35 public void setUp() {
36 g = new UndirectedSparseMultigraph<Number,Number>();
37 for (int i = 0; i < 7; i++) {
38 g.addVertex(i);
39 }
40
41 int j = 0;
42 g.addEdge(j++,0,1);
43 g.addEdge(j++,0,2);
44 g.addEdge(j++,1,3);
45 g.addEdge(j++,2,3);
46 g.addEdge(j++,3,4);
47 g.addEdge(j++,3,5);
48 g.addEdge(j++,4,6);
49 g.addEdge(j++,5,6);
50 }
51
52 public final void testCalculateVoltagesSourceTarget() {
53 VoltageScorer<Number,Number> vr = new VoltageScorer<Number,Number>(g, Functions.<Number>constant(1), 0, 6);
54 double[] voltages = {1.0, 0.75, 0.75, 0.5, 0.25, 0.25, 0};
55
56 vr.evaluate();
57 for (int i = 0; i < 7; i++) {
58 assertEquals(vr.getVertexScore(i), voltages[i], 0.01);
59 }
60 }
61
62 public final void testCalculateVoltagesSourcesTargets()
63 {
64 Map<Number,Number> sources = new HashMap<Number,Number>();
65 sources.put(0, new Double(1.0));
66 sources.put(1, new Double(0.5));
67 Set<Number> sinks = new HashSet<Number>();
68 sinks.add(6);
69 sinks.add(5);
70 VoltageScorer<Number,Number> vr =
71 new VoltageScorer<Number,Number>(g, Functions.constant(1), sources, sinks);
72 double[] voltages = {1.0, 0.5, 0.66, 0.33, 0.16, 0, 0};
73
74 vr.evaluate();
75 for (int i = 0; i < 7; i++) {
76 assertEquals(vr.getVertexScore(i), voltages[i], 0.01);
77 }
78 }
79 }