JAL-4241 add SeqsetUtils.filterSequence function
[jalview.git] / test / jalview / analysis / SeqsetUtilsTest.java
index 71e5bfd..fbd5812 100644 (file)
@@ -27,11 +27,16 @@ import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
 import jalview.gui.JvOptionPane;
 
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+
+import java.util.BitSet;
 import java.util.Hashtable;
 import java.util.Map;
 
 import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
 /**
@@ -82,4 +87,29 @@ public class SeqsetUtilsTest
     Assert.assertSame(sqset[0].getSequenceFeatures().get(1),
             sqset2[0].getSequenceFeatures().get(1));
   }
+  
+  @DataProvider
+  public Object[][] sequenceAndMask()
+  {
+    return new Object[][] {
+      { "AAAABBBBCCCCDDDD", 0xFFFFL, "AAAABBBBCCCCDDDD" },
+      { "AAAABBBBCCCCDDDD", 0x000FL, "AAAA" },
+      { "---A---B---C---D", 0x8888L, "ABCD" },
+      { "---A---B---C---D", 0x9999L, "-A-B-C-D" },
+      { "ABCDABCDABCDABCD", 0xC5A3L, "ABBDACCD" },
+      { "", 0xFFFFL, "" },
+      { "AAAABBBBCCCCDDDD", 0x0000L, "" },
+      { "AAABBBCCC", 0xFFFF, "AAABBBCCC" },
+      { "AAAABBBB", 0xD000L, "" },
+      { "AAAABBBB", 0xAA0AL, "AA" },
+    };
+  }
+  
+  @Test(groups = {"Functional"}, dataProvider = "sequenceAndMask")
+  public void testFilterSequence(String sequence, long mask, String expected)
+  {
+    BitSet bitMask = BitSet.valueOf(new long[] {mask});
+    var result = SeqsetUtils.filterSequence(sequence.toCharArray(), bitMask);
+    assertThat(result, equalTo(expected.toCharArray()));
+  }
 }