package org.nextprot.api.core.domain.annotation;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class AnnotationIsoformSpecificityTest {
@Test
public void testFormatIsoName() throws Exception {
Assert.assertEquals("Iso 001", AnnotationIsoformSpecificity.formatIsoName("Iso 1"));
}
@Test
public void testFormatIsoName2() throws Exception {
Assert.assertEquals("Iso 010", AnnotationIsoformSpecificity.formatIsoName("Iso 10"));
}
@Test
public void testFormatIsoName2NoMatch() throws Exception {
Assert.assertEquals("NX_P01325", AnnotationIsoformSpecificity.formatIsoName("NX_P01325"));
}
@Test
public void shouldHaveSameIsoformPositions() throws Exception {
AnnotationIsoformSpecificity specificity1 = mockAnnotationIsoformSpecificity("NX_Q04771-1", 328, 328);
AnnotationIsoformSpecificity specificity2 = mockAnnotationIsoformSpecificity("NX_Q04771-1", 328, 328);
Assert.assertTrue(specificity1.hasSameIsoformPositions(specificity2));
}
@Test
public void shouldNotHaveSameIsoformPositions() throws Exception {
AnnotationIsoformSpecificity specificity1 = mockAnnotationIsoformSpecificity("NX_Q04771-1", 328, 328);
AnnotationIsoformSpecificity specificity2 = mockAnnotationIsoformSpecificity("NX_Q04771-1", 327, 328);
Assert.assertFalse(specificity1.hasSameIsoformPositions(specificity2));
}
@Test
public void shouldHaveSameIsoformNullPositions() throws Exception {
AnnotationIsoformSpecificity specificity1 = mockAnnotationIsoformSpecificity("NX_Q04771-1", null, null);
AnnotationIsoformSpecificity specificity2 = mockAnnotationIsoformSpecificity("NX_Q04771-1", null, null);
Assert.assertTrue(specificity1.hasSameIsoformPositions(specificity2));
}
@Test
public void shouldReturnIsoformsInProperOrder() {
List<AnnotationIsoformSpecificity> specs = newIsoSpecs(13);
Collections.sort(specs);
int i=0;
for (AnnotationIsoformSpecificity spec: specs) {
i++;
Assert.assertEquals("Iso " + i, spec.getIsoformAccession()); // TITIN has Iso 1, Iso 2, ... Iso 13
}
}
private List<AnnotationIsoformSpecificity> newIsoSpecs(int count) {
List<AnnotationIsoformSpecificity> specs = new ArrayList<>();
for (int i=count ; i>0 ; i--) {
AnnotationIsoformSpecificity spec = new AnnotationIsoformSpecificity();
spec.setIsoformAccession("Iso "+i); // <= should be only accession in there !
specs.add(spec);
}
return specs;
}
private AnnotationIsoformSpecificity mockAnnotationIsoformSpecificity(String name, Integer first, Integer last) {
AnnotationIsoformSpecificity specificity = new AnnotationIsoformSpecificity();
specificity.setIsoformAccession(name);
specificity.setFirstPosition(first);
specificity.setLastPosition(last);
return specificity;
}
}