/* * EdgeTest.java * JUnit based test */ package wikipedia.clustering; import junit.framework.*; import wikipedia.kleinberg.*; import java.util.Map; import java.util.List; import java.util.Arrays; import java.util.ArrayList; import java.util.Comparator; public class EdgeTest extends TestCase { Map<Integer, Article> articles; Map<Integer, Category> categories; List<ClusterCategory> clusters; List<Edge> edges; ClusterCategory c_all, c_religious, c_science, c_art; public EdgeTest(String testName) { super(testName); } protected void setUp() throws Exception { CreateCategoryArticleGraph c = new CreateCategoryArticleGraph (); articles = c.articles; categories = c.categories; CategorySet.fillLinksFromCategoryToArticles(articles, categories); clusters = Preprocessing.createInitialClusters (articles, categories); edges = Preprocessing.createEdgesBetweenClusters (clusters, categories); // set initial clusters Map<Integer, ClusterCategory> category_id_to_cluster = ClusterCategory.mapCategoryIdToCluster(clusters); c_all = category_id_to_cluster.get(1); c_religious = category_id_to_cluster.get(2); c_science = category_id_to_cluster.get(3); c_art = category_id_to_cluster.get(4); } protected void tearDown() throws Exception { } public static Test suite() { TestSuite suite = new TestSuite(EdgeTest.class); return suite; } /** * Test of init method, of class wikipedia.clustering.Edge. */ public void testInit() { System.out.println("testInit"); // init() done in this.setUp() in function Preprocessing.createEdgesBetweenClusters() assertTrue(1 == c_art.edges.length); Edge e_art_all = c_art.edges[0]; assertTrue(e_art_all.containsVertex(c_art)); assertTrue(e_art_all.containsVertex(c_all)); assertTrue(5 == e_art_all.getWeight()); assertTrue(Arrays.asList(c_art.edges).contains(e_art_all)); assertTrue(Arrays.asList(c_all.edges).contains(e_art_all)); } /** * Test of updateWeight method, of class wikipedia.clustering.Edge. */ public void testUpdateWeight() { System.out.println("testUpdateWeight"); c_all.weight = 5; c_art.weight = 7; Edge e_art_all = c_art.edges[0]; e_art_all.updateWeight(); assertEquals(12, e_art_all.getWeight()); } /** * Test of containsVertices method, of class wikipedia.clustering.Edge. */ public void testContainsVertices() { System.out.println("testContainsVertices"); Edge e_art_all = c_art.edges[0]; List<Cluster> clusters_art_all = new ArrayList<Cluster>(); clusters_art_all.add(c_all); clusters_art_all.add(c_art); assertTrue(e_art_all.containsVertices(clusters_art_all)); } /** * Test of Merge method, of class wikipedia.clustering.Edge. */ public void testMerge() { System.out.println("testMerge"); Edge e_science_all = c_science.edges[0]; Edge e_art_all = c_art.edges[0]; Cluster science_all = e_science_all.getVertex1(); // preconditions assertEquals(3, science_all.edges.length); e_science_all.Merge(); // check // *) Add all edges adjacent to c (with check: skip edge's repetition), update edges[].c1 and c2 assertEquals(2, science_all.edges.length); // *) Update weight of all edges adjacent to c1 assertEquals(6, science_all.weight); assertEquals(9, c_religious.edges[0].getWeight()); assertEquals(9, c_art.edges[0].getWeight()); Cluster science_all_art = e_art_all.getVertex1(); e_art_all.Merge(); // *) Add all edges adjacent to c (with check: skip edge's repetition), update edges[].c1 and c2 assertEquals(1, science_all_art.edges.length); // *) Update weight of all edges adjacent to c1 assertEquals(9, science_all_art.weight); assertEquals(12, c_religious.edges[0].getWeight()); assertTrue(c_religious.edges[0].containsVertex(science_all_art)); } /** * Test of replaceVertex method, of class wikipedia.clustering.Edge. */ public void testReplaceVertex() { System.out.println("testReplaceVertex"); Edge e_art_all = c_art.edges[0]; List<Cluster> clusters_art_all = new ArrayList<Cluster>(); clusters_art_all.add(c_all); clusters_art_all.add(c_art); assertTrue(e_art_all.containsVertices(clusters_art_all)); e_art_all.replaceVertex(c_all, c_science); assertTrue(e_art_all.containsVertex(c_art)); assertTrue(e_art_all.containsVertex(c_science)); } public void testRemoveEdge() { System.out.println("testRemoveEdge"); Edge s0 = new Edge(); Edge s1 = new Edge(); Edge s2 = new Edge(); Edge s_absent = new Edge(); Edge[] source_edges = new Edge[4]; source_edges [0] = s0; source_edges [1] = s1; source_edges [2] = s2; source_edges [3] = s2; source_edges = Edge.RemoveEdge(source_edges, s_absent); assertEquals(4, source_edges.length); source_edges = Edge.RemoveEdge(source_edges, null); assertEquals(4, source_edges.length); source_edges = Edge.RemoveEdge(source_edges, s0); assertEquals(3, source_edges.length); source_edges = Edge.RemoveEdge(source_edges, s2); assertEquals(1, source_edges.length); assertEquals(s1, source_edges[0]); } }