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