From d3966dd34c681a5e1c790ca212a020d83bca26ac Mon Sep 17 00:00:00 2001 From: kafkaf- Date: Mon, 10 Nov 2014 22:15:26 +0200 Subject: Fix contains unexpected false return --- jsonpointer.py | 9 ++++++--- tests.py | 18 +++++++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/jsonpointer.py b/jsonpointer.py index ee7f266..b02e4ad 100644 --- a/jsonpointer.py +++ b/jsonpointer.py @@ -248,9 +248,12 @@ class JsonPointer(object): return doc[part] def contains(self, ptr): - """ Returns True if self contains the given ptr """ - return len(self.parts) > len(ptr.parts) and \ - self.parts[:len(ptr.parts)] == ptr.parts + """Returns True if self contains the given ptr""" + return self.parts[:len(ptr.parts)] == ptr.parts + + def __contains__(self, item): + """Returns True if self contains the given ptr""" + return self.contains(item) @property def path(self): diff --git a/tests.py b/tests.py index 2b5608e..44447da 100755 --- a/tests.py +++ b/tests.py @@ -72,6 +72,11 @@ class SpecificationTests(unittest.TestCase): class ComparisonTests(unittest.TestCase): + def setUp(self): + self.ptr1 = JsonPointer("/a/b/c") + self.ptr2 = JsonPointer("/a/b") + self.ptr3 = JsonPointer("/b/c") + def test_eq_hash(self): p1 = JsonPointer("/something/1/b") p2 = JsonPointer("/something/1/b") @@ -89,13 +94,16 @@ class ComparisonTests(unittest.TestCase): self.assertFalse(p1 == "/something/1/b") def test_contains(self): - p1 = JsonPointer("/a/b/c") - p2 = JsonPointer("/a/b") - p3 = JsonPointer("/b/c") - self.assertTrue(p1.contains(p2)) - self.assertFalse(p1.contains(p3)) + self.assertTrue(self.ptr1.contains(self.ptr2)) + self.assertTrue(self.ptr1.contains(self.ptr1)) + self.assertFalse(self.ptr1.contains(self.ptr3)) + + def test_contains_magic(self): + self.assertTrue(self.ptr2 in self.ptr1) + self.assertTrue(self.ptr1 in self.ptr1) + self.assertFalse(self.ptr3 in self.ptr1) class WrongInputTests(unittest.TestCase): -- cgit v1.2.1