summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Halley <halley@dnspython.org>2005-09-02 05:32:59 +0000
committerBob Halley <halley@dnspython.org>2005-09-02 05:32:59 +0000
commitcc161b2ddc100a00e920b37469ae6d03213f4aa1 (patch)
tree11532ae1460a32fade18535cabd7288a73bf4914
parent1c459a1d39328893a5f5308a1931efbb0d381c7d (diff)
downloaddnspython-cc161b2ddc100a00e920b37469ae6d03213f4aa1.tar.gz
add get/del item/slice
Original author: Bob Halley <halley@dnspython.org> Date: 2005-05-06 23:39:25
-rw-r--r--dns/set.py14
-rw-r--r--tests/set.py34
2 files changed, 46 insertions, 2 deletions
diff --git a/dns/set.py b/dns/set.py
index a5dd966..6a2363c 100644
--- a/dns/set.py
+++ b/dns/set.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2005 Nominum, Inc.
+# Copyright (C) 2003, 2004 Nominum, Inc.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose with or without fee is hereby granted,
@@ -224,6 +224,18 @@ class Set(object):
def __iter__(self):
return iter(self.items)
+ def __getitem__(self, i):
+ return self.items[i]
+
+ def __delitem__(self, i):
+ del self.items[i]
+
+ def __getslice__(self, i, j):
+ return self.items[i:j]
+
+ def __delslice__(self, i, j):
+ del self.items[i:j]
+
def issubset(self, other):
"""Is I{self} a subset of I{other}?
diff --git a/tests/set.py b/tests/set.py
index e2dd9b0..af55399 100644
--- a/tests/set.py
+++ b/tests/set.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2005 Nominum, Inc.
+# Copyright (C) 2003, 2004 Nominum, Inc.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose with or without fee is hereby granted,
@@ -172,5 +172,37 @@ class SimpleSetTestCase(unittest.TestCase):
s1.update(u)
self.failUnless(s1 == e)
+ def testGetitem(self):
+ s1 = S([1, 2, 3])
+ i0 = s1[0]
+ i1 = s1[1]
+ i2 = s1[2]
+ s2 = S([i0, i1, i2])
+ self.failUnless(s1 == s2)
+
+ def testGetslice(self):
+ s1 = S([1, 2, 3])
+ slice = s1[0:2]
+ self.failUnless(len(slice) == 2)
+ item = s1[2]
+ slice.append(item)
+ s2 = S(slice)
+ self.failUnless(s1 == s2)
+
+ def testDelitem(self):
+ s1 = S([1, 2, 3])
+ del s1[0]
+ i1 = s1[0]
+ i2 = s1[1]
+ self.failUnless(i1 != i2)
+ self.failUnless(i1 == 1 or i1 == 2 or i1 == 3)
+ self.failUnless(i2 == 1 or i2 == 2 or i2 == 3)
+
+ def testDelslice(self):
+ s1 = S([1, 2, 3])
+ del s1[0:2]
+ i1 = s1[0]
+ self.failUnless(i1 == 1 or i1 == 2 or i1 == 3)
+
if __name__ == '__main__':
unittest.main()