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 junit.extensions.PA;
14 import org.testng.annotations.Test;
16 public class NCNodeTest
18 @Test(groups = "Functional")
21 Range r1 = new Range(10, 20);
22 NCNode<Range> node = new NCNode<Range>(r1);
23 assertEquals(node.getBegin(), 10);
24 Range r2 = new Range(10, 15);
27 List<Range> contents = new ArrayList<Range>();
28 node.getEntries(contents);
29 assertEquals(contents.size(), 2);
30 assertTrue(contents.contains(r1));
31 assertTrue(contents.contains(r2));
35 groups = "Functional",
36 expectedExceptions = { IllegalArgumentException.class })
37 public void testAdd_invalidRangeStart()
39 Range r1 = new Range(10, 20);
40 NCNode<Range> node = new NCNode<Range>(r1);
41 assertEquals(node.getBegin(), 10);
42 Range r2 = new Range(9, 15);
47 groups = "Functional",
48 expectedExceptions = { IllegalArgumentException.class })
49 public void testAdd_invalidRangeEnd()
51 Range r1 = new Range(10, 20);
52 NCNode<Range> node = new NCNode<Range>(r1);
53 assertEquals(node.getBegin(), 10);
54 Range r2 = new Range(12, 21);
58 @Test(groups = "Functional")
59 public void testGetEntries()
61 Range r1 = new Range(10, 20);
62 NCNode<Range> node = new NCNode<Range>(r1);
63 List<Range> entries = new ArrayList<Range>();
65 node.getEntries(entries);
66 assertEquals(entries.size(), 1);
67 assertTrue(entries.contains(r1));
69 // clearing the returned list does not affect the NCNode
71 node.getEntries(entries);
72 assertEquals(entries.size(), 1);
73 assertTrue(entries.contains(r1));
75 Range r2 = new Range(15, 18);
78 node.getEntries(entries);
79 assertEquals(entries.size(), 2);
80 assertTrue(entries.contains(r1));
81 assertTrue(entries.contains(r2));
85 * Tests for the contains method (uses entry.equals() test)
87 @Test(groups = "Functional")
88 public void testContains()
90 SequenceFeature sf1 = new SequenceFeature("type", "desc", 1, 10, 2f,
92 SequenceFeature sf2 = new SequenceFeature("type", "desc", 1, 10, 2f,
94 SequenceFeature sf3 = new SequenceFeature("type", "desc", 1, 10, 2f,
96 NCNode<SequenceFeature> node = new NCNode<SequenceFeature>(sf1);
98 assertFalse(node.contains(null));
99 assertTrue(node.contains(sf1));
100 assertTrue(node.contains(sf2)); // sf1.equals(sf2)
101 assertFalse(node.contains(sf3)); // !sf1.equals(sf3)
105 * Test method that checks for valid structure. Valid means that all
106 * subregions (if any) lie within the root range, and that all subregions have
109 @Test(groups = "Functional")
110 public void testIsValid()
112 Range r1 = new Range(10, 20);
113 Range r2 = new Range(14, 15);
114 Range r3 = new Range(16, 17);
115 NCNode<Range> node = new NCNode<Range>(r1);
120 * node has root range [10-20] and contains an
121 * NCList of [14-15, 16-17]
123 assertTrue(node.isValid());
124 PA.setValue(r1, "start", 15);
125 assertFalse(node.isValid()); // r2 not within r1
126 PA.setValue(r1, "start", 10);
127 assertTrue(node.isValid());
128 PA.setValue(r1, "end", 16);
129 assertFalse(node.isValid()); // r3 not within r1
130 PA.setValue(r1, "end", 20);
131 assertTrue(node.isValid());
132 PA.setValue(r3, "start", 12);
133 assertFalse(node.isValid()); // r3 should precede r2