diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2008-01-11 01:55:56 +0100 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2008-01-11 01:55:56 +0100 |
commit | 2466d2cc5e210a124bb23cb9d2c8d3cc608a7c7f (patch) | |
tree | f02c25c7fff97af57ccfc6f47362b5acaef0d587 /source4 | |
parent | c3695026e1cfac3e835e937ed9343d82500cf197 (diff) | |
download | samba-2466d2cc5e210a124bb23cb9d2c8d3cc608a7c7f.tar.gz samba-2466d2cc5e210a124bb23cb9d2c8d3cc608a7c7f.tar.bz2 samba-2466d2cc5e210a124bb23cb9d2c8d3cc608a7c7f.zip |
ldb/python: Allow comparing a MessageElement to a list or a singleton.
(This used to be commit 1ccbab81d79f83bb419104f2bbaf2ae7b368e90f)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/lib/ldb/ldb.i | 13 | ||||
-rw-r--r-- | source4/lib/ldb/ldb.py | 13 | ||||
-rwxr-xr-x | source4/lib/ldb/tests/python/api.py | 6 |
3 files changed, 22 insertions, 10 deletions
diff --git a/source4/lib/ldb/ldb.i b/source4/lib/ldb/ldb.i index 57fa36584e..b6718351f8 100644 --- a/source4/lib/ldb/ldb.i +++ b/source4/lib/ldb/ldb.i @@ -306,12 +306,15 @@ typedef struct ldb_message_element { return ret def __eq__(self, other): - if (isinstance(other, str) and - len(set(self)) == 1 and - set(self).pop() == other): + if (len(self) == 1 and self.get(0) == other): return True - return self.__cmp__(other) == 0 - + if isinstance(other, self.__class__): + return self.__cmp__(other) == 0 + o = iter(other) + for i in range(len(self)): + if self.get(i) != o.next(): + return False + return True } } ldb_msg_element; diff --git a/source4/lib/ldb/ldb.py b/source4/lib/ldb/ldb.py index 2d037f080c..6aacc8c09c 100644 --- a/source4/lib/ldb/ldb.py +++ b/source4/lib/ldb/ldb.py @@ -101,12 +101,15 @@ class ldb_msg_element(object): return ret def __eq__(self, other): - if (isinstance(other, str) and - len(set(self)) == 1 and - set(self).pop() == other): + if (len(self) == 1 and self.get(0) == other): return True - return self.__cmp__(other) == 0 - + if isinstance(other, self.__class__): + return self.__cmp__(other) == 0 + o = iter(other) + for i in range(len(self)): + if self.get(i) != o.next(): + return False + return True ldb_msg_element.__iter__ = new_instancemethod(_ldb.ldb_msg_element___iter__,None,ldb_msg_element) ldb_msg_element.__set__ = new_instancemethod(_ldb.ldb_msg_element___set__,None,ldb_msg_element) diff --git a/source4/lib/ldb/tests/python/api.py b/source4/lib/ldb/tests/python/api.py index 5ab40106a8..8469e8f3cd 100755 --- a/source4/lib/ldb/tests/python/api.py +++ b/source4/lib/ldb/tests/python/api.py @@ -392,6 +392,12 @@ class MessageElementTests(unittest.TestCase): x = ldb.MessageElement(["foo", "bar"]) self.assertEquals(2, len(x)) + def test_eq(self): + x = ldb.MessageElement(["foo", "bar"]) + self.assertEquals(["foo", "bar"], x) + x = ldb.MessageElement(["foo"]) + self.assertEquals("foo", x) + class ExampleModule: name = "example" |