/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.datamodel.xdb.embl;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNull;
import jalview.datamodel.DBRefEntry;
import jalview.gui.JvOptionPane;
import java.util.Vector;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class EmblFileTest
{
@BeforeClass(alwaysRun = true)
public void setUpJvOptionPane()
{
JvOptionPane.setInteractiveMode(false);
JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
}
@Test(groups = { "Functional" })
public void testGetEmblFile()
{
Vector entries = EmblTestHelper.getEmblFile().getEntries();
assertEquals(1, entries.size());
EmblEntry entry = entries.get(0);
assertEquals("X07547", entry.getAccession());
assertEquals("C. trachomatis plasmid", entry.getDescription());
assertEquals("STD", entry.getDataClass());
assertEquals("PRO", entry.getTaxonomicDivision());
assertEquals("1999-02-10", entry.getLastUpdatedDate());
assertEquals("58", entry.getLastUpdatedRelease());
assertEquals("1988-11-10", entry.getFirstPublicDate());
assertEquals("18", entry.getFirstPublicRelease());
assertEquals("genomic DNA", entry.getMoleculeType());
assertEquals("1", entry.getSequenceVersion());
assertEquals("8", entry.getEntryVersion());
assertEquals("linear", entry.getTopology());
assertEquals("7499", entry.getSequenceLength());
/*
* FIXME these assertions fail - values are null - why?? Adding or removing
* attributes in the test XML modifies behaviour. eg. inserting an attribute
* _before_ lastUpdated results in a null value in this field.
*/
assertEquals("1988-11-10", entry.getFirstPublicDate());
assertEquals("18", entry.getFirstPublicRelease());
assertEquals(2, entry.getKeywords().size());
assertEquals("plasmid", entry.getKeywords().get(0));
assertEquals("unidentified reading frame", entry.getKeywords().get(1));
/*
* dbrefs
*/
assertEquals(2, entry.getDbRefs().size());
DBRefEntry dbref = entry.getDbRefs().get(0);
assertEquals("EuropePMC", dbref.getSource());
assertEquals("PMC107176", dbref.getAccessionId());
assertEquals("9573186", dbref.getVersion());
dbref = entry.getDbRefs().get(1);
assertEquals("MD5", dbref.getSource());
assertEquals("ac73317", dbref.getAccessionId());
// blank version has been converted to "0"
assertEquals("0", dbref.getVersion());
/*
* three sequence features for CDS
*/
assertEquals(3, entry.getFeatures().size());
/*
* first CDS
*/
EmblFeature ef = entry.getFeatures().get(0);
assertEquals("CDS", ef.getName());
assertEquals("complement(46..57)", ef.getLocation());
assertEquals(2, ef.getDbRefs().size());
dbref = ef.getDbRefs().get(0);
assertEquals("UniProtKB/Swiss-Prot", dbref.getSource());
assertEquals("B0BCM4", dbref.getAccessionId());
assertEquals("2.1", dbref.getVersion());
dbref = ef.getDbRefs().get(1);
assertEquals("UniProtKB/Swiss-Prot", dbref.getSource());
assertEquals("P0CE20", dbref.getAccessionId());
// blank version gets converted to "0":
assertEquals("0", dbref.getVersion());
// CDS feature qualifiers
assertEquals(3, ef.getQualifiers().size());
Qualifier q = ef.getQualifiers().get(0);
assertEquals("note", q.getName());
assertEquals(2, q.getValues().length);
assertEquals("ORF 8 (AA 1-330)", q.getValues()[0]);
assertEquals("pickle", q.getValues()[1]);
assertNull(q.getEvidence());
q = ef.getQualifiers().get(1);
assertEquals("protein_id", q.getName());
assertEquals(1, q.getValues().length);
assertEquals("CAA30420.1", q.getValues()[0]);
q = ef.getQualifiers().get(2);
assertEquals("translation", q.getName());
assertEquals(1, q.getValues().length);
assertEquals("MLCF", q.getValues()[0]);
assertEquals(1, q.getEvidence().length);
assertEquals("Keith", q.getEvidence()[0]);
/*
* second CDS
*/
ef = entry.getFeatures().get(1);
assertEquals("CDS", ef.getName());
assertEquals("4..15", ef.getLocation());
assertEquals(1, ef.getDbRefs().size());
dbref = ef.getDbRefs().get(0);
assertEquals("UniProtKB/Swiss-Prot", dbref.getSource());
assertEquals("B0BCM3", dbref.getAccessionId());
assertEquals("0", dbref.getVersion());
assertEquals(2, ef.getQualifiers().size());
q = ef.getQualifiers().get(0);
assertEquals("protein_id", q.getName());
assertEquals(1, q.getValues().length);
assertEquals("CAA30421.1", q.getValues()[0]);
q = ef.getQualifiers().get(1);
assertEquals("translation", q.getName());
assertEquals(1, q.getValues().length);
assertEquals("MSSS", q.getValues()[0]);
/*
* third CDS
*/
ef = entry.getFeatures().get(2);
assertEquals("CDS", ef.getName());
assertEquals("join(4..6,10..15)", ef.getLocation());
assertNull(ef.getDbRefs());
assertEquals(2, ef.getQualifiers().size());
q = ef.getQualifiers().get(0);
assertEquals("protein_id", q.getName());
assertEquals(1, q.getValues().length);
assertEquals("CAA12345.6", q.getValues()[0]);
q = ef.getQualifiers().get(1);
assertEquals("translation", q.getName());
assertEquals(1, q.getValues().length);
assertEquals("MSS", q.getValues()[0]);
/*
* Sequence - verify newline not converted to space (JAL-2029)
*/
EmblSequence seq = entry.getSequence();
assertEquals(
"GGTATGTCCTCTAGTACAAACACCCCCAATATTGTGATATAATTAAAAACATAGCAT",
seq.getSequence());
/*
* getSequence() converts empty DBRefEntry.version to "0"
*/
assertEquals("0", entry.getDbRefs().get(1).getVersion());
assertEquals("0", entry.getFeatures().get(0).getDbRefs().get(1)
.getVersion());
}
}