be2497a0a0cf2788f435d84707ca0f626266a81a
[jalview.git] / test / jalview / analysis / SequenceIdMatcherTest.java
1 package jalview.analysis;
2
3 import jalview.datamodel.Sequence;
4 import jalview.datamodel.SequenceI;
5
6 import java.util.Arrays;
7
8 import org.testng.Assert;
9 import org.testng.annotations.Test;
10
11 public class SequenceIdMatcherTest
12 {
13   private static SequenceI[] someseqs = {
14       new Sequence("A|ComplexId", "dummy"),
15       new Sequence("A|ComplexId|confused", "dummy"),
16       new Sequence("A|ComplexId|bits_of", "dummy"),
17       new Sequence("ComplexId", "dummy"),
18       new Sequence("A|ComplexIdNot", "dummy"),
19       new Sequence("A ComplexId Id", "dummy"),
20       new Sequence("complexid", "dummy") };
21
22   private static SequenceIdMatcher getMatcher()
23   {
24     return new SequenceIdMatcher(Arrays.asList(someseqs));
25   }
26
27   @Test(groups = { "Functional" })
28   public void findSelfAndOthers()
29   {
30     for (SequenceI sq : SequenceIdMatcherTest.someseqs)
31     {
32       SequenceI[] idmatches = getMatcher().findAllIdMatches(sq.getName());
33       Assert.assertTrue(
34               idmatches.length >= 1,
35               "Couldn't recover at least one sequence for string '"
36                       + sq.getName() + "'");
37       SequenceI[] seqmatches = getMatcher().findIdMatch(
38               new SequenceI[] { sq });
39       Assert.assertTrue(seqmatches.length >= 1,
40               "Couldn't recover at least one sequence for sequence object called '"
41                       + sq.getName() + "'");
42       Assert.assertTrue(seqmatches.length == idmatches.length,
43               "Different matches found for '" + sq.getName() + "'");
44       for (SequenceI sid : idmatches)
45       {
46         boolean found = false;
47         for (SequenceI sobj : seqmatches)
48         {
49           if (sid == sobj)
50           {
51             found = true;
52           }
53         }
54         Assert.assertTrue(
55                 found,
56                 "Different sequences recovered for Id "
57                         + "and SequenceI (Couldn't find match for '"
58                         + sid.getName() + "')");
59
60       }
61     }
62   }
63
64   @Test(groups = { "Functional" })
65   public void testExactMatch()
66   {
67     SequenceI[] matches = getMatcher().findAllIdMatches("A|ComplexId");
68     Assert.assertTrue(matches.length == 1,
69             "Exact match failed for 'A|ComplexId'");
70     matches = getMatcher().findAllIdMatches("A|ComplexId|confused");
71     Assert.assertTrue(matches.length == 1,
72             "Exact match failed for 'A|ComplexId|confused'");
73     matches = getMatcher().findAllIdMatches("A|ComplexId|bits_of");
74     Assert.assertTrue(matches.length == 1,
75             "Exact match failed for 'A|ComplexId|bits_of'");
76     matches = getMatcher().findAllIdMatches("A ComplexId Id");
77     Assert.assertTrue(matches.length == 1,
78             "Exact match failed for 'A Complex Id'");
79
80   }
81
82   public void testContainedMatch()
83   {
84
85   }
86 }