JAL-3035 - jalview-das is no more !
[jalview.git] / test / jalview / ws / PDBSequenceFetcherTest.java
index 0572c85..d1e32b9 100644 (file)
@@ -25,6 +25,7 @@ import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.bin.Cache;
 import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
 import jalview.gui.JvOptionPane;
 import jalview.structure.StructureImportSettings;
@@ -34,6 +35,7 @@ import jalview.ws.seqfetcher.DbSourceProxy;
 import java.util.Arrays;
 import java.util.List;
 
+import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -60,7 +62,7 @@ public class PDBSequenceFetcherTest
     Cache.applicationProperties.setProperty("ADD_SS_ANN",
             Boolean.TRUE.toString());
 
-    sf = new SequenceFetcher(false);
+    sf = new SequenceFetcher();
   }
 
   /**
@@ -130,6 +132,7 @@ public class PDBSequenceFetcherTest
   private void testRetrieveProteinSeqFromPDB() throws Exception
   {
     List<DbSourceProxy> sps = sf.getSourceProxy("PDB");
+    StringBuilder errors = new StringBuilder();
     for (TestRetrieveObject str : toRetrieve)
     {
       AlignmentI response = sps.get(0).getSequenceRecords(str.id);
@@ -142,11 +145,41 @@ public class PDBSequenceFetcherTest
                 sq.getAnnotation().length > 0);
         assertTrue("No PDBEntry on sequence " + sq.getName(),
                 sq.getAllPDBEntries().size() > 0);
-        org.testng.Assert.assertEquals(sq.getEnd() - sq.getStart() + 1,
-                sq.getLength(),
-                "Sequence start/end doesn't match number of residues in sequence for "
-                        + sq.getName());
+        // FIXME: should test that all residues extracted as sequences from
+        // chains in structure have a mapping to data in the structure
+        List<SequenceFeature> prev = null;
+        int lastp = -1;
+        for (int col = 1; col <= sq.getLength(); col++)
+        {
+          List<SequenceFeature> sf = sq.findFeatures(col, col, "RESNUM");
+          if (sf.size() != 1)
+          {
+            errors.append(
+                    str.id + ": " +
+                            "Expected one feature at column (position): "
+                            + (col - 1)
+                            + " (" + sq.findPosition(col - 1) + ")"
+                            + ": saw "
+                            + sf.size());
+            errors.append("\n");
+            if (prev != null)
+            {
+              errors.append("Last Feature was at position " + lastp + ": "
+                      + prev.get(0).toString());
+              errors.append("\n");
+            }
+          }
+          else
+          {
+            prev = sf;
+            lastp = sq.findPosition(col - 1);
+          }
+        }
       }
     }
+    if (errors.length() > 0)
+    {
+      Assert.fail(errors.toString());
+    }
   }
 }