package nl.tudelft.lifetiles.graph.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import java.util.HashSet; import java.util.Set; import java.util.logging.Level; import nl.tudelft.lifetiles.core.util.Logging; import nl.tudelft.lifetiles.core.util.Settings; import nl.tudelft.lifetiles.sequence.model.DefaultSequence; 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 GraphContainerTest { GraphFactory<SequenceSegment> gf; static Set<Sequence> s1, s2, s3; static Sequence ss1; SequenceSegment v1, v2, v3, v4; Graph<SequenceSegment> gr; private GraphContainer gc; @BeforeClass public static void runOnce() { Logging.setLevel(Level.SEVERE); 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(s2, 11, 21, new SegmentString("AAAAAAAAAA")); v3 = new SequenceSegment(s3, 11, 21, new SegmentString("AAAAAAAAAA")); v4 = new SequenceSegment(s1, 21, 31, new SegmentString("AAAAAAAAAA")); gr = gf.getGraph(); gr.addVertex(v1); gr.addVertex(v2); gr.addVertex(v3); gr.addVertex(v4); gr.addEdge(v1, v2); gr.addEdge(v1, v3); gr.addEdge(v2, v4); gr.addEdge(v3, v4); Settings.set("empty_segments", "false"); Settings.set("mutations", "true"); } @Test public void emptySegmentsTest() { SequenceSegment v5 = new SequenceSegment(s2, 31, 41, new SegmentString( "AAAAAAAAAA")); SequenceSegment v6 = new SequenceSegment(s1, 41, 51, new SegmentString( "AAAAAAAAAA")); gr.addVertex(v5); gr.addVertex(v6); gr.addEdge(v4, v5); gr.addEdge(v4, v6); gr.addEdge(v5, v6); Settings.set("empty_segments", "true"); gc = new GraphContainer(gr, ss1); assertEquals(7, gc.getVisibleSegments(0, 1).size()); } @Test public void noMutationsTest() { Settings.set("mutations", "false"); gc = new GraphContainer(gr, ss1); assertNull(v3.getMutation()); } @Test public void noReferenceTest() { gc = new GraphContainer(gr, null); assertNull(v3.getMutation()); } @Test public void numberOfBucketsTest() { gc = new GraphContainer(gr, ss1); assertEquals(1, gc.getBucketCache().getBuckets().size()); } @Test public void allVisibleSegmentsTest() { gc = new GraphContainer(gr, ss1); assertEquals(4, gc.getVisibleSegments(0, 1).size()); assertNotNull(v3.getMutation()); } @Test public void nullAllVisibleSegmentsTest() { gc = new GraphContainer(gr, ss1); gc.setVisible(null); assertEquals(4, gc.getVisibleSegments(0, 1).size()); } @Test public void subselectionVisibleSegmentsTest() { gc = new GraphContainer(gr, ss1); gc.setVisible(s2); assertEquals(3, gc.getVisibleSegments(0, 1).size()); } @Test public void emptySubselectionVisibleSegmentsTest() { gc = new GraphContainer(gr, ss1); gc.setVisible(new HashSet<>()); assertEquals(0, gc.getVisibleSegments(0, 1).size()); } }