JAL-2089 patch broken merge to master for Release 2.10.0b1
[jalview.git] / test / jalview / ws / seqfetcher / DbRefFetcherTest.java
index 1171bfd..0a565bd 100644 (file)
@@ -33,8 +33,11 @@ import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
 import jalview.util.DBRefUtils;
 import jalview.ws.SequenceFetcher;
+import jalview.ws.dbsources.Pdb;
+import jalview.ws.dbsources.Uniprot;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.testng.annotations.AfterClass;
@@ -60,45 +63,48 @@ public class DbRefFetcherTest
   /**
    * @throws java.lang.Exception
    */
-  @AfterClass
+  @AfterClass(alwaysRun = true)
   public static void tearDownAfterClass() throws Exception
   {
   }
 
   /**
    * Tests that standard protein database sources include Uniprot (as the first)
-   * and also PDB. (Additional sources are dependent on available of DAS
+   * and also PDB. (Additional sources are dependent on availability of DAS
    * services.)
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testStandardProtDbs()
   {
-    String[] defdb = DBRefSource.PROTEINDBS;
+    List<String> defdb = new ArrayList<String>();
+    defdb.addAll(Arrays.asList(DBRefSource.PROTEINDBS));
+    defdb.add(DBRefSource.PDB);
     List<DbSourceProxy> srces = new ArrayList<DbSourceProxy>();
+    SequenceFetcher sfetcher = new SequenceFetcher();
+    boolean pdbFound = false;
+
     for (String ddb : defdb)
     {
-      SequenceFetcher sfetcher = new SequenceFetcher();
       List<DbSourceProxy> srcesfordb = sfetcher.getSourceProxy(ddb);
 
       if (srcesfordb != null)
       {
+        // TODO is this right? get duplicate entries
         srces.addAll(srcesfordb);
       }
     }
 
     int i = 0;
     int uniprotPos = -1;
-    int pdbPos = -1;
-    // append the selected sequence sources to the default dbs
     for (DbSourceProxy s : srces)
     {
-      if (s instanceof jalview.ws.dbsources.Uniprot)
+      if (s instanceof Uniprot && uniprotPos == -1)
       {
         uniprotPos = i;
       }
-      if (s instanceof jalview.ws.dbsources.Pdb)
+      if (s instanceof Pdb)
       {
-        pdbPos = i;
+        pdbFound = true;
       }
       i++;
     }
@@ -107,7 +113,7 @@ public class DbRefFetcherTest
             + srces.size() + " sources (source was at position "
             + uniprotPos + ")", uniprotPos == 0);
     assertTrue("Failed to find PDB source amongst " + srces.size()
-            + " sources", pdbPos >= 0);
+            + " sources", pdbFound);
   }
 
   /**
@@ -116,12 +122,12 @@ public class DbRefFetcherTest
    * 
    * @throws Exception
    */
-  @Test(groups =
-  { "External" })
+  @Test(groups = { "External" })
   public void testEmblUniprotProductRecovery() throws Exception
   {
     String retrievalId = "V00488";
-    DbSourceProxy embl = new SequenceFetcher().getSourceProxy(DBRefSource.EMBL).get(0);
+    DbSourceProxy embl = new SequenceFetcher().getSourceProxy(
+            DBRefSource.EMBL).get(0);
     assertNotNull("Couldn't find the EMBL retrieval client", embl);
     verifyProteinNucleotideXref(retrievalId, embl);
   }
@@ -132,8 +138,7 @@ public class DbRefFetcherTest
    * 
    * @throws Exception
    */
-  @Test(groups =
-  { "External" })
+  @Test(groups = { "External" })
   public void testEmblCDSUniprotProductRecovery() throws Exception
   {
     String retrievalId = "AAH29712";
@@ -155,7 +160,8 @@ public class DbRefFetcherTest
   {
     AlignmentI alsq = embl.getSequenceRecords(retrievalId);
     assertNotNull("Couldn't find the EMBL record " + retrievalId, alsq);
-    assertEquals("Didn't retrieve right number of records", 1, alsq.getHeight());
+    assertEquals("Didn't retrieve right number of records", 1,
+            alsq.getHeight());
     SequenceI seq = alsq.getSequenceAt(0);
     assertEquals("Wrong sequence name", embl.getDbSource() + "|"
             + retrievalId, seq.getName());
@@ -166,14 +172,16 @@ public class DbRefFetcherTest
             FeatureProperties.isCodingFeature(embl.getDbSource(),
                     sfs[0].getType()));
     assertEquals(embl.getDbSource(), sfs[0].getFeatureGroup());
-    DBRefEntry[] dr = DBRefUtils.selectRefs(seq.getDBRef(), DBRefSource.PROTEINSEQ);
+    DBRefEntry[] dr = DBRefUtils.selectRefs(seq.getDBRefs(),
+            new String[] { DBRefSource.UNIPROT });
     assertNotNull(dr);
     assertEquals("Expected a single Uniprot cross reference", 1, dr.length);
     assertEquals("Expected cross reference map to be one amino acid", dr[0]
             .getMap().getMappedWidth(), 1);
     assertEquals("Expected local reference map to be 3 nucleotides", dr[0]
             .getMap().getWidth(), 3);
-    AlignmentI sprods = CrossRef.findXrefSequences(alsq.getSequencesArray(), true, dr[0].getSource(), alsq.getDataset());
+    AlignmentI sprods = new CrossRef(alsq.getSequencesArray(), alsq)
+            .findXrefSequences(dr[0].getSource(), true);
     assertNotNull(
             "Couldn't recover cross reference sequence from dataset. Was it ever added ?",
             sprods);