package org.nextprot.api.commons.bio.variation.prot.impl.format;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.nextprot.api.commons.bio.AminoAcidCode;
import org.nextprot.api.commons.bio.variation.prot.ParsingMode;
import org.nextprot.api.commons.bio.variation.prot.SequenceVariation;
import org.nextprot.api.commons.bio.variation.prot.impl.seqchange.Substitution;
import java.text.ParseException;
public class SequenceVariantHGVSParseSubstitutionTest {
SequenceVariantHGVSFormat format = new SequenceVariantHGVSFormat();
@Test(expected = ParseException.class)
public void testParseUnknownCode1AA() throws Exception {
format.parse("p._54C");
}
@Test(expected = ParseException.class)
public void testParseUnknownCode3AA() throws Exception {
format.parse("p.Mat54Trp");
}
///// SUBSTITUTIONS
@Test
public void testParseSubstitution() throws Exception {
SequenceVariation pm = format.parse("p.R54C");
Assert.assertEquals(AminoAcidCode.ARGININE, pm.getVaryingSequence().getFirstAminoAcid());
Assert.assertEquals(AminoAcidCode.ARGININE, pm.getVaryingSequence().getLastAminoAcid());
Assert.assertEquals(54, pm.getVaryingSequence().getFirstAminoAcidPos());
Assert.assertEquals(54, pm.getVaryingSequence().getLastAminoAcidPos());
Assert.assertTrue(pm.getSequenceChange() instanceof Substitution);
Assert.assertEquals(AminoAcidCode.CYSTEINE, pm.getSequenceChange().getValue());
}
@Test
public void testParseSubstitutionStop() throws Exception {
SequenceVariation pm = format.parse("p.R54*");
Assert.assertEquals(AminoAcidCode.ARGININE, pm.getVaryingSequence().getFirstAminoAcid());
Assert.assertEquals(AminoAcidCode.ARGININE, pm.getVaryingSequence().getLastAminoAcid());
Assert.assertEquals(54, pm.getVaryingSequence().getFirstAminoAcidPos());
Assert.assertEquals(54, pm.getVaryingSequence().getLastAminoAcidPos());
Assert.assertTrue(pm.getSequenceChange() instanceof Substitution);
Assert.assertEquals(AminoAcidCode.STOP, pm.getSequenceChange().getValue());
}
@Test
public void testParseSubstitutionCode3() throws Exception {
SequenceVariation pm = format.parse("p.Arg54Cys");
Assert.assertEquals(AminoAcidCode.ARGININE, pm.getVaryingSequence().getFirstAminoAcid());
Assert.assertEquals(AminoAcidCode.ARGININE, pm.getVaryingSequence().getLastAminoAcid());
Assert.assertEquals(54, pm.getVaryingSequence().getFirstAminoAcidPos());
Assert.assertEquals(54, pm.getVaryingSequence().getLastAminoAcidPos());
Assert.assertTrue(pm.getSequenceChange() instanceof Substitution);
Assert.assertEquals(AminoAcidCode.CYSTEINE, pm.getSequenceChange().getValue());
}
@Test
public void testPermissiveParserCorrectlyParseStandardSubstitution() throws Exception {
format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE);
SequenceVariation pm = format.parse("p.R54C");
Assert.assertEquals(AminoAcidCode.ARGININE, pm.getVaryingSequence().getFirstAminoAcid());
Assert.assertEquals(AminoAcidCode.ARGININE, pm.getVaryingSequence().getLastAminoAcid());
Assert.assertEquals(54, pm.getVaryingSequence().getFirstAminoAcidPos());
Assert.assertEquals(54, pm.getVaryingSequence().getLastAminoAcidPos());
Assert.assertTrue(pm.getSequenceChange() instanceof Substitution);
Assert.assertEquals(AminoAcidCode.CYSTEINE, pm.getSequenceChange().getValue());
}
@Test
public void testParseAATerSubstitutionFixCode1() throws Exception {
format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE);
SequenceVariation pm = format.parse("p.*104E");
Assert.assertEquals(AminoAcidCode.STOP, pm.getVaryingSequence().getFirstAminoAcid());
Assert.assertEquals(AminoAcidCode.STOP, pm.getVaryingSequence().getLastAminoAcid());
Assert.assertEquals(104, pm.getVaryingSequence().getFirstAminoAcidPos());
Assert.assertTrue(pm.getSequenceChange() instanceof Substitution);
Assert.assertEquals(AminoAcidCode.GLUTAMIC_ACID, pm.getSequenceChange().getValue());
}
@Test
public void testParseAATerSubstitutionFixCode3() throws Exception {
format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE);
SequenceVariation pm = format.parse("p.Ter104Glu");
Assert.assertEquals(AminoAcidCode.STOP, pm.getVaryingSequence().getFirstAminoAcid());
Assert.assertEquals(AminoAcidCode.STOP, pm.getVaryingSequence().getLastAminoAcid());
Assert.assertEquals(104, pm.getVaryingSequence().getFirstAminoAcidPos());
Assert.assertTrue(pm.getSequenceChange() instanceof Substitution);
Assert.assertEquals(AminoAcidCode.GLUTAMIC_ACID, pm.getSequenceChange().getValue());
}
@Ignore
@Test
public void testParseAATerSubstitutionFix5() throws Exception {
format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE);
SequenceVariation pm = format.parse("p.Y553_K558>");
}
}