package org.nextprot.api.commons.bio;
import org.junit.Assert;
import org.junit.Test;
public class AminoAcidCodeTest {
@Test
public void testValueOfCode1Found() throws Exception {
Assert.assertEquals(AminoAcidCode.ALANINE, AminoAcidCode.valueOfAminoAcid("A"));
}
@Test
public void testValueOfCode1AlsoFound() throws Exception {
Assert.assertEquals(AminoAcidCode.STOP, AminoAcidCode.valueOfAminoAcid("*"));
}
@Test
public void testValueOfCode3Found() throws Exception {
Assert.assertEquals(AminoAcidCode.ALANINE, AminoAcidCode.valueOfAminoAcid("Ala"));
}
@Test
public void testValueOfCodeSequenceExplicit3LetterCode() throws Exception {
Assert.assertArrayEquals(new AminoAcidCode[]{AminoAcidCode.TRYPTOPHAN, AminoAcidCode.TRYPTOPHAN, AminoAcidCode.ALANINE, AminoAcidCode.TYROSINE},
AminoAcidCode.valueOfAminoAcidCodeSequence("TrpTrpAlaTyr", AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testValueOfCodeSequenceImplicit3LetterCode() throws Exception {
Assert.assertArrayEquals(new AminoAcidCode[]{AminoAcidCode.TRYPTOPHAN, AminoAcidCode.TRYPTOPHAN, AminoAcidCode.ALANINE, AminoAcidCode.TYROSINE},
AminoAcidCode.valueOfAminoAcidCodeSequence("TrpTrpAlaTyr"));
}
@Test
public void testValueOfCodeSequenceExplicit3LetterCodeStop() throws Exception {
Assert.assertArrayEquals(new AminoAcidCode[]{AminoAcidCode.STOP},
AminoAcidCode.valueOfAminoAcidCodeSequence("Ter", AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testValueOfCodeSequenceImplicit3LetterCodeStop() throws Exception {
Assert.assertArrayEquals(new AminoAcidCode[]{AminoAcidCode.STOP},
AminoAcidCode.valueOfAminoAcidCodeSequence("Ter"));
}
@Test
public void testValueOfCodeSequenceExplicit1LetterCode() throws Exception {
Assert.assertArrayEquals(new AminoAcidCode[]{AminoAcidCode.THREONINE, AminoAcidCode.TYROSINE, AminoAcidCode.STOP},
AminoAcidCode.valueOfAminoAcidCodeSequence("TY*", AminoAcidCode.CodeType.ONE_LETTER));
}
@Test
public void testValueOfCodeSequenceImplicit1LetterCode() throws Exception {
Assert.assertArrayEquals(new AminoAcidCode[]{AminoAcidCode.THREONINE, AminoAcidCode.TYROSINE, AminoAcidCode.STOP},
AminoAcidCode.valueOfAminoAcidCodeSequence("TY*"));
}
@Test(expected = IllegalArgumentException.class)
public void testValueOfCodeSequenceFirstInvalid() throws Exception {
AminoAcidCode.valueOfAminoAcidCodeSequence("TrpWAlaY", AminoAcidCode.CodeType.THREE_LETTER);
}
@Test
public void testGetAACode1() throws Exception {
Assert.assertEquals("A", AminoAcidCode.ALANINE.get1LetterCode());
}
@Test
public void testGetAACode3() throws Exception {
Assert.assertEquals("Ala", AminoAcidCode.ALANINE.get3LetterCode());
}
@Test(expected = IllegalArgumentException.class)
public void testValueOfCode1AANotFound() throws Exception {
AminoAcidCode.valueOfAminoAcid("a");
}
@Test
public void testGetStopCode1() throws Exception {
Assert.assertEquals("*", AminoAcidCode.STOP.get1LetterCode());
}
@Test
public void testGetStopCode3() throws Exception {
Assert.assertEquals("Ter", AminoAcidCode.STOP.get3LetterCode());
}
@Test
public void testAsArray() throws Exception {
Assert.assertArrayEquals(new AminoAcidCode[] {AminoAcidCode.ASPARTIC_ACID}, new AminoAcidCode[] { AminoAcidCode.ASPARTIC_ACID} );
}
@Test
public void testGetXaaCode3() throws Exception {
Assert.assertEquals(AminoAcidCode.XAA, AminoAcidCode.valueOf("XAA"));
Assert.assertEquals("X", AminoAcidCode.XAA.get1LetterCode());
Assert.assertEquals("Xaa", AminoAcidCode.XAA.get3LetterCode());
}
@Test
public void testGetAsxCode3() throws Exception {
Assert.assertEquals(AminoAcidCode.ASX, AminoAcidCode.valueOf("ASX"));
Assert.assertEquals("B", AminoAcidCode.ASX.get1LetterCode());
Assert.assertEquals("Asx", AminoAcidCode.ASX.get3LetterCode());
}
@Test
public void testGetGlxCode3() throws Exception {
Assert.assertEquals(AminoAcidCode.GLX, AminoAcidCode.valueOf("GLX"));
Assert.assertEquals("Z", AminoAcidCode.GLX.get1LetterCode());
Assert.assertEquals("Glx", AminoAcidCode.GLX.get3LetterCode());
}
@Test
public void testGetXleCode3() throws Exception {
Assert.assertEquals(AminoAcidCode.XLE, AminoAcidCode.valueOf("XLE"));
Assert.assertEquals("J", AminoAcidCode.XLE.get1LetterCode());
Assert.assertEquals("Xle", AminoAcidCode.XLE.get3LetterCode());
}
@Test
public void testValueOfCodeSequenceWithAmbiguity() throws Exception {
Assert.assertArrayEquals(new AminoAcidCode[]{AminoAcidCode.ALANINE, AminoAcidCode.XAA, AminoAcidCode.TYROSINE},
AminoAcidCode.valueOfAminoAcidCodeSequence("AXY"));
}
@Test
public void testCountAllAminoAcidCodesByCategory() {
Assert.assertEquals(4, AminoAcidCode.ambiguousAminoAcidValues().size());
Assert.assertEquals(23, AminoAcidCode.nonAmbiguousAminoAcidValues().size());
Assert.assertEquals(AminoAcidCode.ambiguousAminoAcidValues().size()+AminoAcidCode.nonAmbiguousAminoAcidValues().size(),
AminoAcidCode.values().length);
}
@Test
public void ambiguousAminoAcidsAreAmbiguous() throws Exception {
for (AminoAcidCode aac : AminoAcidCode.ambiguousAminoAcidValues()) {
Assert.assertTrue(aac.isAmbiguous());
}
}
@Test
public void nonAmbiguousAminoAcidShouldMatchASingleAminoAcid() throws Exception {
for (AminoAcidCode aac : AminoAcidCode.nonAmbiguousAminoAcidValues()) {
Assert.assertTrue(!aac.isAmbiguous());
Assert.assertTrue(aac.match(aac));
}
Assert.assertTrue(!AminoAcidCode.LEUCINE.match(AminoAcidCode.ISOLEUCINE));
}
@Test
public void XaaShouldMatchAllAminoAcids() throws Exception {
for (AminoAcidCode aac : AminoAcidCode.nonAmbiguousAminoAcidValues()) {
Assert.assertTrue(AminoAcidCode.XAA.match(aac));
}
}
@Test
public void AsxShouldMatchAspOrAsn() throws Exception {
Assert.assertTrue(AminoAcidCode.ASX.match(AminoAcidCode.ASPARTIC_ACID));
Assert.assertTrue(AminoAcidCode.ASX.match(AminoAcidCode.ASPARAGINE));
}
@Test
public void GlxShouldMatchGluOrGln() throws Exception {
Assert.assertTrue(AminoAcidCode.GLX.match(AminoAcidCode.GLUTAMIC_ACID));
Assert.assertTrue(AminoAcidCode.GLX.match(AminoAcidCode.GLUTAMINE));
}
@Test
public void XleShouldMatchIleOrLeu() {
Assert.assertTrue(AminoAcidCode.XLE.match(AminoAcidCode.ISOLEUCINE));
Assert.assertTrue(AminoAcidCode.XLE.match(AminoAcidCode.LEUCINE));
}
}