//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.orderers;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.HashSet;
import java.util.Set;
import org.apache.uima.jcas.tcas.Annotation;
import org.junit.Test;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.SparseMultigraph;
import edu.uci.ics.jung.graph.util.EdgeType;
import uk.gov.dstl.baleen.types.common.Buzzword;
import uk.gov.dstl.baleen.types.common.Organisation;
import uk.gov.dstl.baleen.types.common.Person;
import uk.gov.dstl.baleen.types.geo.Coordinate;
import uk.gov.dstl.baleen.types.semantic.Location;
public class DependencyGraphTest {
@Test
public void testOverlap(){
Set<Class<? extends Annotation>> a = new HashSet<>();
Set<Class<? extends Annotation>> b = new HashSet<>();
Set<Class<? extends Annotation>> c = new HashSet<>();
Set<Class<? extends Annotation>> d = new HashSet<>();
a.add(Person.class);
a.add(Organisation.class);
b.add(Location.class);
b.add(Buzzword.class);
c.add(Coordinate.class);
d.add(Location.class);
assertFalse(DependencyGraph.overlaps(a, b));
assertFalse(DependencyGraph.overlaps(a, c));
assertTrue(DependencyGraph.overlaps(b, c));
assertTrue(DependencyGraph.overlaps(b, d));
}
@Test
public void testRemoveLoops(){
Graph<String, String> graph = new SparseMultigraph<>();
graph.addVertex("v1");
graph.addVertex("v2");
graph.addVertex("v3");
graph.addEdge("e1", "v1", "v2", EdgeType.DIRECTED);
graph.addEdge("e2", "v2", "v1", EdgeType.DIRECTED);
graph.addEdge("e3", "v1", "v3", EdgeType.DIRECTED);
DependencyGraph.removeLoops(graph);
assertEquals(3, graph.getVertexCount());
assertEquals(2, graph.getEdgeCount());
assertTrue(graph.getEdges().contains("e1"));
assertTrue(graph.getEdges().contains("e3"));
}
@Test
public void testRemoveLayer(){
Graph<String, String> graph = new SparseMultigraph<>();
graph.addVertex("v1");
graph.addVertex("v2");
graph.addVertex("v3");
graph.addEdge("e1", "v1", "v2", EdgeType.DIRECTED);
graph.addEdge("e2", "v2", "v1", EdgeType.DIRECTED);
graph.addEdge("e3", "v3", "v2", EdgeType.DIRECTED);
DependencyGraph.removeLayer(graph);
assertEquals(2, graph.getVertexCount());
assertEquals(2, graph.getEdgeCount());
assertTrue(graph.getVertices().contains("v1"));
assertTrue(graph.getVertices().contains("v2"));
assertTrue(graph.getEdges().contains("e1"));
assertTrue(graph.getEdges().contains("e2"));
}
}