package org.nextprot.api.commons.bio.variation.prot.impl;
import org.junit.Assert;
import org.junit.Test;
import org.nextprot.api.commons.bio.variation.prot.SequenceVariation;
import org.nextprot.api.commons.bio.variation.prot.impl.format.SequenceVariantHGVSFormat;
import java.util.Optional;
public class VariantSequenceOperatorTest {
@Test
public void testBuildSequenceVariantDuplication() throws Exception {
assertOperation("KPLISMPEPTIDE", new SequenceVariantHGVSFormat().parse("p.Leu3_Met6dup"),
6, 6, "M", "MLISM", "KPLISMLISMPEPTIDE");
}
@Test
public void testBuildSequenceVariantSubstitution() throws Exception {
assertOperation("KMLISMPEPTIDE", new SequenceVariantHGVSFormat().parse("p.Leu3Met"),
3, 3, "L", "M", "KMMISMPEPTIDE");
}
@Test
public void testBuildSequenceVariantInsertion() throws Exception {
assertOperation("KMLISMRSPEPTIDE", new SequenceVariantHGVSFormat().parse("p.Arg7_Ser8insLeuIleSerMet"),
7, 7, "R", "RLISM", "KMLISMRLISMSPEPTIDE");
}
@Test
public void testBuildSequenceVariantDeletion() throws Exception {
assertOperation("KMLISMRSPEPTIDE", new SequenceVariantHGVSFormat().parse("p.Leu3_Met6del"),
3, 6, "LISM", "", "KMRSPEPTIDE");
}
@Test
public void testBuildSequenceVariantDeletionInsertion() throws Exception {
assertOperation("KMLIMLESMRSPEPTIDE", new SequenceVariantHGVSFormat().parse("p.Met5_Glu7delinsLeuIleSerMet"),
5, 7, "MLE", "LISM", "KMLILISMSMRSPEPTIDE");
}
private static void assertOperation(String originalSequence, SequenceVariation sequenceVariation,
int expectedPosStart, int expectedPosEnd, String expectedOriginal,
String expectedVariant, String expectedVariantSequence) {
Optional<VariantSequenceOperator> op = VariantSequenceOperator.findOperator(sequenceVariation.getSequenceChange());
Assert.assertTrue(op.isPresent());
Assert.assertEquals(expectedPosStart, op.get().selectBeginPositionInReferenceSequence(sequenceVariation.getVaryingSequence()));
Assert.assertEquals(expectedPosEnd, op.get().selectEndPositionInReferenceSequence(sequenceVariation.getVaryingSequence()));
Assert.assertEquals(expectedOriginal, op.get().getAminoAcidTargetStringInReferenceSequence(originalSequence, sequenceVariation.getVaryingSequence()));
Assert.assertEquals(expectedVariant, op.get().getAminoAcidReplacementString(originalSequence, sequenceVariation));
Assert.assertEquals(expectedVariantSequence, op.get().buildVariantSequence(originalSequence, sequenceVariation));
}
}