package nl.tudelft.lifetiles.graph.model.jgrapht;
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.SortedSet;
import nl.tudelft.lifetiles.graph.model.Edge;
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.SegmentEmpty;
import nl.tudelft.lifetiles.sequence.model.Sequence;
import nl.tudelft.lifetiles.sequence.model.SequenceSegment;
import org.junit.Before;
import org.junit.Test;
public class EdgeAdapterTest {
GraphFactory<SequenceSegment> gf;
SequenceSegment v1, v2, v3, v4;
Graph<SequenceSegment> gr;
@Before
public void setUp() throws Exception {
gf = FactoryProducer.getFactory("JGraphT");
v1 = new SequenceSegment(new HashSet<Sequence>(), 0, 1,
new SegmentEmpty(0));
v2 = new SequenceSegment(new HashSet<Sequence>(), 1, 2,
new SegmentEmpty(0));
v3 = new SequenceSegment(new HashSet<Sequence>(), 2, 3,
new SegmentEmpty(0));
v4 = new SequenceSegment(new HashSet<Sequence>(), 0, 4,
new SegmentEmpty(0));
gr = gf.getGraph();
gr.addVertex(v1);
gr.addVertex(v2);
gr.addVertex(v3);
gr.addVertex(v4);
gr.addEdge(v1, v3);
gr.addEdge(v1, v2);
gr.addEdge(v2, v4);
}
@Test
public void testEqualsFalse() {
Edge<SequenceSegment> e1 = gr.getIncoming(v2).iterator().next();
Edge<SequenceSegment> e2 = gr.getIncoming(v4).iterator().next();
assertFalse(e1.equals(e2));
}
@Test
public void testEqualsTrue() {
Edge<SequenceSegment> e1 = gr.getIncoming(v2).iterator().next();
assertTrue(e1.equals(e1));
}
@Test
public void testSorted() {
SortedSet<Edge<SequenceSegment>> outgoing = gr.getOutgoing(v1);
assertEquals(-1, v2.compareTo(v3));
assertEquals(2, outgoing.size());
assertEquals(v2, gr.getDestination(outgoing.iterator().next()));
}
}