package nl.tudelft.lifetiles.graph.traverser; import static org.junit.Assert.assertEquals; import java.util.HashSet; import java.util.Set; import java.util.logging.Level; import nl.tudelft.lifetiles.core.util.Logging; import nl.tudelft.lifetiles.graph.model.FactoryProducer; import nl.tudelft.lifetiles.graph.model.Graph; import nl.tudelft.lifetiles.graph.model.GraphFactory; import nl.tudelft.lifetiles.sequence.model.DefaultSequence; import nl.tudelft.lifetiles.sequence.model.SegmentEmpty; import nl.tudelft.lifetiles.sequence.model.SegmentString; import nl.tudelft.lifetiles.sequence.model.Sequence; import nl.tudelft.lifetiles.sequence.model.SequenceSegment; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; public class EmptySegmentTraverserTest { GraphFactory<SequenceSegment> gf; static EmptySegmentTraverser at; static UnifiedPositionTraverser pt; static Set<Sequence> s1, s2, s3; SequenceSegment v1, v2, v3; Graph<SequenceSegment> gr; @BeforeClass public static void runOnce() { Logging.setLevel(Level.SEVERE); Sequence ss1 = new DefaultSequence("reference"); Sequence ss2 = new DefaultSequence("mutation"); s1 = new HashSet<Sequence>(); s1.add(ss1); s1.add(ss2); s2 = new HashSet<Sequence>(); s2.add(ss1); s3 = new HashSet<Sequence>(); s3.add(ss2); } @Before public void setUp() throws Exception { gf = FactoryProducer.getFactory("JGraphT"); v1 = new SequenceSegment(s1, 1, 11, new SegmentString("AAAAAAAAAA")); v2 = new SequenceSegment(s3, 11, 21, new SegmentEmpty(10)); v3 = new SequenceSegment(s1, 21, 31, new SegmentString("AAAAAAAAAA")); gr = gf.getGraph(); gr.addVertex(v1); gr.addVertex(v3); } @Test public void testTraverseForkGraph() { SequenceSegment v4 = new SequenceSegment(s2, 1, 11, new SegmentString( "AAAAAAAAAA")); gr.addVertex(v4); gr.addEdge(v1, v3); gr.addEdge(v4, v3); UnifiedPositionTraverser.unifyGraph(gr); EmptySegmentTraverser.addEmptySegmentsGraph(gr); assertEquals(3, gr.getAllVertices().size()); } @Test public void testTraverseBranchGraph() { SequenceSegment v4 = new SequenceSegment(s2, 21, 31, new SegmentString( "AAAAAAAAAA")); gr.addVertex(v4); gr.addEdge(v1, v3); gr.addEdge(v1, v4); UnifiedPositionTraverser.unifyGraph(gr); EmptySegmentTraverser.addEmptySegmentsGraph(gr); assertEquals(3, gr.getAllVertices().size()); } @Test public void testTraverseGapGraph() { gr.addEdge(v1, v3); UnifiedPositionTraverser.unifyGraph(gr); EmptySegmentTraverser.addEmptySegmentsGraph(gr); assertEquals(2, gr.getAllVertices().size()); } @Test public void testTraverseGapCoordinatesGraph() { gr.addEdge(v1, v3); UnifiedPositionTraverser.unifyGraph(gr); EmptySegmentTraverser.addEmptySegmentsGraph(gr); assertEquals(11, gr.getSource(gr.getIncoming(v3).iterator().next()) .getEnd()); assertEquals(1, gr.getSource(gr.getIncoming(v3).iterator().next()) .getStart()); } @Test public void testTraverseBridgeGraph() { gr.addVertex(v2); gr.addEdge(v1, v2); gr.addEdge(v2, v3); UnifiedPositionTraverser.unifyGraph(gr); EmptySegmentTraverser.addEmptySegmentsGraph(gr); assertEquals(3, gr.getAllVertices().size()); } @Test public void testTraverseInsertionGraph() { SequenceSegment v4 = new SequenceSegment(s2, 11, 21, new SegmentString( "AAAAAAAAAA")); gr.addVertex(v4); gr.addEdge(v1, v3); gr.addEdge(v1, v4); gr.addEdge(v4, v3); UnifiedPositionTraverser.unifyGraph(gr); EmptySegmentTraverser.addEmptySegmentsGraph(gr); assertEquals(4, gr.getAllVertices().size()); } }