2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
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.
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.
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.
21 package jalview.datamodel.xdb.embl;
23 import static org.testng.AssertJUnit.assertEquals;
24 import static org.testng.AssertJUnit.assertNull;
26 import jalview.datamodel.DBRefEntry;
28 import java.io.StringReader;
29 import java.util.Vector;
31 import org.testng.annotations.Test;
33 public class EmblFileTest
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\" ?>"
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>"
49 + "<sequence>GTGACG</sequence></entry></ROOT>";
51 @Test(groups = { "Functional" })
52 public void testGetEmblFile()
54 Vector<EmblEntry> entries = EmblFile.getEmblFile(
55 new StringReader(TESTDATA)).getEntries();
56 assertEquals(1, entries.size());
57 EmblEntry entry = entries.get(0);
59 assertEquals("X53828", entry.getAccession());
61 "Chicken LDH-A mRNA for lactate dehydrogenase A chain (EC 1.1.1.27)",
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());
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.
75 // assertEquals("25", entry.getRCreated());
76 // assertEquals("83", entry.getRLastUpdated());
78 assertEquals(2, entry.getKeywords().size());
79 assertEquals("L-lactate dehydrogenase", entry.getKeywords().get(0));
80 assertEquals("chutney", entry.getKeywords().get(1));
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());
97 * sequence feature for CDS
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());
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]);
132 EmblSequence seq = entry.getSequence();
133 assertEquals("GTGACG", seq.getSequence());
136 * getSequence() converts empty DBRefEntry.version to "0"
138 assertEquals("0", entry.getDbRefs().get(1).getVersion());
139 assertEquals("0", entry.getFeatures().get(0).getDbRefs().get(1)