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.assertFalse;
25 import static org.testng.AssertJUnit.assertNull;
26 import static org.testng.AssertJUnit.assertTrue;
28 import jalview.datamodel.DBRefEntry;
30 import java.io.StringReader;
31 import java.util.Vector;
33 import org.testng.annotations.Test;
35 public class EmblFileTest
37 // adapted from http://www.ebi.ac.uk/Tools/dbfetch/dbfetch/embl/x53828/emblxml
38 private static final String TESTDATA = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"
40 + "<entry accession=\"X53828\" version=\"3\" lastUpdated=\"2005-04-18\" releaseCreated=\"25\" releaseLastUpdated=\"83\">"
41 + "<description>Chicken LDH-A mRNA for lactate dehydrogenase A chain (EC 1.1.1.27)</description>"
42 + "<keyword>L-lactate dehydrogenase</keyword><keyword>chutney</keyword>"
43 + "<dbreference db=\"EuropePMC\" primary=\"PMC1460223\" secondary=\"9649548\" />"
44 + "<feature name=\"CDS\"><dbreference db=\"GOA\" primary=\"P00340\" secondary=\"2.1\" /><dbreference db=\"InterPro\" primary=\"IPR001236\" />"
45 + "<qualifier name=\"note\"><value>L-lactate dehydrogenase A-chain</value><value>pickle</value></qualifier>"
46 + "<qualifier name=\"translation\"><value>MSLKDHLIHN</value><evidence>Keith</evidence></qualifier>"
47 + "<location type=\"single\" complement=\"true\">"
48 + "<locationElement type=\"range\" accession=\"X53828\" version=\"1\" complement=\"false\">"
49 + "<basePosition type=\"simple\">60</basePosition><basePosition type=\"join\">1058</basePosition>"
50 + "</locationElement></location></feature>"
51 + "<sequence type=\"mRNA\" version=\"2\">GTGACG</sequence></entry></EMBL_Services>";
53 @Test(groups = { "Functional" })
54 public void testGetEmblFile()
56 Vector<EmblEntry> entries = EmblFile.getEmblFile(
57 new StringReader(TESTDATA)).getEntries();
58 assertEquals(1, entries.size());
59 EmblEntry entry = entries.get(0);
61 assertEquals("X53828", entry.getAccession());
63 "Chicken LDH-A mRNA for lactate dehydrogenase A chain (EC 1.1.1.27)",
65 assertEquals("2005-04-18", entry.getLastUpdated());
68 * FIXME these assertions fail - values are null - why?? Adding or removing
69 * attributes in the test XML modifies behaviour. eg. inserting an attribute
70 * _before_ lastUpdated results in a null value in this field.
72 // assertEquals("25", entry.getRCreated());
73 // assertEquals("83", entry.getRLastUpdated());
75 assertEquals(2, entry.getKeywords().size());
76 assertEquals("L-lactate dehydrogenase", entry.getKeywords().get(0));
77 assertEquals("chutney", entry.getKeywords().get(1));
82 assertEquals(1, entry.getDbRefs().size());
83 DBRefEntry dbref = entry.getDbRefs().get(0);
84 assertEquals("EuropePMC", dbref.getSource());
85 assertEquals("PMC1460223", dbref.getAccessionId());
86 assertEquals("9649548", dbref.getVersion());
91 assertEquals(1, entry.getFeatures().size());
92 EmblFeature ef = entry.getFeatures().get(0);
93 assertEquals("CDS", ef.getName());
94 assertEquals(2, ef.getDbRefs().size());
95 dbref = ef.getDbRefs().get(0);
96 assertEquals("GOA", dbref.getSource());
97 assertEquals("P00340", dbref.getAccessionId());
98 assertEquals("2.1", dbref.getVersion());
99 dbref = ef.getDbRefs().get(1);
100 assertEquals("InterPro", dbref.getSource());
101 assertEquals("IPR001236", dbref.getAccessionId());
102 assertEquals("", dbref.getVersion());
103 assertEquals(2, ef.getQualifiers().size());
105 // feature qualifiers
106 Qualifier q = ef.getQualifiers().get(0);
107 assertEquals("note", q.getName());
108 assertEquals(2, q.getValues().length);
109 assertEquals("L-lactate dehydrogenase A-chain", q.getValues()[0]);
110 assertEquals("pickle", q.getValues()[1]);
111 assertNull(q.getEvidence());
112 q = ef.getQualifiers().get(1);
113 assertEquals("translation", q.getName());
114 assertEquals(1, q.getValues().length);
115 assertEquals("MSLKDHLIHN", q.getValues()[0]);
116 assertEquals(1, q.getEvidence().length);
117 assertEquals("Keith", q.getEvidence()[0]);
120 assertEquals(1, ef.getLocations().size());
121 EmblFeatureLocations fl = ef.getLocations().get(0);
122 assertEquals("single", fl.getLocationType());
123 assertTrue(fl.isLocationComplement());
124 assertEquals(1, fl.getLocElements().size());
125 EmblFeatureLocElement le = fl.getLocElements().get(0);
126 assertEquals("range", le.getType());
127 assertEquals("X53828", le.getAccession());
128 assertEquals("1", le.getVersion());
129 assertFalse(le.isComplement());
130 assertEquals(2, le.getBasePositions().length);
131 BasePosition bp = le.getBasePositions()[0];
132 assertEquals("simple", bp.getType());
133 assertEquals("60", bp.getPos());
134 bp = le.getBasePositions()[1];
135 assertEquals("join", bp.getType());
136 assertEquals("1058", bp.getPos());
141 EmblSequence seq = entry.getSequence();
142 assertEquals("mRNA", seq.getType());
143 assertEquals("2", seq.getVersion());
144 assertEquals("GTGACG", seq.getSequence());