package nl.tudelft.lifetiles.graph.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.logging.Level; import nl.tudelft.lifetiles.core.util.Logging; import nl.tudelft.lifetiles.graph.traverser.UnifiedPositionTraverser; 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 BreadthFirstIteratorTest { Graph<SequenceSegment> graph; HashSet<Sequence> s1, s2, s3; List<SequenceSegment> vertices; @BeforeClass public static void before() { Logging.setLevel(Level.SEVERE); } @Before public void setUp() throws Exception { GraphFactory<SequenceSegment> fact = FactoryProducer.getFactory(); this.graph = fact.getGraph(); 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); SegmentString content = new SegmentString("AC"); vertices = Arrays.asList(new SequenceSegment(s1, 1, 11, content), new SequenceSegment(s2, 11, 21, content), new SequenceSegment( s2, 21, 31, content), new SequenceSegment(s2, 31, 41, content), new SequenceSegment(s3, 11, 41, content), new SequenceSegment(s2, 41, 51, content)); vertices.forEach(graph::addVertex); graph.addEdge(vertices.get(0), vertices.get(1)); graph.addEdge(vertices.get(1), vertices.get(2)); graph.addEdge(vertices.get(2), vertices.get(3)); graph.addEdge(vertices.get(3), vertices.get(5)); graph.addEdge(vertices.get(0), vertices.get(4)); graph.addEdge(vertices.get(4), vertices.get(5)); UnifiedPositionTraverser.unifyGraph(graph); } @Test public void testHasNext() { BreadthFirstIterator<SequenceSegment> it = new BreadthFirstIterator<>( graph); assertTrue(it.hasNext()); } @Test public void testOrder() { BreadthFirstIterator<SequenceSegment> it = new BreadthFirstIterator<>( graph); List<SequenceSegment> expected = Arrays.asList(vertices.get(0), vertices.get(1), vertices.get(4), vertices.get(2), vertices.get(3), vertices.get(5)); List<SequenceSegment> actual = Arrays.asList(it.next(), it.next(), it.next(), it.next(), it.next(), it.next()); assertEquals(expected, actual); } @Test public void testReversedOrder() { BreadthFirstIterator<SequenceSegment> it = new BreadthFirstIterator<>( graph, true); List<SequenceSegment> expected = Arrays.asList(vertices.get(5), vertices.get(4), vertices.get(3), vertices.get(2), vertices.get(1), vertices.get(0)); List<SequenceSegment> actual = Arrays.asList(it.next(), it.next(), it.next(), it.next(), it.next(), it.next()); assertEquals(expected, actual); } }