@Test public void testGetSum() { int n = 2000; long[] A = randomArray(n); FenwickTree fw = fenwickTree(A); for (int i = 0, cumul = 0; i < A.length; i++) { cumul += A[i]; assertEquals(cumul, fw.getSum(i + 1)); } }
@Test public void testFindHigherValueIndex() { int n = 500; long[] A = randomArray(n); FenwickTree fw = fenwickTree(A); for (int i = 0; i < A.length; i++) { long sum = fw.getSum(i + 1); assertEquals(findHigherSumIndex(A, sum) + 1, fw.findHigherSumIndex(sum)); } long sum = 10000000; assertEquals(findHigherSumIndex(A, sum) + 1, fw.findHigherSumIndex(sum)); sum = -10000000; assertEquals(findHigherSumIndex(A, sum) + 1, fw.findHigherSumIndex(sum)); }
private void testRangeSum() { long actualSum = 0; long expSum = 0; for (int i = 0; i < nums.length; i++) { expSum = 0; for (int j = i; j < nums.length; j++) { expSum += nums[j]; actualSum = testClass.getSum(i, j); if (expSum != actualSum) { fail("problem for sum from -->" + i + " to -->" + j); } } } }