package org.nextprot.api.commons.bio.variation.prot.impl.format; import org.junit.Assert; 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.Insertion; import org.nextprot.api.commons.bio.variation.prot.seqchange.SequenceChange; import java.text.ParseException; public class SequenceVariantHGVSParseInsertionTest { SequenceVariantHGVSFormat format = new SequenceVariantHGVSFormat(); @Test public void testParseInsertion() throws Exception { format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE); SequenceVariation pm = format.parse("p.C136_A137insGM"); assertProteinSequenceVariation(pm, AminoAcidCode.CYSTEINE, AminoAcidCode.ALANINE, 136); Assert.assertEquals(SequenceChange.Type.INSERTION, pm.getSequenceChange().getType()); Assert.assertArrayEquals(AminoAcidCode.valueOfAminoAcidCodeSequence("GM"), (AminoAcidCode[]) pm.getSequenceChange().getValue()); Assert.assertEquals(136, ((Insertion)pm.getSequenceChange()).getInsertAfterPos()); } @Test(expected = ParseException.class) public void shouldContain2FlankingResidues() throws Exception { format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE); format.parse("p.C136_A138insGM"); } @Test(expected = ParseException.class) public void testParseInsertionsVariantsInvalidColonInsteadOfUnderscore() throws ParseException { format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE); format.parse("p.Met1875-Glu1876insMet"); } @Test(expected = ParseException.class) public void testParseInsertionsVariantsInvalidColonInsteadOfUnderscore2() throws ParseException { format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE); format.parse("p.Lys722-Ala723insTyrLys"); } @Test public void testParseInsertionsVariants() throws ParseException { format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE); SequenceVariation pm = format.parse("p.Met1875_Glu1876insMet"); assertProteinSequenceVariation(pm, AminoAcidCode.METHIONINE, AminoAcidCode.GLUTAMIC_ACID, 1875); Assert.assertEquals(SequenceChange.Type.INSERTION, pm.getSequenceChange().getType()); Assert.assertArrayEquals(AminoAcidCode.valueOfAminoAcidCodeSequence("M"), (AminoAcidCode[]) pm.getSequenceChange().getValue()); Assert.assertEquals(1875, ((Insertion)pm.getSequenceChange()).getInsertAfterPos()); } @Test public void testParseInsertionsVariants2() throws ParseException { format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE); SequenceVariation pm = format.parse("p.Lys722_Ala723insTyrLys"); assertProteinSequenceVariation(pm, AminoAcidCode.LYSINE, AminoAcidCode.ALANINE, 722); Assert.assertEquals(SequenceChange.Type.INSERTION, pm.getSequenceChange().getType()); Assert.assertArrayEquals(AminoAcidCode.valueOfAminoAcidCodeSequence("YK"), (AminoAcidCode[]) pm.getSequenceChange().getValue()); Assert.assertEquals(722, ((Insertion)pm.getSequenceChange()).getInsertAfterPos()); } public static void assertProteinSequenceVariation(SequenceVariation pm, AminoAcidCode expectedFirstAA, AminoAcidCode expectedLastAA, int expectedFirstPos) { Assert.assertEquals(expectedFirstAA, pm.getVaryingSequence().getFirstAminoAcid()); Assert.assertEquals(expectedLastAA, pm.getVaryingSequence().getLastAminoAcid()); Assert.assertEquals(expectedFirstPos, pm.getVaryingSequence().getFirstAminoAcidPos()); Assert.assertEquals(expectedFirstPos+1, pm.getVaryingSequence().getLastAminoAcidPos()); } }