/*
* 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.assertFalse;
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertTrue;
import jalview.datamodel.DBRefEntry;
import java.io.StringReader;
import java.util.Vector;
import org.testng.annotations.Test;
public class EmblFileTest
{
// adapted from http://www.ebi.ac.uk/Tools/dbfetch/dbfetch/embl/x53828/emblxml
private static final String TESTDATA = ""
+ ""
+ ""
+ "Chicken LDH-A mRNA for lactate dehydrogenase A chain (EC 1.1.1.27)"
+ "L-lactate dehydrogenasechutney"
+ ""
+ ""
+ "L-lactate dehydrogenase A-chainpickle"
+ "MSLKDHLIHNKeith"
+ ""
+ ""
+ "601058"
+ ""
+ "GTGACG";
@Test(groups = { "Functional" })
public void testGetEmblFile()
{
Vector entries = EmblFile.getEmblFile(
new StringReader(TESTDATA)).getEntries();
assertEquals(1, entries.size());
EmblEntry entry = entries.get(0);
assertEquals("X53828", entry.getAccession());
assertEquals(
"Chicken LDH-A mRNA for lactate dehydrogenase A chain (EC 1.1.1.27)",
entry.getDesc());
assertEquals("2005-04-18", entry.getLastUpdated());
/*
* 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("25", entry.getRCreated());
// assertEquals("83", entry.getRLastUpdated());
assertEquals(2, entry.getKeywords().size());
assertEquals("L-lactate dehydrogenase", entry.getKeywords().get(0));
assertEquals("chutney", entry.getKeywords().get(1));
/*
* dbrefs
*/
assertEquals(1, entry.getDbRefs().size());
DBRefEntry dbref = entry.getDbRefs().get(0);
assertEquals("EuropePMC", dbref.getSource());
assertEquals("PMC1460223", dbref.getAccessionId());
assertEquals("9649548", dbref.getVersion());
/*
* sequence features
*/
assertEquals(1, entry.getFeatures().size());
EmblFeature ef = entry.getFeatures().get(0);
assertEquals("CDS", ef.getName());
assertEquals(2, ef.getDbRefs().size());
dbref = ef.getDbRefs().get(0);
assertEquals("GOA", dbref.getSource());
assertEquals("P00340", dbref.getAccessionId());
assertEquals("2.1", dbref.getVersion());
dbref = ef.getDbRefs().get(1);
assertEquals("InterPro", dbref.getSource());
assertEquals("IPR001236", dbref.getAccessionId());
assertEquals("", dbref.getVersion());
assertEquals(2, ef.getQualifiers().size());
// feature qualifiers
Qualifier q = ef.getQualifiers().get(0);
assertEquals("note", q.getName());
assertEquals(2, q.getValues().length);
assertEquals("L-lactate dehydrogenase A-chain", q.getValues()[0]);
assertEquals("pickle", q.getValues()[1]);
assertNull(q.getEvidence());
q = ef.getQualifiers().get(1);
assertEquals("translation", q.getName());
assertEquals(1, q.getValues().length);
assertEquals("MSLKDHLIHN", q.getValues()[0]);
assertEquals(1, q.getEvidence().length);
assertEquals("Keith", q.getEvidence()[0]);
// feature locations
assertEquals(1, ef.getLocations().size());
EmblFeatureLocations fl = ef.getLocations().get(0);
assertEquals("single", fl.getLocationType());
assertTrue(fl.isLocationComplement());
assertEquals(1, fl.getLocElements().size());
EmblFeatureLocElement le = fl.getLocElements().get(0);
assertEquals("range", le.getType());
assertEquals("X53828", le.getAccession());
assertEquals("1", le.getVersion());
assertFalse(le.isComplement());
assertEquals(2, le.getBasePositions().length);
BasePosition bp = le.getBasePositions()[0];
assertEquals("simple", bp.getType());
assertEquals("60", bp.getPos());
bp = le.getBasePositions()[1];
assertEquals("join", bp.getType());
assertEquals("1058", bp.getPos());
/*
* Sequence
*/
EmblSequence seq = entry.getSequence();
assertEquals("mRNA", seq.getType());
assertEquals("2", seq.getVersion());
assertEquals("GTGACG", seq.getSequence());
}
}