View Javadoc
1   /*
2   * Copyright (c) 2003, 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   */
10  package edu.uci.ics.jung.algorithms.importance;
11  
12  import java.util.HashSet;
13  import java.util.Set;
14  
15  import junit.framework.Assert;
16  import junit.framework.Test;
17  import junit.framework.TestCase;
18  import junit.framework.TestSuite;
19  
20  import com.google.common.base.Supplier;
21  
22  import edu.uci.ics.jung.graph.DirectedGraph;
23  import edu.uci.ics.jung.graph.DirectedSparseMultigraph;
24  
25  /**
26   * @author Scott White, adapted to jung2 by Tom Nelson
27   */
28  public class TestWeightedNIPaths extends TestCase {
29  	
30  	Supplier<String> vertexFactory;
31  	Supplier<Number> edgeFactory;
32  
33      public static Test suite() {
34          return new TestSuite(TestWeightedNIPaths.class);
35      }
36  
37      @Override
38      protected void setUp() {
39      	vertexFactory = new Supplier<String>() {
40      		char a = 'A';
41  			public String get() {
42  				return Character.toString(a++);
43  			}};
44      	edgeFactory = new Supplier<Number>() {
45      		int count;
46  			public Number get() {
47  				return count++;
48  			}};
49      }
50  
51      public void testRanker() {
52  
53          DirectedGraph<String,Number> graph = new DirectedSparseMultigraph<String,Number>();
54          for(int i=0; i<5; i++) {
55          	graph.addVertex(vertexFactory.get());
56          }
57  
58          graph.addEdge(edgeFactory.get(), "A", "B");
59          graph.addEdge(edgeFactory.get(), "A", "C");
60          graph.addEdge(edgeFactory.get(), "A", "D");
61          graph.addEdge(edgeFactory.get(), "B", "A");
62          graph.addEdge(edgeFactory.get(), "B", "E");
63          graph.addEdge(edgeFactory.get(), "B", "D");
64          graph.addEdge(edgeFactory.get(), "C", "A");
65          graph.addEdge(edgeFactory.get(), "C", "E");
66          graph.addEdge(edgeFactory.get(), "C", "D");
67          graph.addEdge(edgeFactory.get(), "D", "A");
68          graph.addEdge(edgeFactory.get(), "D", "B");
69          graph.addEdge(edgeFactory.get(), "D", "C");
70          graph.addEdge(edgeFactory.get(), "D", "E");
71          
72          Set<String> priors = new HashSet<String>();
73          priors.add("A");
74  
75          WeightedNIPaths<String,Number> ranker = 
76          	new WeightedNIPaths<String,Number>(graph, vertexFactory, edgeFactory, 2.0,3,priors);
77          ranker.evaluate();
78  
79          Assert.assertEquals(ranker.getRankings().get(0).rankScore,0.277787,.0001);
80          Assert.assertEquals(ranker.getRankings().get(1).rankScore,0.222222,.0001);
81          Assert.assertEquals(ranker.getRankings().get(2).rankScore,0.166676,.0001);
82          Assert.assertEquals(ranker.getRankings().get(3).rankScore,0.166676,.0001);
83          Assert.assertEquals(ranker.getRankings().get(4).rankScore,0.166676,.0001);
84      }
85  }