From ab5ed1383ac95e1d994aaf742a0aeeeade69f0d9 Mon Sep 17 00:00:00 2001 From: "Rafael H. Schloming" Date: Mon, 16 Jun 2008 21:02:45 +0000 Subject: QPID-901: add tests for RangeSet; fixed a bug found by the new tests git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@668309 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/java/org/apache/qpid/util/Serial.java | 10 +++++++ .../java/org/apache/qpidity/transport/Range.java | 5 ++-- .../org/apache/qpidity/transport/RangeSet.java | 33 +++++++++------------- 3 files changed, 27 insertions(+), 21 deletions(-) (limited to 'java/common/src/main') diff --git a/java/common/src/main/java/org/apache/qpid/util/Serial.java b/java/common/src/main/java/org/apache/qpid/util/Serial.java index cfc97c3d04..44712984c0 100644 --- a/java/common/src/main/java/org/apache/qpid/util/Serial.java +++ b/java/common/src/main/java/org/apache/qpid/util/Serial.java @@ -1,5 +1,7 @@ package org.apache.qpid.util; +import java.util.Comparator; + import org.apache.qpid.SerialException; /** @@ -10,6 +12,14 @@ import org.apache.qpid.SerialException; public class Serial { + public static final Comparator COMPARATOR = new Comparator() + { + public int compare(Integer s1, Integer s2) + { + return Serial.compare(s1, s2); + } + }; + /** * Compares two numbers using serial arithmetic. * diff --git a/java/common/src/main/java/org/apache/qpidity/transport/Range.java b/java/common/src/main/java/org/apache/qpidity/transport/Range.java index 780f9e5997..14522cd45f 100644 --- a/java/common/src/main/java/org/apache/qpidity/transport/Range.java +++ b/java/common/src/main/java/org/apache/qpidity/transport/Range.java @@ -32,7 +32,7 @@ import static org.apache.qpid.util.Serial.*; * @author Rafael H. Schloming */ -public class Range +public final class Range { private final int lower; private final int upper; @@ -71,7 +71,8 @@ public class Range public boolean touches(Range range) { - return (includes(range.upper + 1) || includes(range.lower - 1) || + return (intersects(range) || + includes(range.upper + 1) || includes(range.lower - 1) || range.includes(upper + 1) || range.includes(lower - 1)); } diff --git a/java/common/src/main/java/org/apache/qpidity/transport/RangeSet.java b/java/common/src/main/java/org/apache/qpidity/transport/RangeSet.java index 5097c849ee..e05e399262 100644 --- a/java/common/src/main/java/org/apache/qpidity/transport/RangeSet.java +++ b/java/common/src/main/java/org/apache/qpidity/transport/RangeSet.java @@ -20,7 +20,6 @@ */ package org.apache.qpidity.transport; -import java.util.Collection; import java.util.Iterator; import java.util.ListIterator; import java.util.LinkedList; @@ -33,7 +32,7 @@ import static org.apache.qpid.util.Serial.*; * @author Rafael H. Schloming */ -public class RangeSet implements Iterable +public final class RangeSet implements Iterable { private LinkedList ranges = new LinkedList(); @@ -61,6 +60,19 @@ public class RangeSet implements Iterable return false; } + public boolean includes(int n) + { + for (Range r : this) + { + if (r.includes(n)) + { + return true; + } + } + + return false; + } + public void add(Range range) { ListIterator it = ranges.listIterator(); @@ -127,21 +139,4 @@ public class RangeSet implements Iterable return str.toString(); } - public static final void main(String[] args) - { - RangeSet ranges = new RangeSet(); - ranges.add(5, 10); - System.out.println(ranges); - ranges.add(15, 20); - System.out.println(ranges); - ranges.add(23, 25); - System.out.println(ranges); - ranges.add(12, 14); - System.out.println(ranges); - ranges.add(0, 1); - System.out.println(ranges); - ranges.add(3, 11); - System.out.println(ranges); - } - } -- cgit v1.2.1