public void testIntersectNonOverlappingRange() { GeneralRange<Integer> range = GeneralRange.range(ORDERING, 2, OPEN, 4, CLOSED); assertTrue(range.intersect(GeneralRange.range(ORDERING, 5, CLOSED, 6, CLOSED)).isEmpty()); assertTrue(range.intersect(GeneralRange.range(ORDERING, 1, OPEN, 2, OPEN)).isEmpty()); }
/** * Returns the total value of the specified aggregation function on the specified tree restricted * to the specified range. Assumes that the tree satisfies the binary search ordering property * relative to {@code range.comparator()}. */ public static <K, N extends BstNode<K, N>> long totalInRange( BstAggregate<? super N> aggregate, GeneralRange<K> range, @Nullable N root) { checkNotNull(aggregate); checkNotNull(range); if (root == null || range.isEmpty()) { return 0; } long total = aggregate.treeValue(root); if (range.hasLowerBound()) { total -= totalBeyondRangeToSide(aggregate, range, LEFT, root); } if (range.hasUpperBound()) { total -= totalBeyondRangeToSide(aggregate, range, RIGHT, root); } return total; }
public void testIntersectNonOverlappingRange() { GeneralRange<Integer> range = GeneralRange.range(ORDERING, 2, OPEN, 4, CLOSED); assertTrue(range.intersect(GeneralRange.range(ORDERING, 5, CLOSED, 6, CLOSED)).isEmpty()); assertTrue(range.intersect(GeneralRange.range(ORDERING, 1, OPEN, 2, OPEN)).isEmpty()); }