JAL-1270 JUnit to TestNG refactoring
[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 import org.testng.annotations.Test;
7 import jalview.datamodel.Sequence;
8 import jalview.datamodel.SequenceI;
9
10 public class ComparisonTest
11 {
12
13   @Test
14   public void testIsGap()
15   {
16     assertTrue(Comparison.isGap('-'));
17     assertTrue(Comparison.isGap('.'));
18     assertTrue(Comparison.isGap(' '));
19     assertFalse(Comparison.isGap('X'));
20     assertFalse(Comparison.isGap('x'));
21     assertFalse(Comparison.isGap('*'));
22     assertFalse(Comparison.isGap('G'));
23   }
24
25   /**
26    * Test for isNucleotide is that sequences in a dataset are more than 85%
27    * AGCTU. Test is not case-sensitive and ignores gaps.
28    */
29   @Test
30   public void testIsNucleotide() {
31     SequenceI seq = new Sequence("eightypercent", "agctuAGCPV");
32     assertFalse(Comparison.isNucleotide(new SequenceI[]
33     { seq }));
34     assertFalse(Comparison.isNucleotide(new SequenceI[][]
35     { new SequenceI[]
36     { seq } }));
37
38     seq = new Sequence("eightyfivepercent", "agctuAGCPVagctuAGCUV");
39     assertFalse(Comparison.isNucleotide(new SequenceI[]
40     { seq }));
41
42     seq = new Sequence("nineypercent", "agctuAGCgVagctuAGCUV");
43     assertTrue(Comparison.isNucleotide(new SequenceI[]
44     { seq }));
45
46     seq = new Sequence("eightyfivepercentgapped",
47             "--agc--tuA--GCPV-a---gct-uA-GC---UV");
48     assertFalse(Comparison.isNucleotide(new SequenceI[]
49     { seq }));
50
51     seq = new Sequence("nineypercentgapped",
52             "ag--ct-u-A---GC---g----Vag--c---tuAGCUV");
53     assertTrue(Comparison.isNucleotide(new SequenceI[]
54     { seq }));
55
56     seq = new Sequence("allgap", "---------");
57     assertFalse(Comparison.isNucleotide(new SequenceI[]
58     { seq }));
59
60     seq = new Sequence("DNA", "ACTugGCCAG");
61     SequenceI seq2 = new Sequence("Protein", "FLIMVSPTYW");
62     /*
63      * 90% DNA:
64      */
65     assertTrue(Comparison.isNucleotide(new SequenceI[]
66     { seq, seq, seq, seq, seq, seq, seq, seq, seq, seq2 }));
67     assertTrue(Comparison.isNucleotide(new SequenceI[][]
68     { new SequenceI[]
69     { seq }, new SequenceI[]
70     { seq, seq, seq }, new SequenceI[]
71     { seq, seq, seq, seq, seq, seq2 } }));
72     /*
73      * 80% DNA:
74      */
75     assertFalse(Comparison.isNucleotide(new SequenceI[]
76     { seq, seq, seq, seq, seq, seq, seq, seq, seq2, seq2 }));
77     assertFalse(Comparison.isNucleotide(new SequenceI[][]
78     { new SequenceI[]
79     { seq }, new SequenceI[]
80     { seq, seq, seq }, new SequenceI[]
81     { seq, seq, seq, seq, seq2, seq2, null } }));
82
83     seq = new Sequence("ProteinThatLooksLikeDNA", "WYATGCCTGAgtcgt");
84     // 12/14 = 85.7%
85     assertTrue(Comparison.isNucleotide(new SequenceI[]
86     { seq }));
87
88     assertFalse(Comparison.isNucleotide((SequenceI[]) null));
89     assertFalse(Comparison.isNucleotide((SequenceI[][]) null));
90   }
91
92   /**
93    * Test percentage identity calculation for two sequences.
94    */
95   @Test
96   public void testPID_matchGaps()
97   {
98     String seq1 = "ABCDEF";
99     String seq2 = "abcdef";
100     assertEquals("identical", 100f, Comparison.PID(seq1, seq2), 0.001f);
101
102     // comparison range defaults to length of first sequence
103     seq2 = "abcdefghijklmnopqrstuvwxyz";
104     assertEquals("identical", 100f, Comparison.PID(seq1, seq2), 0.001f);
105
106     seq2 = "a---bcdef";
107   }
108 }