JAL-2446 added contains, delete, checks for inclusion on add + tests
[jalview.git] / test / jalview / datamodel / features / NCNodeTest.java
1 package jalview.datamodel.features;
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.SequenceFeature;
8
9 import java.util.ArrayList;
10 import java.util.List;
11
12 import org.testng.annotations.Test;
13
14 public class NCNodeTest
15 {
16   @Test(groups = "Functional")
17   public void testAdd()
18   {
19     Range r1 = new Range(10, 20);
20     NCNode<Range> node = new NCNode<Range>(r1);
21     assertEquals(node.getStart(), 10);
22     Range r2 = new Range(10, 15);
23     node.add(r2);
24
25     List<Range> contents = new ArrayList<Range>();
26     node.getEntries(contents);
27     assertEquals(contents.size(), 2);
28     assertTrue(contents.contains(r1));
29     assertTrue(contents.contains(r2));
30   }
31
32   @Test(
33     groups = "Functional",
34     expectedExceptions = { IllegalArgumentException.class })
35   public void testAdd_invalidRangeStart()
36   {
37     Range r1 = new Range(10, 20);
38     NCNode<Range> node = new NCNode<Range>(r1);
39     assertEquals(node.getStart(), 10);
40     Range r2 = new Range(9, 15);
41     node.add(r2);
42   }
43
44   @Test(
45     groups = "Functional",
46     expectedExceptions = { IllegalArgumentException.class })
47   public void testAdd_invalidRangeEnd()
48   {
49     Range r1 = new Range(10, 20);
50     NCNode<Range> node = new NCNode<Range>(r1);
51     assertEquals(node.getStart(), 10);
52     Range r2 = new Range(12, 21);
53     node.add(r2);
54   }
55
56   @Test(groups = "Functional")
57   public void testGetEntries()
58   {
59     Range r1 = new Range(10, 20);
60     NCNode<Range> node = new NCNode<Range>(r1);
61     List<Range> entries = new ArrayList<Range>();
62
63     node.getEntries(entries);
64     assertEquals(entries.size(), 1);
65     assertTrue(entries.contains(r1));
66
67     // clearing the returned list does not affect the NCNode
68     entries.clear();
69     node.getEntries(entries);
70     assertEquals(entries.size(), 1);
71     assertTrue(entries.contains(r1));
72
73     Range r2 = new Range(15, 18);
74     node.add(r2);
75     entries.clear();
76     node.getEntries(entries);
77     assertEquals(entries.size(), 2);
78     assertTrue(entries.contains(r1));
79     assertTrue(entries.contains(r2));
80   }
81
82   /**
83    * Tests for the contains method (uses entry.equals() test)
84    */
85   @Test(groups = "Functional")
86   public void testContains()
87   {
88     SequenceFeature sf1 = new SequenceFeature("type", "desc", 1, 10, 2f,
89             "group");
90     SequenceFeature sf2 = new SequenceFeature("type", "desc", 1, 10, 2f,
91             "group");
92     SequenceFeature sf3 = new SequenceFeature("type", "desc", 1, 10, 2f,
93             "anothergroup");
94     NCNode<SequenceFeature> node = new NCNode<SequenceFeature>(sf1);
95
96     assertFalse(node.contains(null));
97     assertTrue(node.contains(sf1));
98     assertTrue(node.contains(sf2)); // sf1.equals(sf2)
99     assertFalse(node.contains(sf3)); // !sf1.equals(sf3)
100   }
101
102 }