JAL-2089 patch broken merge to master for Release 2.10.0b1
[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.util.Vector;
29
30 import org.testng.annotations.Test;
31
32 public class EmblFileTest
33 {
34
35   @Test(groups = { "Functional" })
36   public void testGetEmblFile()
37   {
38     Vector<EmblEntry> entries = EmblTestHelper.getEmblFile().getEntries();
39     assertEquals(1, entries.size());
40     EmblEntry entry = entries.get(0);
41
42     assertEquals("X07547", entry.getAccession());
43     assertEquals("C. trachomatis plasmid", entry.getDescription());
44     assertEquals("STD", entry.getDataClass());
45     assertEquals("PRO", entry.getTaxonomicDivision());
46     assertEquals("1999-02-10", entry.getLastUpdatedDate());
47     assertEquals("58", entry.getLastUpdatedRelease());
48     assertEquals("1988-11-10", entry.getFirstPublicDate());
49     assertEquals("18", entry.getFirstPublicRelease());
50     assertEquals("genomic DNA", entry.getMoleculeType());
51     assertEquals("1", entry.getSequenceVersion());
52     assertEquals("8", entry.getEntryVersion());
53     assertEquals("linear", entry.getTopology());
54     assertEquals("7499", entry.getSequenceLength());
55
56     /*
57      * FIXME these assertions fail - values are null - why?? Adding or removing
58      * attributes in the test XML modifies behaviour. eg. inserting an attribute
59      * _before_ lastUpdated results in a null value in this field.
60      */
61     assertEquals("1988-11-10", entry.getFirstPublicDate());
62     assertEquals("18", entry.getFirstPublicRelease());
63
64     assertEquals(2, entry.getKeywords().size());
65     assertEquals("plasmid", entry.getKeywords().get(0));
66     assertEquals("unidentified reading frame", entry.getKeywords().get(1));
67
68     /*
69      * dbrefs
70      */
71     assertEquals(2, entry.getDbRefs().size());
72     DBRefEntry dbref = entry.getDbRefs().get(0);
73     assertEquals("EuropePMC", dbref.getSource());
74     assertEquals("PMC107176", dbref.getAccessionId());
75     assertEquals("9573186", dbref.getVersion());
76     dbref = entry.getDbRefs().get(1);
77     assertEquals("MD5", dbref.getSource());
78     assertEquals("ac73317", dbref.getAccessionId());
79     // blank version has been converted to "0"
80     assertEquals("0", dbref.getVersion());
81
82     /*
83      * three sequence features for CDS
84      */
85     assertEquals(3, entry.getFeatures().size());
86     /*
87      * first CDS
88      */
89     EmblFeature ef = entry.getFeatures().get(0);
90     assertEquals("CDS", ef.getName());
91     assertEquals("complement(46..57)", ef.getLocation());
92     assertEquals(2, ef.getDbRefs().size());
93     dbref = ef.getDbRefs().get(0);
94     assertEquals("UniProtKB/Swiss-Prot", dbref.getSource());
95     assertEquals("B0BCM4", dbref.getAccessionId());
96     assertEquals("2.1", dbref.getVersion());
97     dbref = ef.getDbRefs().get(1);
98     assertEquals("UniProtKB/Swiss-Prot", dbref.getSource());
99     assertEquals("P0CE20", dbref.getAccessionId());
100     // blank version gets converted to "0":
101     assertEquals("0", dbref.getVersion());
102     // CDS feature qualifiers
103     assertEquals(3, ef.getQualifiers().size());
104     Qualifier q = ef.getQualifiers().get(0);
105     assertEquals("note", q.getName());
106     assertEquals(2, q.getValues().length);
107     assertEquals("ORF 8 (AA 1-330)", q.getValues()[0]);
108     assertEquals("pickle", q.getValues()[1]);
109     assertNull(q.getEvidence());
110     q = ef.getQualifiers().get(1);
111     assertEquals("protein_id", q.getName());
112     assertEquals(1, q.getValues().length);
113     assertEquals("CAA30420.1", q.getValues()[0]);
114     q = ef.getQualifiers().get(2);
115     assertEquals("translation", q.getName());
116     assertEquals(1, q.getValues().length);
117     assertEquals("MLCF", q.getValues()[0]);
118     assertEquals(1, q.getEvidence().length);
119     assertEquals("Keith", q.getEvidence()[0]);
120
121     /*
122      * second CDS
123      */
124     ef = entry.getFeatures().get(1);
125     assertEquals("CDS", ef.getName());
126     assertEquals("4..15", ef.getLocation());
127     assertEquals(1, ef.getDbRefs().size());
128     dbref = ef.getDbRefs().get(0);
129     assertEquals("UniProtKB/Swiss-Prot", dbref.getSource());
130     assertEquals("B0BCM3", dbref.getAccessionId());
131     assertEquals("0", dbref.getVersion());
132     assertEquals(2, ef.getQualifiers().size());
133     q = ef.getQualifiers().get(0);
134     assertEquals("protein_id", q.getName());
135     assertEquals(1, q.getValues().length);
136     assertEquals("CAA30421.1", q.getValues()[0]);
137     q = ef.getQualifiers().get(1);
138     assertEquals("translation", q.getName());
139     assertEquals(1, q.getValues().length);
140     assertEquals("MSSS", q.getValues()[0]);
141
142     /*
143      * third CDS
144      */
145     ef = entry.getFeatures().get(2);
146     assertEquals("CDS", ef.getName());
147     assertEquals("join(4..6,10..15)", ef.getLocation());
148     assertNull(ef.getDbRefs());
149     assertEquals(2, ef.getQualifiers().size());
150     q = ef.getQualifiers().get(0);
151     assertEquals("protein_id", q.getName());
152     assertEquals(1, q.getValues().length);
153     assertEquals("CAA12345.6", q.getValues()[0]);
154     q = ef.getQualifiers().get(1);
155     assertEquals("translation", q.getName());
156     assertEquals(1, q.getValues().length);
157     assertEquals("MSS", q.getValues()[0]);
158
159     /*
160      * Sequence - verify newline not converted to space (JAL-2029)
161      */
162     EmblSequence seq = entry.getSequence();
163     assertEquals(
164             "GGTATGTCCTCTAGTACAAACACCCCCAATATTGTGATATAATTAAAAACATAGCAT",
165             seq.getSequence());
166
167     /*
168      * getSequence() converts empty DBRefEntry.version to "0"
169      */
170     assertEquals("0", entry.getDbRefs().get(1).getVersion());
171     assertEquals("0", entry.getFeatures().get(0).getDbRefs().get(1)
172             .getVersion());
173   }
174 }