JAL-2839 addResult ignores duplicates
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Tue, 13 Mar 2018 14:30:03 +0000 (14:30 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Tue, 13 Mar 2018 14:30:03 +0000 (14:30 +0000)
src/jalview/datamodel/SearchResults.java
src/jalview/datamodel/SearchResultsI.java
test/jalview/datamodel/SearchResultsTest.java

index 63a87a8..e87b5f0 100755 (executable)
@@ -161,20 +161,17 @@ public class SearchResults implements SearchResultsI
     }
   }
 
-  /* (non-Javadoc)
-   * @see jalview.datamodel.SearchResultsI#addResult(jalview.datamodel.SequenceI, int, int)
-   */
   @Override
   public SearchResultMatchI addResult(SequenceI seq, int start, int end)
   {
     Match m = new Match(seq, start, end);
-    matches.add(m);
+    if (!matches.contains(m))
+    {
+      matches.add(m);
+    }
     return m;
   }
 
-  /* (non-Javadoc)
-   * @see jalview.datamodel.SearchResultsI#involvesSequence(jalview.datamodel.SequenceI)
-   */
   @Override
   public boolean involvesSequence(SequenceI sequence)
   {
@@ -190,9 +187,6 @@ public class SearchResults implements SearchResultsI
     return false;
   }
 
-  /* (non-Javadoc)
-   * @see jalview.datamodel.SearchResultsI#getResults(jalview.datamodel.SequenceI, int, int)
-   */
   @Override
   public int[] getResults(SequenceI sequence, int start, int end)
   {
@@ -284,27 +278,18 @@ public class SearchResults implements SearchResultsI
     return count;
   }
 
-  /* (non-Javadoc)
-   * @see jalview.datamodel.SearchResultsI#getSize()
-   */
   @Override
   public int getSize()
   {
     return matches.size();
   }
 
-  /* (non-Javadoc)
-   * @see jalview.datamodel.SearchResultsI#isEmpty()
-   */
   @Override
   public boolean isEmpty()
   {
     return matches.isEmpty();
   }
 
-  /* (non-Javadoc)
-   * @see jalview.datamodel.SearchResultsI#getResults()
-   */
   @Override
   public List<SearchResultMatchI> getResults()
   {
index c3dc0e8..3c3ad4e 100644 (file)
@@ -31,14 +31,11 @@ public interface SearchResultsI
 {
 
   /**
-   * Adds one region to the results
+   * Adds one region to the results (unless already added, to avoid duplicates)
    * 
    * @param seq
-   *          Sequence
    * @param start
-   *          int
    * @param end
-   *          int
    * @return
    */
   SearchResultMatchI addResult(SequenceI seq, int start, int end);
index 1168af2..349b5d1 100644 (file)
@@ -287,4 +287,20 @@ public class SearchResultsTest
             "Didn't set expected number of columns in total for two successive marks",
             2, tbs.cardinality());
   }
+
+  /**
+   * Test to verify adding doesn't create duplicate results
+   */
+  @Test(groups = { "Functional" })
+  public void testAddResult()
+  {
+    SequenceI seq1 = new Sequence("", "abcdefghijklm");
+    SearchResultsI sr = new SearchResults();
+    sr.addResult(seq1, 3, 5);
+    assertEquals(1, sr.getSize());
+    sr.addResult(seq1, 3, 5);
+    assertEquals(1, sr.getSize());
+    sr.addResult(seq1, 3, 6);
+    assertEquals(2, sr.getSize());
+  }
 }