JAL-1270 JUnit to TestNG refactoring
[jalview.git] / test / jalview / ws / dbsources / UniprotTest.java
1 package jalview.ws.dbsources;
2
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertNull;
5 import org.testng.annotations.Test;
6 import java.io.Reader;
7 import java.io.StringReader;
8 import java.util.Vector;
9
10 import jalview.datamodel.PDBEntry;
11 import jalview.datamodel.SequenceFeature;
12 import jalview.datamodel.UniprotEntry;
13
14 public class UniprotTest
15 {
16   // adapted from http://www.uniprot.org/uniprot/A9CKP4.xml
17   private static final String UNIPROT_XML = "<?xml version='1.0' encoding='UTF-8'?>"
18           + "<uniprot>"
19           + "<entry dataset=\"TrEMBL\" created=\"2008-01-15\" modified=\"2015-03-04\" version=\"38\">"
20           + "<accession>A9CKP4</accession>"
21           + "<accession>A9CKP5</accession>"
22           + "<name>A9CKP4_AGRT5</name>"
23           + "<name>A9CKP4_AGRT6</name>"
24           + "<protein><recommendedName><fullName>Mitogen-activated protein kinase 13</fullName><fullName>Henry</fullName></recommendedName></protein>"
25           + "<dbReference type=\"PDB\" id=\"2FSQ\"><property type=\"method\" value=\"X-ray\"/><property type=\"resolution\" value=\"1.40\"/></dbReference>"
26           + "<dbReference type=\"PDBsum\" id=\"2FSR\"/>"
27           + "<feature type=\"signal peptide\" evidence=\"7\"><location><begin position=\"1\"/><end position=\"18\"/></location></feature>"
28           + "<feature type=\"propeptide\" description=\"Activation peptide\" id=\"PRO_0000027399\" evidence=\"9 16 17 18\"><location><begin position=\"19\"/><end position=\"20\"/></location></feature>"
29           + "<feature type=\"chain\" description=\"Granzyme B\" id=\"PRO_0000027400\"><location><begin position=\"21\"/><end position=\"247\"/></location></feature>"
30           + "<sequence length=\"10\" mass=\"27410\" checksum=\"8CB760AACF88FE6C\" modified=\"2008-01-15\" version=\"1\">MHAPL VSKDL</sequence></entry>"
31           + "</uniprot>";
32
33   /**
34    * Test the method that unmarshals XML to a Uniprot model
35    */
36   @Test
37   public void testGetUniprotEntries()
38   {
39     Uniprot u = new Uniprot();
40     Reader reader = new StringReader(UNIPROT_XML);
41     Vector<UniprotEntry> entries = u.getUniprotEntries(reader);
42     assertEquals(1, entries.size());
43     UniprotEntry entry = entries.get(0);
44     assertEquals(2, entry.getName().size());
45     assertEquals("A9CKP4_AGRT5", entry.getName().get(0));
46     assertEquals("A9CKP4_AGRT6", entry.getName().get(1));
47     assertEquals(2, entry.getAccession().size());
48     assertEquals("A9CKP4", entry.getAccession().get(0));
49     assertEquals("A9CKP5", entry.getAccession().get(1));
50
51     /*
52      * UniprotSequence drops any space characters
53      */
54     assertEquals("MHAPLVSKDL", entry.getUniprotSequence()
55             .getContent());
56
57     assertEquals(2, entry.getProtein().getName().size());
58     assertEquals("Mitogen-activated protein kinase 13", entry.getProtein()
59             .getName().get(0));
60     assertEquals("Henry", entry.getProtein().getName().get(1));
61
62     /*
63      * Check sequence features
64      */
65     Vector<SequenceFeature> features = entry.getFeature();
66     assertEquals(3, features.size());
67     SequenceFeature sf = features.get(0);
68     assertEquals("signal peptide", sf.getType());
69     assertNull(sf.getDescription());
70     assertNull(sf.getStatus());
71     assertEquals(1, sf.getPosition()); // wrong - Castor bug??
72     assertEquals(1, sf.getBegin());
73     assertEquals(18, sf.getEnd());
74     sf = features.get(1);
75     assertEquals("propeptide", sf.getType());
76     assertEquals("Activation peptide", sf.getDescription());
77     assertEquals(19, sf.getPosition()); // wrong - Castor bug??
78     assertEquals(19, sf.getBegin());
79     assertEquals(20, sf.getEnd());
80     sf = features.get(2);
81     assertEquals("chain", sf.getType());
82     assertEquals("Granzyme B", sf.getDescription());
83     assertEquals(21, sf.getPosition()); // wrong - Castor bug??
84     assertEquals(21, sf.getBegin());
85     assertEquals(247, sf.getEnd());
86
87     /*
88      * Check cross-references
89      */
90     Vector<PDBEntry> xrefs = entry.getDbReference();
91     assertEquals(2, xrefs.size());
92
93     PDBEntry xref = xrefs.get(0);
94     assertEquals("2FSQ", xref.getId());
95     assertEquals("PDB", xref.getType());
96     assertEquals(2, xref.getProperty().size());
97     assertEquals("X-ray", xref.getProperty().get("method"));
98     assertEquals("1.40", xref.getProperty().get("resolution"));
99
100     xref = xrefs.get(1);
101     assertEquals("2FSR", xref.getId());
102     assertEquals("PDBsum", xref.getType());
103     assertNull(xref.getProperty());
104   }
105
106   /**
107    * Test the method that formats the sequence name in Fasta style
108    */
109   @Test
110   public void testConstructSequenceFastaHeader()
111   {
112     Uniprot u = new Uniprot();
113     Reader reader = new StringReader(UNIPROT_XML);
114     Vector<UniprotEntry> entries = u.getUniprotEntries(reader);
115     UniprotEntry entry = entries.get(0);
116
117     // source + accession ids + names + protein names
118     String expectedName = ">UniProt/Swiss-Prot|A9CKP4|A9CKP5|A9CKP4_AGRT5|A9CKP4_AGRT6 Mitogen-activated protein kinase 13 Henry";
119     assertEquals(expectedName, Uniprot.constructSequenceFastaHeader(entry)
120             .toString());
121   }
122 }