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;
/**
JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
}
-
/**
* test for JAL-2046 bug - duplication of sequence features on reconstructed
* alignment
@Test(groups = { "Functional" })
public void testSeqFeatureAddition()
{
- SequenceI[] sqset = new SequenceI[] {
- new Sequence("Aseq1", "AREALSEQ"),
+ SequenceI[] sqset = new SequenceI[] { new Sequence("Aseq1", "AREALSEQ"),
new Sequence("Aseq2", "AREALSEQ") };
AlignmentI al = new Alignment(sqset);
SequenceFeature sf1 = new SequenceFeature("f1", "foo", 2, 3, "far");
SequenceFeature sf2 = new SequenceFeature("f2", "foo", 2, 3, "far");
ds.getSequenceAt(0).addSequenceFeature(sf1);
- Hashtable unq = SeqsetUtils.uniquify(sqset, true);
+ Map<String, SeqsetUtils.SequenceInfo> unq = SeqsetUtils.uniquify(sqset, true);
SequenceI[] sqset2 = new SequenceI[] {
new Sequence(sqset[0].getName(), sqset[0].getSequenceAsString()),
new Sequence(sqset[1].getName(), sqset[1].getSequenceAsString()) };
// are on the shared dataset sequence
Assert.assertEquals(sqset[0].getSequenceFeatures().size(), 2);
Assert.assertEquals(sqset2[0].getSequenceFeatures().size(), 2);
- Assert.assertSame(sqset[0].getSequenceFeatures().get(0), sqset2[0]
- .getSequenceFeatures().get(0));
- Assert.assertSame(sqset[0].getSequenceFeatures().get(1), sqset2[0]
- .getSequenceFeatures().get(1));
+ Assert.assertSame(sqset[0].getSequenceFeatures().get(0),
+ sqset2[0].getSequenceFeatures().get(0));
+ 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()));
}
}