3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertFalse;
5 import static org.testng.AssertJUnit.assertTrue;
7 import jalview.datamodel.Sequence;
8 import jalview.datamodel.SequenceI;
10 import org.testng.annotations.Test;
12 public class ComparisonTest
15 @Test(groups = { "Functional" })
16 public void testIsGap()
18 assertTrue(Comparison.isGap('-'));
19 assertTrue(Comparison.isGap('.'));
20 assertTrue(Comparison.isGap(' '));
21 assertFalse(Comparison.isGap('X'));
22 assertFalse(Comparison.isGap('x'));
23 assertFalse(Comparison.isGap('*'));
24 assertFalse(Comparison.isGap('G'));
28 * Test for isNucleotide is that sequences in a dataset are more than 85%
29 * AGCTU. Test is not case-sensitive and ignores gaps.
31 @Test(groups = { "Functional" })
32 public void testIsNucleotide()
34 SequenceI seq = new Sequence("eightypercent", "agctuAGCPV");
35 assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
36 assertFalse(Comparison.isNucleotide(new SequenceI[][] { new SequenceI[]
39 seq = new Sequence("eightyfivepercent", "agctuAGCPVagctuAGCUV");
40 assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
42 seq = new Sequence("nineypercent", "agctuAGCgVagctuAGCUV");
43 assertTrue(Comparison.isNucleotide(new SequenceI[] { seq }));
45 seq = new Sequence("eightyfivepercentgapped",
46 "--agc--tuA--GCPV-a---gct-uA-GC---UV");
47 assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
49 seq = new Sequence("nineypercentgapped",
50 "ag--ct-u-A---GC---g----Vag--c---tuAGCUV");
51 assertTrue(Comparison.isNucleotide(new SequenceI[] { seq }));
53 seq = new Sequence("allgap", "---------");
54 assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
56 seq = new Sequence("DNA", "ACTugGCCAG");
57 SequenceI seq2 = new Sequence("Protein", "FLIMVSPTYW");
61 assertTrue(Comparison.isNucleotide(new SequenceI[] { seq, seq, seq,
62 seq, seq, seq, seq, seq, seq, seq2 }));
63 assertTrue(Comparison.isNucleotide(new SequenceI[][] {
64 new SequenceI[] { seq }, new SequenceI[] { seq, seq, seq },
65 new SequenceI[] { seq, seq, seq, seq, seq, seq2 } }));
69 assertFalse(Comparison.isNucleotide(new SequenceI[] { seq, seq, seq,
70 seq, seq, seq, seq, seq, seq2, seq2 }));
71 assertFalse(Comparison.isNucleotide(new SequenceI[][] { new SequenceI[]
72 { seq }, new SequenceI[] { seq, seq, seq },
73 new SequenceI[] { seq, seq, seq, seq, seq2, seq2, null } }));
75 seq = new Sequence("ProteinThatLooksLikeDNA", "WYATGCCTGAgtcgt");
77 assertTrue(Comparison.isNucleotide(new SequenceI[] { seq }));
79 assertFalse(Comparison.isNucleotide((SequenceI[]) null));
80 assertFalse(Comparison.isNucleotide((SequenceI[][]) null));
84 * Test percentage identity calculation for two sequences.
86 @Test(groups = { "Functional" })
87 public void testPID_matchGaps()
89 String seq1 = "ABCDEF";
90 String seq2 = "abcdef";
91 assertEquals("identical", 100f, Comparison.PID(seq1, seq2), 0.001f);
93 // comparison range defaults to length of first sequence
94 seq2 = "abcdefghijklmnopqrstuvwxyz";
95 assertEquals("identical", 100f, Comparison.PID(seq1, seq2), 0.001f);