JAL-2976 fixed bad equivalence check and implemented belt-and-braces check for quaqua...
[jalview.git] / test / jalview / structure / StructureMappingTest.java
1 package jalview.structure;
2
3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertFalse;
5 import static org.testng.Assert.assertTrue;
6
7 import jalview.datamodel.Mapping;
8 import jalview.datamodel.Sequence;
9 import jalview.datamodel.SequenceI;
10 import jalview.util.MapList;
11
12 import java.util.HashMap;
13 import java.util.List;
14
15 import org.testng.annotations.Test;
16
17 public class StructureMappingTest
18 {
19   @Test(groups = "Functional")
20   public void testGetPDBResNumRanges()
21   {
22     HashMap<Integer, int[]> map = new HashMap<>();
23
24     StructureMapping mapping = new StructureMapping(null, null, null, null,
25             map, null);
26
27     List<int[]> ranges = mapping.getPDBResNumRanges(1, 2);
28     assertTrue(ranges.isEmpty());
29
30     map.put(1, new int[] { 12, 20 }); // 1 maps to 12
31     ranges = mapping.getPDBResNumRanges(2, 3);
32     assertTrue(ranges.isEmpty());
33     ranges = mapping.getPDBResNumRanges(1, 2);
34     assertEquals(ranges.size(), 1);
35     assertEquals(ranges.get(0)[0], 12);
36     assertEquals(ranges.get(0)[1], 12);
37
38     map.put(2, new int[] { 13, 20 }); // 2 maps to 13
39     ranges = mapping.getPDBResNumRanges(1, 2);
40     assertEquals(ranges.size(), 1);
41     assertEquals(ranges.get(0)[0], 12);
42     assertEquals(ranges.get(0)[1], 13);
43
44     map.put(3, new int[] { 15, 20 }); // 3 maps to 15 - break
45     ranges = mapping.getPDBResNumRanges(1, 5);
46     assertEquals(ranges.size(), 2);
47     assertEquals(ranges.get(0)[0], 12);
48     assertEquals(ranges.get(0)[1], 13);
49     assertEquals(ranges.get(1)[0], 15);
50     assertEquals(ranges.get(1)[1], 15);
51   }
52
53   @Test(groups = "Functional")
54   public void testEquals()
55   {
56     SequenceI seq1 = new Sequence("seq1", "ABCDE");
57     SequenceI seq2 = new Sequence("seq1", "ABCDE");
58     String pdbFile = "a/b/file1.pdb";
59     String pdbId = "1a70";
60     String chain = "A";
61     String mappingDetails = "these are the mapping details, honest";
62     HashMap<Integer, int[]> map = new HashMap<>();
63
64     Mapping seqToPdbMapping = new Mapping(seq1,
65             new MapList(new int[]
66             { 1, 5 }, new int[] { 2, 6 }, 1, 1));
67     StructureMapping sm1 = new StructureMapping(seq1, pdbFile, pdbId, chain,
68             map, mappingDetails, seqToPdbMapping);
69     assertFalse(sm1.equals(null));
70     assertFalse(sm1.equals("x"));
71
72     StructureMapping sm2 = new StructureMapping(seq1, pdbFile, pdbId, chain,
73             map, mappingDetails, seqToPdbMapping);
74     assertTrue(sm1.equals(sm2));
75     assertTrue(sm2.equals(sm1));
76     assertEquals(sm1.hashCode(), sm2.hashCode());
77
78     // with different sequence
79     sm2 = new StructureMapping(seq2, pdbFile, pdbId, chain, map,
80             mappingDetails, seqToPdbMapping);
81     assertFalse(sm1.equals(sm2));
82     assertFalse(sm2.equals(sm1));
83
84     // with different file
85     sm2 = new StructureMapping(seq1, "a/b/file2.pdb", pdbId, chain, map,
86             mappingDetails, seqToPdbMapping);
87     assertFalse(sm1.equals(sm2));
88     assertFalse(sm2.equals(sm1));
89
90     // with different pdbid (case sensitive)
91     sm2 = new StructureMapping(seq1, pdbFile, "1A70", chain, map,
92             mappingDetails, seqToPdbMapping);
93     assertFalse(sm1.equals(sm2));
94     assertFalse(sm2.equals(sm1));
95
96     // with different chain
97     sm2 = new StructureMapping(seq1, pdbFile, pdbId, "B", map,
98             mappingDetails, seqToPdbMapping);
99     assertFalse(sm1.equals(sm2));
100     assertFalse(sm2.equals(sm1));
101
102     // map is ignore for this test
103     sm2 = new StructureMapping(seq1, pdbFile, pdbId, chain, null,
104             mappingDetails, seqToPdbMapping);
105     assertTrue(sm1.equals(sm2));
106     assertTrue(sm2.equals(sm1));
107
108     // with different mapping details
109     sm2 = new StructureMapping(seq1, pdbFile, pdbId, chain, map,
110             "different details!", seqToPdbMapping);
111     assertFalse(sm1.equals(sm2));
112     assertFalse(sm2.equals(sm1));
113
114     // with different seq to pdb mapping
115     Mapping map2 = new Mapping(seq1,
116             new MapList(new int[]
117             { 1, 5 }, new int[] { 3, 7 }, 1, 1));
118     sm2 = new StructureMapping(seq1, pdbFile, pdbId, chain, map,
119             mappingDetails, map2);
120     assertFalse(sm1.equals(sm2));
121     assertFalse(sm2.equals(sm1));
122   }
123 }