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.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 UnifiedPositionTraverserTest {
GraphFactory<SequenceSegment> gf;
static Set<Sequence> s1;
SequenceSegment v1, v2, v3;
Graph<SequenceSegment> gr;
@BeforeClass
public static void runOnce() {
Logging.setLevel(Level.SEVERE);
Sequence ss1 = new DefaultSequence("reference");
s1 = new HashSet<Sequence>();
s1.add(ss1);
}
@Before
public void setUp() throws Exception {
gf = FactoryProducer.getFactory("JGraphT");
v1 = new SequenceSegment(s1, 1, 11, new SegmentString("AAAAAAAAAA"));
v2 = new SequenceSegment(s1, 21, 31, new SegmentString("AAAAAAAAAA"));
v3 = new SequenceSegment(s1, 11, 21, new SegmentString("AAAAAAAAAA"));
gr = gf.getGraph();
gr.addVertex(v1);
gr.addVertex(v2);
gr.addEdge(v1, v2);
}
@Test
public void traverseGapTest() {
UnifiedPositionTraverser.unifyGraph(gr);
assertEquals(1, v1.getUnifiedStart());
assertEquals(11, v1.getUnifiedEnd());
assertEquals(11, v2.getUnifiedStart());
assertEquals(21, v2.getUnifiedEnd());
}
public void traverseOutOfOrderTest() {
gr.addVertex(v3);
gr.addEdge(v1, v3);
gr.addEdge(v3, v2);
UnifiedPositionTraverser.unifyGraph(gr);
assertEquals(11, v3.getUnifiedStart());
assertEquals(21, v3.getUnifiedEnd());
assertEquals(21, v2.getUnifiedStart());
assertEquals(31, v2.getUnifiedEnd());
}
}