1 package jalview.datamodel.features;
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.SequenceFeature;
9 import java.util.ArrayList;
10 import java.util.List;
12 import org.testng.annotations.Test;
14 public class NCNodeTest
16 @Test(groups = "Functional")
19 Range r1 = new Range(10, 20);
20 NCNode<Range> node = new NCNode<Range>(r1);
21 assertEquals(node.getBegin(), 10);
22 Range r2 = new Range(10, 15);
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));
33 groups = "Functional",
34 expectedExceptions = { IllegalArgumentException.class })
35 public void testAdd_invalidRangeStart()
37 Range r1 = new Range(10, 20);
38 NCNode<Range> node = new NCNode<Range>(r1);
39 assertEquals(node.getBegin(), 10);
40 Range r2 = new Range(9, 15);
45 groups = "Functional",
46 expectedExceptions = { IllegalArgumentException.class })
47 public void testAdd_invalidRangeEnd()
49 Range r1 = new Range(10, 20);
50 NCNode<Range> node = new NCNode<Range>(r1);
51 assertEquals(node.getBegin(), 10);
52 Range r2 = new Range(12, 21);
56 @Test(groups = "Functional")
57 public void testGetEntries()
59 Range r1 = new Range(10, 20);
60 NCNode<Range> node = new NCNode<Range>(r1);
61 List<Range> entries = new ArrayList<Range>();
63 node.getEntries(entries);
64 assertEquals(entries.size(), 1);
65 assertTrue(entries.contains(r1));
67 // clearing the returned list does not affect the NCNode
69 node.getEntries(entries);
70 assertEquals(entries.size(), 1);
71 assertTrue(entries.contains(r1));
73 Range r2 = new Range(15, 18);
76 node.getEntries(entries);
77 assertEquals(entries.size(), 2);
78 assertTrue(entries.contains(r1));
79 assertTrue(entries.contains(r2));
83 * Tests for the contains method (uses entry.equals() test)
85 @Test(groups = "Functional")
86 public void testContains()
88 SequenceFeature sf1 = new SequenceFeature("type", "desc", 1, 10, 2f,
90 SequenceFeature sf2 = new SequenceFeature("type", "desc", 1, 10, 2f,
92 SequenceFeature sf3 = new SequenceFeature("type", "desc", 1, 10, 2f,
94 NCNode<SequenceFeature> node = new NCNode<SequenceFeature>(sf1);
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)
103 * Test method that checks for valid structure. Valid means that all
104 * subregions (if any) lie within the root range, and that all subregions have
107 @Test(groups = "Functional")
108 public void testIsValid()
110 Range r1 = new Range(10, 20);
111 Range r2 = new Range(14, 15);
112 Range r3 = new Range(16, 17);
113 NCNode<Range> node = new NCNode<Range>(r1);
118 * node has root range [10-20] and contains an
119 * NCList of [14-15, 16-17]
121 assertTrue(node.isValid());
123 assertFalse(node.isValid()); // r2 not within r1
125 assertTrue(node.isValid());
127 assertFalse(node.isValid()); // r3 not within r1
129 assertTrue(node.isValid());
131 assertFalse(node.isValid()); // r3 should precede r2