private void buildTree(int l, int r) { if (l < 0 || r < 0 || r < l) throw new IllegalArgumentException("Illegal range: ("+l+","+r+")"); minPos = l; maxPos = r; // Reached leaf if (l == r - 1) { left = right = null; // Add children } else { int mid = (l + r) / 2; left = new Node(l, mid); right = new Node(mid, r); } }
@Test(expected=IllegalArgumentException.class) public void testIllegalSegmentTreeCreation2() { int size = -10; Node tree = new Node(size); }
@Test(expected=IllegalArgumentException.class) public void testIllegalSegmentTreeCreation1() { Node tree = new Node(null); }
@Test public void testSumQuery() { int[] values = {1,2,3,4,5}; Node tree = new Node(values); assertEquals(1, tree.sum(0,1)); assertEquals(2, tree.sum(1,2)); assertEquals(3, tree.sum(2,3)); assertEquals(4, tree.sum(3,4)); assertEquals(5, tree.sum(4,5)); }