diff options
author | kafkaf- <thekafkaf@gmail.com> | 2014-11-10 22:15:26 +0200 |
---|---|---|
committer | Stefan Kögl <stefan@skoegl.net> | 2014-11-14 21:00:17 +0100 |
commit | d3966dd34c681a5e1c790ca212a020d83bca26ac (patch) | |
tree | 88f82cb41f6e4b0be542c03c06142a5c808d6b1f | |
parent | 490c7a25147b0674fc0234d0462726595bd4fd87 (diff) | |
download | python-json-pointer-d3966dd34c681a5e1c790ca212a020d83bca26ac.tar.gz |
Fix contains unexpected false return
-rw-r--r-- | jsonpointer.py | 9 | ||||
-rwxr-xr-x | 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): @@ -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): |