/* * ClusterCategoryTest.java * JUnit based test */ package wikipedia.clustering; import junit.framework.*; import wikipedia.kleinberg.*; import java.util.ArrayList; import java.util.List; import java.util.HashMap; import java.util.Map; public class ClusterCategoryTest extends TestCase { Map<Integer, Article> articles; Map<Integer, Category> categories; Map<Integer, ClusterCategory> category_id_to_cluster; List<ClusterCategory> clusters; List<Edge> edges; ClusterCategory c_all, c_religious, c_science, c_art; public ClusterCategoryTest(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 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(ClusterCategoryTest.class); return suite; } /** * Test of init method, of class wikipedia.clustering.ClusterCategory. */ public void testInit() { System.out.println("testInit"); // init() done in this.setUp() assertTrue(2 == c_all.weight); assertTrue(3 == c_religious.weight); assertTrue(1 == c_all.n_articles); assertTrue(2 == c_religious.n_articles); assertTrue(1 == c_all.categories_id.length); assertTrue(1 == c_all.categories_id[0]); } public void testMapCategoryIdToCluster() { System.out.println("testMapCategoryIdToCluster"); // map done in setUp(), test results here assertTrue(1 == c_art.categories_id.length); assertTrue(4 == c_art.categories_id[0]); for(Category cat:categories.values()) { int id_from = cat.page_id; assertTrue(null != category_id_to_cluster.get(id_from)); if(null != cat.links_out) { for(int id_to:cat.links_out) { // links_out: id of categories which are referred by the category // assert that there are no absent categories assertTrue(null != category_id_to_cluster.get(id_to)); } } } } /** * Test of addCluster method, of class wikipedia.clustering.ClusterCategory. */ public void testAddCluster() { System.out.println("testAddClusterWeight"); // preconditions // weight assertTrue(2 == c_all.weight); assertTrue(3 == c_religious.weight); // n_article assertTrue(1 == c_all.n_articles); assertTrue(2 == c_religious.n_articles); // categories_id assertTrue(1 == c_all.categories_id.length); c_all.addCluster(c_religious); // postconditions assertTrue(5 == c_all.weight); assertTrue(3 == c_all.n_articles); assertTrue(2 == c_all.categories_id.length); assertTrue(1 == c_all.categories_id[0]); assertTrue(2 == c_all.categories_id[1]); } public void testContainsAdjacent() { System.out.println("testContainsAdjacent"); assertTrue(c_all.containsAdjacent(c_art)); assertTrue(c_art.containsAdjacent(c_all)); assertFalse(c_art.containsAdjacent(c_science)); } public void testGetAdjacentVertices() { System.out.println("testGetAdjacentVertices"); List<Cluster> c_all_adjacent = c_all.getAdjacentVertices(); assertTrue(3 == c_all_adjacent.size()); } public void testGetEdgeToCluster() { System.out.println("testGetEdgeToCluster"); Edge e_art_all = c_art.edges[0]; assertEquals(e_art_all, c_all.getEdgeToCluster(c_art)); } public void testGraphVizCluster() { System.out.println("testGraphVizCluster"); String should_be = "subgraph cluster1 {\n" + " node [style=filled];\n" + " label = \"cluster1: weight=5\";\n" + " color=blue;\n" + " C1;\n" + " C2;\n" + " A1 [label=\"Articles in the cluster: N\n" + "11 Linux x=1.0 y=1.0\n" + "10 God x=1.0 y=1.0\n\",shape=box];\n" + " }\n"; c_all.addCluster(c_religious); assertTrue(5 == c_all.weight); String s = c_all.graphVizCluster(articles, categories); assertEquals(should_be, s); } public void testGetStatistics() { System.out.println("testGetStatistics"); String should_be = ":: clusters:4"; String s = ClusterCategory.getStatistics (clusters); assertEquals(should_be, s); } public void testAddEdge() { System.out.println("testAddEdge"); Edge s0 = new Edge(); Edge s1 = new Edge(); Edge s2 = new Edge(); Edge s_absent = new Edge(); Edge[] source_edges = new Edge[3]; source_edges [0] = s0; source_edges [1] = s1; source_edges [2] = s2; ClusterCategory cc = new ClusterCategory(); cc.addEdge(s0); assertEquals(1, cc.edges.length); cc.addEdge(s1); assertEquals(2, cc.edges.length); cc.addEdge(s2); assertEquals(3, cc.edges.length); } }