JAL-3518 more pull up / test coverage of structure command generation
[jalview.git] / test / jalview / ext / jmol / JmolCommandsTest.java
index c3ece9d..d1a9df6 100644 (file)
@@ -37,7 +37,10 @@ import jalview.structure.StructureCommandsI;
 import jalview.structure.StructureMapping;
 import jalview.structure.StructureSelectionManager;
 
+import java.awt.Color;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
 
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -53,25 +56,6 @@ public class JmolCommandsTest
   }
 
   @Test(groups = { "Functional" })
-  public void testGetColourBySequenceCommand_noFeatures()
-  {
-    SequenceI seq1 = new Sequence("seq1", "MHRSQTRALK");
-    SequenceI seq2 = new Sequence("seq2", "MRLEITQSGD");
-    AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 });
-    AlignFrame af = new AlignFrame(al, 800, 500);
-    SequenceRenderer sr = new SequenceRenderer(af.getViewport());
-    SequenceI[][] seqs = new SequenceI[][] { { seq1 }, { seq2 } };
-    String[] files = new String[] { "seq1.pdb", "seq2.pdb" };
-    StructureSelectionManager ssm = new StructureSelectionManager();
-
-    // need some mappings!
-
-    String[] commands = new JmolCommands().colourBySequence(ssm, files,
-            seqs, sr, af.alignPanel);
-    assertEquals(commands.length, 0);
-  }
-
-  @Test(groups = { "Functional" })
   public void testGetColourBySequenceCommands_hiddenColumns()
   {
     /*
@@ -179,6 +163,30 @@ public class JmolCommandsTest
   }
 
   @Test(groups = { "Functional" })
+  public void testColourBySequence()
+  {
+    Map<Object, AtomSpecModel> map = new LinkedHashMap<>();
+    JmolCommands.addAtomSpecRange(map, Color.blue, 1, 2, 5, "A");
+    JmolCommands.addAtomSpecRange(map, Color.blue, 1, 7, 7, "B");
+    JmolCommands.addAtomSpecRange(map, Color.blue, 1, 9, 23, "A");
+    JmolCommands.addAtomSpecRange(map, Color.blue, 2, 1, 1, "A");
+    JmolCommands.addAtomSpecRange(map, Color.blue, 2, 4, 7, "B");
+    JmolCommands.addAtomSpecRange(map, Color.yellow, 2, 8, 8, "A");
+    JmolCommands.addAtomSpecRange(map, Color.yellow, 2, 3, 5, "A");
+    JmolCommands.addAtomSpecRange(map, Color.red, 1, 3, 5, "A");
+    JmolCommands.addAtomSpecRange(map, Color.red, 1, 6, 9, "A");
+
+    // Colours should appear in the Jmol command in the order in which
+    // they were added; within colour, by model, by chain, ranges in start order
+    String[] commands = new JmolCommands().colourBySequence(map);
+    assertEquals(commands.length, 1);
+    String expected = "select 2-5:A/1.1|9-23:A/1.1|7:B/1.1|1:A/2.1|4-7:B/2.1;color[0,0,255]; "
+            + "select 3-5:A/2.1|8:A/2.1;color[255,255,0]; "
+            + "select 3-9:A/1.1;color[255,0,0]";
+    assertEquals(commands[0], expected);
+  }
+
+  @Test(groups = { "Functional" })
   public void testSuperposeStructures()
   {
     StructureCommandsI testee = new JmolCommands();
@@ -198,4 +206,11 @@ public class JmolCommandsTest
             toAlignSpec, refSpec, toAlignSpec, refSpec);
     assertEquals(command, expected);
   }
+
+  @Test(groups = "Functional")
+  public void testGetModelStartNo()
+  {
+    StructureCommandsI testee = new JmolCommands();
+    assertEquals(testee.getModelStartNo(), 1);
+  }
 }