2ae4afc6670427ba61f76001a0e4f98a46ec4d19
[jalview.git] / test / jalview / analysis / CrossRefTest.java
1 package jalview.analysis;
2
3 import static org.junit.Assert.assertFalse;
4 import static org.junit.Assert.assertTrue;
5 import jalview.datamodel.DBRefEntry;
6 import jalview.datamodel.Sequence;
7 import jalview.datamodel.SequenceI;
8
9 import org.junit.Test;
10
11 public class CrossRefTest
12 {
13
14   /**
15    * Tests for the method that checks if one sequence cross-references another
16    */
17   @Test
18   public void testHasCrossRef()
19   {
20     assertFalse(CrossRef.hasCrossRef(null, null));
21     SequenceI seq1 = new Sequence("EMBL|A12345", "ABCDEF");
22     assertFalse(CrossRef.hasCrossRef(seq1, null));
23     assertFalse(CrossRef.hasCrossRef(null, seq1));
24     SequenceI seq2 = new Sequence("UNIPROT|V20192", "ABCDEF");
25     assertFalse(CrossRef.hasCrossRef(seq1, seq2));
26
27     // different ref
28     seq1.addDBRef(new DBRefEntry("UNIPROT", "1", "v20193"));
29     assertFalse(CrossRef.hasCrossRef(seq1, seq2));
30
31     // case-insensitive; version number is ignored
32     seq1.addDBRef(new DBRefEntry("UNIPROT", "1", "v20192"));
33     assertTrue(CrossRef.hasCrossRef(seq1, seq2));
34
35     // right case!
36     seq1.addDBRef(new DBRefEntry("UNIPROT", "1", "V20192"));
37     assertTrue(CrossRef.hasCrossRef(seq1, seq2));
38     // test is one-way only
39     assertFalse(CrossRef.hasCrossRef(seq2, seq1));
40   }
41
42   /**
43    * Tests for the method that checks if either sequence cross-references the
44    * other
45    */
46   @Test
47   public void testHaveCrossRef()
48   {
49     assertFalse(CrossRef.hasCrossRef(null, null));
50     SequenceI seq1 = new Sequence("EMBL|A12345", "ABCDEF");
51     assertFalse(CrossRef.haveCrossRef(seq1, null));
52     assertFalse(CrossRef.haveCrossRef(null, seq1));
53     SequenceI seq2 = new Sequence("UNIPROT|V20192", "ABCDEF");
54     assertFalse(CrossRef.haveCrossRef(seq1, seq2));
55
56     seq1.addDBRef(new DBRefEntry("UNIPROT", "1", "V20192"));
57     assertTrue(CrossRef.haveCrossRef(seq1, seq2));
58     // next is true for haveCrossRef, false for hasCrossRef
59     assertTrue(CrossRef.haveCrossRef(seq2, seq1));
60
61     // now the other way round
62     seq1.setDBRef(null);
63     seq2.addDBRef(new DBRefEntry("EMBL", "1", "A12345"));
64     assertTrue(CrossRef.haveCrossRef(seq1, seq2));
65     assertTrue(CrossRef.haveCrossRef(seq2, seq1));
66
67     // now both ways
68     seq1.addDBRef(new DBRefEntry("UNIPROT", "1", "V20192"));
69     assertTrue(CrossRef.haveCrossRef(seq1, seq2));
70     assertTrue(CrossRef.haveCrossRef(seq2, seq1));
71   }
72 }