package nl.tudelft.lifetiles.sequence.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import java.util.TreeSet; import nl.tudelft.lifetiles.sequence.Mutation; import org.junit.Before; import org.junit.Test; public class SequenceSegmentTest { SequenceSegment v1, v2, v3; @Before public void setUp() throws Exception { v1 = new SequenceSegment(new TreeSet<Sequence>(), 1, 10, new SegmentString("AAAAAAAAAA")); v1.setUnifiedStart(1); v1.setUnifiedEnd(10); v1.setSources(new HashSet<>(Arrays.asList(new DefaultSequence("s1")))); v2 = new SequenceSegment(new TreeSet<Sequence>(), 11, 20, new SegmentEmpty(10)); v2.setUnifiedStart(11); v2.setUnifiedEnd(20); v2.setSources(new HashSet<>(Arrays.asList(new DefaultSequence("s2")))); v3 = new SequenceSegment(new TreeSet<Sequence>(), 21, 30, new SegmentString("AAAAANNNNN")); v3.setUnifiedStart(21); v3.setUnifiedEnd(30); v3.setSources(new HashSet<>(Arrays.asList(new DefaultSequence("s3")))); } @Test public void testDistanceToAdjacent() { assertEquals(0, v1.distanceTo(v2)); } @Test public void testDistanceToPositive() { assertEquals(10, v1.distanceTo(v3)); } @Test public void testDistanceToNegative() { assertEquals(-30, v3.distanceTo(v1)); } @Test public void testLengthEmpty() { assertEquals(10, v2.getContent().getLength()); } @Test public void testLengthString() { assertEquals(10, v1.getContent().getLength()); } @Test public void testMutation() { Mutation insertion = Mutation.INSERTION; v1.setMutation(insertion); assertEquals(insertion, v1.getMutation()); } @Test public void testCompare() { assertEquals(-1, v1.compareTo(v2)); } @Test public void testCompareNull() { assertEquals(0, v1.compareTo(v1)); } @Test public void testCompareModify() { Set<SequenceSegment> segments = new HashSet<>(); segments.add(v1); v1.setUnifiedStart(2); assertTrue(segments.contains(v1)); } @Test public void testSegmentStart() { assertEquals(1, v1.getStart()); } @Test public void testSegmentEnd() { assertEquals(10, v1.getEnd()); } @Test public void testSegmentSetUnifiedStart() { v1.setUnifiedStart(11); assertEquals(11, v1.getUnifiedStart()); } @Test public void testSegmentSetUnifiedEnd() { v1.setUnifiedEnd(20); assertEquals(20, v1.getUnifiedEnd()); } @Test public void testSegmentSetReferenceStart() { v1.setReferenceStart(11); assertEquals(11, v1.getReferenceStart()); } @Test public void testSegmentSetReferenceEnd() { v1.setReferenceEnd(20); assertEquals(20, v1.getReferenceEnd()); } @Test public void testSegmentSources() { assertEquals(new HashSet<>(Arrays.asList(new DefaultSequence("s1"))), v1.getSources()); } @Test public void testConstructCopy() { SequenceSegment vc = new SequenceSegment(v1); assertEquals(v1, vc); } @Test public void equalsNullTest() { assertFalse(v2.equals(null)); } @Test public void equalsOtherTypeTest() { assertFalse(v2.equals(10)); } @Test public void emptyInterestingnessTest() { assertEquals(0, v2.interestingness(), 1E-05); } @Test public void determinePolymorphismMutationTest() { assertEquals(Mutation.POLYMORPHISM, v1.determineMutation()); } @Test public void determineInsertionMutationTest() { v3.setReferenceStart(100); v3.setReferenceEnd(0); assertEquals(Mutation.INSERTION, v3.determineMutation()); } @Test public void determineDeletionMutationTest() { assertEquals(Mutation.DELETION, v2.determineMutation()); } @Test public void interestingnessOrderTest() { assertTrue(v2.interestingness() < v1.interestingness()); assertTrue(v3.interestingness() < v1.interestingness()); assertTrue(v3.interestingness() > v2.interestingness()); } @Test public void testSetContent() { v1.setContent(new SegmentEmpty(42)); assertEquals(42, v1.getContent().getLength()); } @Test public void testCollapsedInterestingness() { v1.setContent(new SegmentStringCollapsed(new SegmentEmpty(42))); assertEquals(0, v1.interestingness(), 1E-05); } }