JAL-2113 embl_mapping.xml and code updated for EMBL XML v1.2
[jalview.git] / test / jalview / datamodel / xdb / embl / EmblFileTest.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.datamodel.xdb.embl;
22
23 import static org.testng.AssertJUnit.assertEquals;
24 import static org.testng.AssertJUnit.assertNull;
25
26 import jalview.datamodel.DBRefEntry;
27
28 import java.io.StringReader;
29 import java.util.Vector;
30
31 import org.testng.annotations.Test;
32
33 public class EmblFileTest
34 {
35   // adapted from http://www.ebi.ac.uk/ena/data/view/x53828&display=xml
36   private static final String TESTDATA = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"
37           + "<ROOT>"
38           + "<entry accession=\"X53828\" entryVersion=\"3\" lastUpdated=\"2005-04-18\" releaseCreated=\"25\" releaseLastUpdated=\"83\""
39           + " version=\"1\" moleculeType=\"mRNA\" topology=\"linear\" sequenceLength=\"1575\">"
40           + "<description>Chicken LDH-A mRNA for lactate dehydrogenase A chain (EC 1.1.1.27)</description>"
41           + "<keyword>L-lactate dehydrogenase</keyword><keyword>chutney</keyword>"
42           + "<xref db=\"EuropePMC\" id=\"PMC1460223\" secondaryId=\"9649548\" />"
43           + "<xref db=\"MD5\" id=\"d3b68\" />"
44           + "<feature name=\"CDS\" location=\"60..1058\">"
45           + "<xref db=\"GOA\" id=\"P00340\" secondaryId=\"2.1\" /><xref db=\"InterPro\" id=\"IPR001236\" />"
46           + "<qualifier name=\"note\"><value>L-lactate dehydrogenase A-chain</value><value>pickle</value></qualifier>"
47           + "<qualifier name=\"translation\"><value>MSLKDHLIHN</value><evidence>Keith</evidence></qualifier>"
48           + "</feature>"
49           + "<sequence>GTGACG</sequence></entry></ROOT>";
50
51   @Test(groups = { "Functional" })
52   public void testGetEmblFile()
53   {
54     Vector<EmblEntry> entries = EmblFile.getEmblFile(
55             new StringReader(TESTDATA)).getEntries();
56     assertEquals(1, entries.size());
57     EmblEntry entry = entries.get(0);
58
59     assertEquals("X53828", entry.getAccession());
60     assertEquals(
61             "Chicken LDH-A mRNA for lactate dehydrogenase A chain (EC 1.1.1.27)",
62             entry.getDesc());
63     assertEquals("2005-04-18", entry.getLastUpdated());
64     assertEquals("mRNA", entry.getMoleculeType());
65     assertEquals("1", entry.getSequenceVersion());
66     assertEquals("3", entry.getEntryVersion());
67     assertEquals("linear", entry.getTopology());
68     assertEquals("1575", entry.getSequenceLength());
69
70     /*
71      * FIXME these assertions fail - values are null - why?? Adding or removing
72      * attributes in the test XML modifies behaviour. eg. inserting an attribute
73      * _before_ lastUpdated results in a null value in this field.
74      */
75     // assertEquals("25", entry.getRCreated());
76     // assertEquals("83", entry.getRLastUpdated());
77
78     assertEquals(2, entry.getKeywords().size());
79     assertEquals("L-lactate dehydrogenase", entry.getKeywords().get(0));
80     assertEquals("chutney", entry.getKeywords().get(1));
81
82     /*
83      * dbrefs
84      */
85     assertEquals(2, entry.getDbRefs().size());
86     DBRefEntry dbref = entry.getDbRefs().get(0);
87     assertEquals("EuropePMC", dbref.getSource());
88     assertEquals("PMC1460223", dbref.getAccessionId());
89     assertEquals("9649548", dbref.getVersion());
90     dbref = entry.getDbRefs().get(1);
91     assertEquals("MD5", dbref.getSource());
92     assertEquals("d3b68", dbref.getAccessionId());
93     // blank version has been converted to "0"
94     assertEquals("0", dbref.getVersion());
95
96     /*
97      * sequence feature for CDS
98      */
99     assertEquals(1, entry.getFeatures().size());
100     EmblFeature ef = entry.getFeatures().get(0);
101     assertEquals("CDS", ef.getName());
102     assertEquals("60..1058", ef.getLocation());
103     assertEquals(2, ef.getDbRefs().size());
104     dbref = ef.getDbRefs().get(0);
105     assertEquals("GOA", dbref.getSource());
106     assertEquals("P00340", dbref.getAccessionId());
107     assertEquals("2.1", dbref.getVersion());
108     dbref = ef.getDbRefs().get(1);
109     assertEquals("InterPro", dbref.getSource());
110     assertEquals("IPR001236", dbref.getAccessionId());
111     // blank version converted to "0":
112     assertEquals("0", dbref.getVersion());
113     assertEquals(2, ef.getQualifiers().size());
114
115     // feature qualifiers
116     Qualifier q = ef.getQualifiers().get(0);
117     assertEquals("note", q.getName());
118     assertEquals(2, q.getValues().length);
119     assertEquals("L-lactate dehydrogenase A-chain", q.getValues()[0]);
120     assertEquals("pickle", q.getValues()[1]);
121     assertNull(q.getEvidence());
122     q = ef.getQualifiers().get(1);
123     assertEquals("translation", q.getName());
124     assertEquals(1, q.getValues().length);
125     assertEquals("MSLKDHLIHN", q.getValues()[0]);
126     assertEquals(1, q.getEvidence().length);
127     assertEquals("Keith", q.getEvidence()[0]);
128
129     /*
130      * Sequence
131      */
132     EmblSequence seq = entry.getSequence();
133     assertEquals("GTGACG", seq.getSequence());
134
135     /*
136      * getSequence() converts empty DBRefEntry.version to "0"
137      */
138     assertEquals("0", entry.getDbRefs().get(1).getVersion());
139     assertEquals("0", entry.getFeatures().get(0).getDbRefs().get(1)
140             .getVersion());
141   }
142 }