JAL-1645 source formatting and organise imports
[jalview.git] / test / jalview / util / ComparisonTest.java
1 package jalview.util;
2
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertFalse;
5 import static org.testng.AssertJUnit.assertTrue;
6
7 import jalview.datamodel.Sequence;
8 import jalview.datamodel.SequenceI;
9
10 import org.testng.annotations.Test;
11
12 public class ComparisonTest
13 {
14
15   @Test(groups = { "Functional" })
16   public void testIsGap()
17   {
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'));
25   }
26
27   /**
28    * Test for isNucleotide is that sequences in a dataset are more than 85%
29    * AGCTU. Test is not case-sensitive and ignores gaps.
30    */
31   @Test(groups = { "Functional" })
32   public void testIsNucleotide()
33   {
34     SequenceI seq = new Sequence("eightypercent", "agctuAGCPV");
35     assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
36     assertFalse(Comparison.isNucleotide(new SequenceI[][] { new SequenceI[]
37     { seq } }));
38
39     seq = new Sequence("eightyfivepercent", "agctuAGCPVagctuAGCUV");
40     assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
41
42     seq = new Sequence("nineypercent", "agctuAGCgVagctuAGCUV");
43     assertTrue(Comparison.isNucleotide(new SequenceI[] { seq }));
44
45     seq = new Sequence("eightyfivepercentgapped",
46             "--agc--tuA--GCPV-a---gct-uA-GC---UV");
47     assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
48
49     seq = new Sequence("nineypercentgapped",
50             "ag--ct-u-A---GC---g----Vag--c---tuAGCUV");
51     assertTrue(Comparison.isNucleotide(new SequenceI[] { seq }));
52
53     seq = new Sequence("allgap", "---------");
54     assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
55
56     seq = new Sequence("DNA", "ACTugGCCAG");
57     SequenceI seq2 = new Sequence("Protein", "FLIMVSPTYW");
58     /*
59      * 90% DNA:
60      */
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 } }));
66     /*
67      * 80% DNA:
68      */
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 } }));
74
75     seq = new Sequence("ProteinThatLooksLikeDNA", "WYATGCCTGAgtcgt");
76     // 12/14 = 85.7%
77     assertTrue(Comparison.isNucleotide(new SequenceI[] { seq }));
78
79     assertFalse(Comparison.isNucleotide((SequenceI[]) null));
80     assertFalse(Comparison.isNucleotide((SequenceI[][]) null));
81   }
82
83   /**
84    * Test percentage identity calculation for two sequences.
85    */
86   @Test(groups = { "Functional" })
87   public void testPID_matchGaps()
88   {
89     String seq1 = "ABCDEF";
90     String seq2 = "abcdef";
91     assertEquals("identical", 100f, Comparison.PID(seq1, seq2), 0.001f);
92
93     // comparison range defaults to length of first sequence
94     seq2 = "abcdefghijklmnopqrstuvwxyz";
95     assertEquals("identical", 100f, Comparison.PID(seq1, seq2), 0.001f);
96
97     seq2 = "a---bcdef";
98   }
99 }