From cc161b2ddc100a00e920b37469ae6d03213f4aa1 Mon Sep 17 00:00:00 2001 From: Bob Halley Date: Fri, 2 Sep 2005 05:32:59 +0000 Subject: [PATCH] add get/del item/slice Original author: Bob Halley Date: 2005-05-06 23:39:25 --- dns/set.py | 14 +++++++++++++- tests/set.py | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/dns/set.py b/dns/set.py index a5dd966c..6a2363c2 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 e2dd9b0b..af553993 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() -- 2.47.3