Merge branch 'develop' into feature/JAL-3390hideUnmappedStructure
[jalview.git] / test / jalview / structures / models / AAStructureBindingModelTest.java
index 5e0e52f..aea12b4 100644 (file)
@@ -23,7 +23,19 @@ package jalview.structures.models;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertTrue;
+
+import java.awt.Color;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.BitSet;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 import jalview.api.AlignmentViewPanel;
 import jalview.api.SequenceRenderer;
@@ -40,25 +52,13 @@ import jalview.gui.JvOptionPane;
 import jalview.gui.StructureViewer.ViewerType;
 import jalview.io.DataSourceType;
 import jalview.io.FileFormats;
+import jalview.io.FileLoader;
 import jalview.schemes.JalviewColourScheme;
 import jalview.structure.AtomSpec;
 import jalview.structure.AtomSpecModel;
 import jalview.structure.StructureCommandI;
 import jalview.structure.StructureMapping;
 import jalview.structure.StructureSelectionManager;
-
-import java.awt.Color;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.BitSet;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
 import junit.extensions.PA;
 
 /**
@@ -135,61 +135,13 @@ public class AAStructureBindingModelTest
     // ideally, we would match on the actual data for the 'File' handle for
     // pasted files,
     // see JAL-623 - pasting is still not correctly handled...
-    PDBEntry importedPDB = new PDBEntry("3A6S", "", Type.PDB,
-            "Paste");
-    AAStructureBindingModel binder = new AAStructureBindingModel(
-            new StructureSelectionManager(), new PDBEntry[]
+    PDBEntry importedPDB = new PDBEntry("3A6S", "", Type.PDB, "Paste");
+    AAStructureBindingModel binder = newBindingModel(new PDBEntry[]
             { importedPDB },
             new SequenceI[][]
-            { importedAl.getSequencesArray() }, null)
-    {
-      
-      @Override
-      public void updateColours(Object source)
-      {
-      }
-      
-      @Override
-      public void releaseReferences(Object svl)
-      {
-      }
-      
-      @Override
-      public String[] getStructureFiles()
-      {
-        return null;
-      }
-      
-      @Override
-      public void highlightAtoms(List<AtomSpec> atoms)
-      {
-      }
-      
-      @Override
-      public SequenceRenderer getSequenceRenderer(AlignmentViewPanel alignment)
-      {
-        return null;
-      }
+            { importedAl.getSequencesArray() },
+            new StructureSelectionManager(), null);
 
-      @Override
-      protected List<String> executeCommand(StructureCommandI command,
-              boolean getReply)
-      {
-        return null;
-      }
-
-      @Override
-      protected String getModelIdForFile(String chainId)
-      {
-        return "";
-      }
-
-      @Override
-      protected ViewerType getViewerType()
-      {
-        return null;
-      }
-    };
     String[][] chains = binder.getChains();
     assertFalse(chains == null || chains[0] == null,
             "No chains discovered by binding");
@@ -234,7 +186,7 @@ public class AAStructureBindingModelTest
     ssm.setMapping(new SequenceI[] { seq3 }, null, PDB_3,
             DataSourceType.PASTE, null);
 
-    testee = newBindingModel(pdbFiles, seqs, ssm);
+    testee = newBindingModel(pdbFiles, seqs, ssm, null);
   }
 
   /**
@@ -243,10 +195,11 @@ public class AAStructureBindingModelTest
    * @param pdbFiles
    * @param seqs
    * @param ssm
+   * @param alignPanel 
    */
   protected AAStructureBindingModel newBindingModel(PDBEntry[] pdbFiles,
           SequenceI[][] seqs,
-          StructureSelectionManager ssm)
+          StructureSelectionManager ssm, AlignmentViewPanel avp)
   {
     AAStructureBindingModel model = new AAStructureBindingModel(ssm,
             pdbFiles, seqs, null)
@@ -254,7 +207,12 @@ public class AAStructureBindingModelTest
       @Override
       public String[] getStructureFiles()
       {
-        return new String[] { "INLINE1YCS", "INLINE3A6S", "INLINE1OOT" };
+        String[] files = new String[getPdbCount()];
+        for (int i = 0; i < this.getPdbCount(); i++)
+        {
+          files[i] = getPdbEntry(i).getFile();
+        }
+        return files;
       }
 
       @Override
@@ -273,10 +231,17 @@ public class AAStructureBindingModelTest
       }
 
       @Override
+      public void setBackgroundColour(Color col)
+      {
+      }
+
+      @Override
       public SequenceRenderer getSequenceRenderer(
-              AlignmentViewPanel alignment)
+              AlignmentViewPanel avp)
       {
-        return null;
+        return avp == null ? null
+                : new jalview.gui.SequenceRenderer(
+                        avp.getAlignViewport());
       }
 
       @Override
@@ -286,9 +251,20 @@ public class AAStructureBindingModelTest
         return null;
       }
 
+      /*
+       * for this test, let structure model ids be 0, 1, ...
+       * corresponding to first, second etc pdbfile
+       */
       @Override
-      protected String getModelIdForFile(String chainId)
+      protected String getModelIdForFile(String pdbfile)
       {
+        for (int i = 0; i < this.getPdbCount(); i++)
+        {
+          if (pdbfile.equals(this.getPdbEntry(i).getFile()))
+          {
+            return String.valueOf(i);
+          }
+        }
         return "";
       }
 
@@ -399,10 +375,10 @@ public class AAStructureBindingModelTest
      * load these sequences, coloured by Strand propensity,
      * with columns 2-4 hidden
      */
-    SequenceI seq1 = new Sequence("seq1", "MHRSQSSSGG");
-    SequenceI seq2 = new Sequence("seq2", "MVRSNGGSSS");
-    AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 });
-    AlignFrame af = new AlignFrame(al, 800, 500);
+    String fasta = ">seq1\nMHRSQSSSGG\n>seq2\nMVRSNGGSSS";
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(fasta,
+            DataSourceType.PASTE);
+    AlignmentI al = af.getViewport().getAlignment();
     af.changeColour_actionPerformed(JalviewColourScheme.Strand.toString());
     ColumnSelection cs = new ColumnSelection();
     cs.addElement(2);
@@ -410,13 +386,12 @@ public class AAStructureBindingModelTest
     cs.addElement(4);
     af.getViewport().setColumnSelection(cs);
     af.hideSelColumns_actionPerformed(null);
-    SequenceRenderer sr = new jalview.gui.SequenceRenderer(
-            af.getViewport());
+    SequenceI seq1 = al.getSequenceAt(0);
+    SequenceI seq2 = al.getSequenceAt(1);
     SequenceI[][] seqs = new SequenceI[][] { { seq1 }, { seq2 } };
-    String[] files = new String[] { "seq1.pdb", "seq2.pdb" };
     PDBEntry[] pdbFiles = new PDBEntry[2];
-    pdbFiles[0] = new PDBEntry("PDB1", "A", Type.PDB, "INLINEPDB1");
-    pdbFiles[1] = new PDBEntry("PDB2", "B", Type.PDB, "INLINEPDB2");
+    pdbFiles[0] = new PDBEntry("PDB1", "A", Type.PDB, "seq1.pdb");
+    pdbFiles[1] = new PDBEntry("PDB2", "B", Type.PDB, "seq2.pdb");
     StructureSelectionManager ssm = new StructureSelectionManager();
   
     /*
@@ -434,14 +409,15 @@ public class AAStructureBindingModelTest
             "B", map, null);
     ssm.addStructureMapping(sm2);
 
-    AAStructureBindingModel binding = newBindingModel(pdbFiles, seqs, ssm);
+    AAStructureBindingModel binding = newBindingModel(pdbFiles, seqs, ssm,
+            af.alignPanel);
 
     /*
      * method under test builds a map of structures residues by colour
      * verify the map holds what it should
      */
-    Map<Object, AtomSpecModel> colours = binding.buildColoursMap(ssm, files,
-            seqs, sr, af.alignPanel);
+    Map<Object, AtomSpecModel> colours = binding.buildColoursMap(ssm, seqs,
+            af.alignPanel);
     ChimeraCommands helper = new ChimeraCommands();
     
     /*