summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2009-09-17 14:46:27 +0000
committerRafael H. Schloming <rhs@apache.org>2009-09-17 14:46:27 +0000
commit0c5426031c1a5ab306da5e3ddbee4918efa5aeee (patch)
tree1bbcffa59be0f38c4fb276bac580cc7ed8a614da /python
parentb463cab2665d13d9f28b6a02b8166e4a3c8df219 (diff)
downloadqpid-python-0c5426031c1a5ab306da5e3ddbee4918efa5aeee.tar.gz
added some empty, min, and max to RangedSet
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@816221 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python')
-rw-r--r--python/qpid/datatypes.py18
-rw-r--r--python/tests/datatypes.py28
2 files changed, 46 insertions, 0 deletions
diff --git a/python/qpid/datatypes.py b/python/qpid/datatypes.py
index f832ddae34..61643715e4 100644
--- a/python/qpid/datatypes.py
+++ b/python/qpid/datatypes.py
@@ -234,6 +234,24 @@ class RangedSet:
def add(self, lower, upper = None):
self.add_range(Range(lower, upper))
+ def empty(self):
+ for r in self.ranges:
+ if r.lower <= r.upper:
+ return False
+ return True
+
+ def max(self):
+ if self.ranges:
+ return self.ranges[-1].upper
+ else:
+ return None
+
+ def min(self):
+ if self.ranges:
+ return self.ranges[0].lower
+ else:
+ return None
+
def __iter__(self):
return iter(self.ranges)
diff --git a/python/tests/datatypes.py b/python/tests/datatypes.py
index b00e5e78f8..00e649d6cf 100644
--- a/python/tests/datatypes.py
+++ b/python/tests/datatypes.py
@@ -148,6 +148,34 @@ class RangedSetTest(TestCase):
assert range.lower == 0
assert range.upper == 8
+ def testEmpty(self):
+ s = RangedSet()
+ assert s.empty()
+ s.add(0, -1)
+ assert s.empty()
+ s.add(0, 0)
+ assert not s.empty()
+
+ def testMinMax(self):
+ s = RangedSet()
+ assert s.max() is None
+ assert s.min() is None
+ s.add(0, 10)
+ assert s.max() == 10
+ assert s.min() == 0
+ s.add(0, 5)
+ assert s.max() == 10
+ assert s.min() == 0
+ s.add(0, 11)
+ assert s.max() == 11
+ assert s.min() == 0
+ s.add(15, 20)
+ assert s.max() == 20
+ assert s.min() == 0
+ s.add(-10, -5)
+ assert s.max() == 20
+ assert s.min() == -10
+
class RangeTest(TestCase):
def testIntersect1(self):