JAL-3438 spotless for 2.11.2.0
[jalview.git] / test / jalview / controller / AlignViewControllerTest.java
index f8ea142..ca3b55c 100644 (file)
@@ -25,6 +25,9 @@ import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.analysis.Finder;
 import jalview.api.AlignViewControllerI;
+import jalview.api.FeatureColourI;
+import jalview.api.FinderI;
+import jalview.datamodel.Alignment;
 import jalview.datamodel.SearchResults;
 import jalview.datamodel.SearchResultsI;
 import jalview.datamodel.Sequence;
@@ -33,9 +36,11 @@ import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
 import jalview.gui.JvOptionPane;
+import jalview.io.DataSourceType;
 import jalview.io.FileLoader;
-import jalview.io.FormatAdapter;
+import jalview.schemes.FeatureColour;
 
+import java.awt.Color;
 import java.util.Arrays;
 import java.util.BitSet;
 
@@ -63,17 +68,17 @@ public class AlignViewControllerTest
     /*
      * features start/end are base 1
      */
-    seq1.addSequenceFeature(new SequenceFeature("Metal", "desc", 2, 4, 0f,
-            null));
-    seq1.addSequenceFeature(new SequenceFeature("Helix", "desc", 1, 15, 0f,
-            null));
-    seq2.addSequenceFeature(new SequenceFeature("Metal", "desc", 4, 10, 0f,
-            null));
-    seq3.addSequenceFeature(new SequenceFeature("Metal", "desc", 11, 15,
-            0f, null));
+    seq1.addSequenceFeature(
+            new SequenceFeature("Metal", "desc", 2, 4, 0f, null));
+    seq1.addSequenceFeature(
+            new SequenceFeature("Helix", "desc", 1, 15, 0f, null));
+    seq2.addSequenceFeature(
+            new SequenceFeature("Metal", "desc", 4, 10, 10f, null));
+    seq3.addSequenceFeature(
+            new SequenceFeature("Metal", "desc", 11, 15, 10f, null));
     // disulfide bond is a 'contact feature' - only select its 'start' and 'end'
-    seq3.addSequenceFeature(new SequenceFeature("disulfide bond", "desc", 8, 12,
-            0f, null));
+    seq3.addSequenceFeature(
+            new SequenceFeature("disulfide bond", "desc", 8, 12, 0f, null));
 
     /*
      * select the first five columns --> Metal in seq1 cols 4-5
@@ -86,9 +91,19 @@ public class AlignViewControllerTest
     sg.addSequence(seq3, false);
     sg.addSequence(seq4, false);
 
+    /*
+     * set features visible on a viewport as only visible features are selected
+     */
+    AlignFrame af = new AlignFrame(
+            new Alignment(new SequenceI[]
+            { seq1, seq2, seq3, seq4 }), 100, 100);
+    af.getFeatureRenderer().findAllFeatures(true);
+
+    AlignViewController avc = new AlignViewController(af, af.getViewport(),
+            af.alignPanel);
+
     BitSet bs = new BitSet();
-    int seqCount = AlignViewController.findColumnsWithFeature("Metal", sg,
-            bs);
+    int seqCount = avc.findColumnsWithFeature("Metal", sg, bs);
     assertEquals(1, seqCount);
     assertEquals(2, bs.cardinality());
     assertTrue(bs.get(3)); // base 0
@@ -99,7 +114,7 @@ public class AlignViewControllerTest
      */
     sg.setEndRes(6);
     bs.clear();
-    seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs);
+    seqCount = avc.findColumnsWithFeature("Metal", sg, bs);
     assertEquals(2, seqCount);
     assertEquals(4, bs.cardinality());
     assertTrue(bs.get(3));
@@ -113,7 +128,7 @@ public class AlignViewControllerTest
     sg.setStartRes(13);
     sg.setEndRes(13);
     bs.clear();
-    seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs);
+    seqCount = avc.findColumnsWithFeature("Metal", sg, bs);
     assertEquals(1, seqCount);
     assertEquals(1, bs.cardinality());
     assertTrue(bs.get(13));
@@ -124,18 +139,36 @@ public class AlignViewControllerTest
     sg.setStartRes(17);
     sg.setEndRes(19);
     bs.clear();
-    seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs);
+    seqCount = avc.findColumnsWithFeature("Metal", sg, bs);
     assertEquals(0, seqCount);
     assertEquals(0, bs.cardinality());
 
     /*
+     * threshold Metal to hide where score < 5
+     * seq1 feature in columns 4-6 is hidden
+     * seq2 feature in columns 6-7 is shown
+     */
+    FeatureColourI fc = new FeatureColour(null, Color.red, Color.blue, null,
+            0f, 10f);
+    fc.setAboveThreshold(true);
+    fc.setThreshold(5f);
+    af.getFeatureRenderer().setColour("Metal", fc);
+    sg.setStartRes(0);
+    sg.setEndRes(6);
+    bs.clear();
+    seqCount = avc.findColumnsWithFeature("Metal", sg, bs);
+    assertEquals(1, seqCount);
+    assertEquals(2, bs.cardinality());
+    assertTrue(bs.get(5));
+    assertTrue(bs.get(6));
+
+    /*
      * columns 11-13 should not match disulfide bond at 8/12
      */
     sg.setStartRes(10);
     sg.setEndRes(12);
     bs.clear();
-    seqCount = AlignViewController.findColumnsWithFeature("disulfide bond",
-            sg, bs);
+    seqCount = avc.findColumnsWithFeature("disulfide bond", sg, bs);
     assertEquals(0, seqCount);
     assertEquals(0, bs.cardinality());
 
@@ -145,8 +178,7 @@ public class AlignViewControllerTest
     sg.setStartRes(5);
     sg.setEndRes(17);
     bs.clear();
-    seqCount = AlignViewController.findColumnsWithFeature("disulfide bond",
-            sg, bs);
+    seqCount = avc.findColumnsWithFeature("disulfide bond", sg, bs);
     assertEquals(1, seqCount);
     assertEquals(2, bs.cardinality());
     assertTrue(bs.get(8));
@@ -158,7 +190,7 @@ public class AlignViewControllerTest
     sg.setStartRes(0);
     sg.setEndRes(19);
     bs.clear();
-    seqCount = AlignViewController.findColumnsWithFeature("Pfam", sg, bs);
+    seqCount = avc.findColumnsWithFeature("Pfam", sg, bs);
     assertEquals(0, seqCount);
     assertEquals(0, bs.cardinality());
   }
@@ -173,7 +205,8 @@ public class AlignViewControllerTest
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
             "seq1 aMMMaaaaaaaaaaaaaaaa\n" + "seq2 aaaMMMMMMMaaaaaaaaaa\n"
                     + "seq3 aaaaaaaaaaMMMMMaaaaa\n"
-                    + "seq4 aaaaaaaaaaaaaaaaaaaa\n", FormatAdapter.PASTE);
+                    + "seq4 aaaaaaaaaaaaaaaaaaaa\n",
+            DataSourceType.PASTE);
 
     SearchResultsI sr = new SearchResults();
     SequenceI[] sqs = af.getViewport().getAlignment().getSequencesArray();
@@ -192,10 +225,8 @@ public class AlignViewControllerTest
     /*
      *  test Match/Find works first
      */
-    Finder f = new Finder(af.getViewport().getAlignment(), null);
-    f.setFindAll(true);
-    f.setCaseSensitive(true);
-    f.find("M+");
+    FinderI f = new Finder(af.getViewport());
+    f.findAll("M+", true, false, false);
     assertEquals(
             "Finder found different set of results to manually created SearchResults",
             sr, f.getSearchResults());
@@ -207,8 +238,9 @@ public class AlignViewControllerTest
     AlignViewControllerI avc = af.avc;
 
     avc.markHighlightedColumns(false, false, false);
-    assertTrue("Didn't select highlighted columns", Arrays.deepEquals(af
-            .getViewport().getColumnSelection().getSelectedRanges()
-            .toArray(), new int[][] { { 1, 14 } }));
+    assertTrue("Didn't select highlighted columns",
+            Arrays.deepEquals(af.getViewport().getColumnSelection()
+                    .getSelectedRanges().toArray(), new int[][]
+                    { { 1, 14 } }));
   }
 }