summaryrefslogtreecommitdiff
path: root/qpid/java/common/src/test
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2012-03-08 19:48:39 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2012-03-08 19:48:39 +0000
commit8c3cba6f2b457182a7dd3747b15bf0d65c652d1c (patch)
treeed20eee81c5f22dc63aa5a42391def48ec1064e4 /qpid/java/common/src/test
parent9a4b1b0850d6c2d6a62731156d416587cac39826 (diff)
downloadqpid-python-8c3cba6f2b457182a7dd3747b15bf0d65c652d1c.tar.gz
QPID-3886 Committing a patch by Kevin Conner.
The purpose of the patch is to improve the efficiency of processing known-complete (command id ranges). git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1298536 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/common/src/test')
-rw-r--r--qpid/java/common/src/test/java/org/apache/qpid/transport/RangeSetTest.java114
1 files changed, 114 insertions, 0 deletions
diff --git a/qpid/java/common/src/test/java/org/apache/qpid/transport/RangeSetTest.java b/qpid/java/common/src/test/java/org/apache/qpid/transport/RangeSetTest.java
index 56dbaf5535..14589eb541 100644
--- a/qpid/java/common/src/test/java/org/apache/qpid/transport/RangeSetTest.java
+++ b/qpid/java/common/src/test/java/org/apache/qpid/transport/RangeSetTest.java
@@ -27,6 +27,7 @@ import static org.apache.qpid.util.Serial.eq;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
/**
@@ -236,4 +237,117 @@ public class RangeSetTest extends TestCase
assertEquals(d.getUpper(), 10);
}
+ public void testSetSubtract1()
+ {
+ final RangeSet orig = createRangeSet(0, 10) ;
+ final RangeSet update = createRangeSet(3, 15) ;
+ orig.subtract(update) ;
+ checkRange(orig, 0, 2) ;
+ }
+
+ public void testSetSubtract2()
+ {
+ final RangeSet orig = createRangeSet(0, 10) ;
+ final RangeSet update = createRangeSet(3, 10) ;
+ orig.subtract(update) ;
+ checkRange(orig, 0, 2) ;
+ }
+
+ public void testSetSubtract3()
+ {
+ final RangeSet orig = createRangeSet(0, 10) ;
+ final RangeSet update = createRangeSet(3, 4) ;
+ orig.subtract(update) ;
+ checkRange(orig, 0, 2, 5, 10) ;
+ }
+
+ public void testSetSubtract4()
+ {
+ final RangeSet orig = createRangeSet(3, 15) ;
+ final RangeSet update = createRangeSet(0, 10) ;
+ orig.subtract(update) ;
+ checkRange(orig, 11, 15) ;
+ }
+
+ public void testSetSubtract5()
+ {
+ final RangeSet orig = createRangeSet(3, 10) ;
+ final RangeSet update = createRangeSet(0, 10) ;
+ orig.subtract(update) ;
+ checkRange(orig) ;
+ }
+
+ public void testSetSubtract6()
+ {
+ final RangeSet orig = createRangeSet(3, 10) ;
+ final RangeSet update = createRangeSet(0, 15) ;
+ orig.subtract(update) ;
+ checkRange(orig) ;
+ }
+
+ public void testSetSubtract7()
+ {
+ final RangeSet orig = createRangeSet(0, 10) ;
+ final RangeSet update = createRangeSet(0, 15) ;
+ orig.subtract(update) ;
+ checkRange(orig) ;
+ }
+
+ public void testSetSubtract8()
+ {
+ final RangeSet orig = createRangeSet(0, 15) ;
+ final RangeSet update = createRangeSet(0, 10) ;
+ orig.subtract(update) ;
+ checkRange(orig, 11, 15) ;
+ }
+
+ public void testSetSubtract9()
+ {
+ final RangeSet orig = createRangeSet(0, 15, 20, 30) ;
+ final RangeSet update = createRangeSet(2, 3, 5, 6, 8, 9, 22, 23, 27, 28) ;
+ orig.subtract(update) ;
+ checkRange(orig, 0, 1, 4, 4, 7, 7, 10, 15, 20, 21, 24, 26, 29, 30) ;
+ }
+
+ public void testSetSubtract10()
+ {
+ final RangeSet orig = createRangeSet(0, 15, 20, 30) ;
+ final RangeSet update = createRangeSet(0, 2, 4, 6, 10, 22, 24, 24, 27, 30) ;
+ orig.subtract(update) ;
+ checkRange(orig, 3, 3, 7, 9, 23, 23, 25, 26) ;
+ }
+
+ public void testSetSubtract11()
+ {
+ final RangeSet orig = createRangeSet(0, 2, 4, 6, 10, 22, 24, 24, 27, 30) ;
+ final RangeSet update = createRangeSet(0, 2, 4, 6, 10, 22, 24, 24, 27, 30) ;
+ orig.subtract(update) ;
+ checkRange(orig) ;
+ }
+
+ private RangeSet createRangeSet(int ... bounds)
+ {
+ RangeSet set = RangeSetFactory.createRangeSet();
+ final int length = (bounds == null ? 0 : bounds.length) ;
+ int count = 0 ;
+ while(count < length)
+ {
+ set.add(bounds[count++], bounds[count++]) ;
+ }
+ return set ;
+ }
+
+ private void checkRange(final RangeSet rangeSet, int ... bounds)
+ {
+ final int length = (bounds == null ? 0 : bounds.length) ;
+ assertEquals("Range count", length/2, rangeSet.size()) ;
+ final Iterator<Range> iter = rangeSet.iterator() ;
+ int count = 0 ;
+ while(count < length)
+ {
+ final Range range = iter.next() ;
+ assertEquals("Range lower", bounds[count++], range.getLower()) ;
+ assertEquals("Range upper", bounds[count++], range.getUpper()) ;
+ }
+ }
}