View Javadoc
1   /**
2    * Copyright (c) 2008, The JUNG Authors 
3    *
4    * All rights reserved.
5    *
6    * This software is open-source under the BSD license; see either
7    * "license.txt" or
8    * https://github.com/jrtom/jung/blob/master/LICENSE for a description.
9    * Created on Jul 14, 2008
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   * @author jrtom
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  }