1 package jalview.structure;
3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertFalse;
5 import static org.testng.Assert.assertTrue;
7 import jalview.datamodel.Mapping;
8 import jalview.datamodel.Sequence;
9 import jalview.datamodel.SequenceI;
10 import jalview.util.MapList;
12 import java.util.HashMap;
13 import java.util.List;
15 import org.testng.annotations.Test;
17 public class StructureMappingTest
19 @Test(groups = "Functional")
20 public void testGetPDBResNumRanges()
22 HashMap<Integer, int[]> map = new HashMap<>();
24 StructureMapping mapping = new StructureMapping(null, null, null, null,
27 List<int[]> ranges = mapping.getPDBResNumRanges(1, 2);
28 assertTrue(ranges.isEmpty());
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);
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);
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);
53 @Test(groups = "Functional")
54 public void testEquals()
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";
61 String mappingDetails = "these are the mapping details, honest";
62 HashMap<Integer, int[]> map = new HashMap<>();
64 Mapping seqToPdbMapping = new Mapping(seq1,
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"));
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());
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));
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));
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));
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));
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));
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));
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));