Skip to content

Commit d3966dd

Browse files
thekafkafstefankoegl
authored andcommitted
Fix contains unexpected false return
1 parent 490c7a2 commit d3966dd

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

jsonpointer.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,12 @@ def walk(self, doc, part):
248248
return doc[part]
249249

250250
def contains(self, ptr):
251-
""" Returns True if self contains the given ptr """
252-
return len(self.parts) > len(ptr.parts) and \
253-
self.parts[:len(ptr.parts)] == ptr.parts
251+
"""Returns True if self contains the given ptr"""
252+
return self.parts[:len(ptr.parts)] == ptr.parts
253+
254+
def __contains__(self, item):
255+
"""Returns True if self contains the given ptr"""
256+
return self.contains(item)
254257

255258
@property
256259
def path(self):

tests.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ def test_round_trip(self):
7272

7373
class ComparisonTests(unittest.TestCase):
7474

75+
def setUp(self):
76+
self.ptr1 = JsonPointer("/a/b/c")
77+
self.ptr2 = JsonPointer("/a/b")
78+
self.ptr3 = JsonPointer("/b/c")
79+
7580
def test_eq_hash(self):
7681
p1 = JsonPointer("/something/1/b")
7782
p2 = JsonPointer("/something/1/b")
@@ -89,13 +94,16 @@ def test_eq_hash(self):
8994
self.assertFalse(p1 == "/something/1/b")
9095

9196
def test_contains(self):
92-
p1 = JsonPointer("/a/b/c")
93-
p2 = JsonPointer("/a/b")
94-
p3 = JsonPointer("/b/c")
9597

96-
self.assertTrue(p1.contains(p2))
97-
self.assertFalse(p1.contains(p3))
98+
self.assertTrue(self.ptr1.contains(self.ptr2))
99+
self.assertTrue(self.ptr1.contains(self.ptr1))
100+
self.assertFalse(self.ptr1.contains(self.ptr3))
101+
102+
def test_contains_magic(self):
98103

104+
self.assertTrue(self.ptr2 in self.ptr1)
105+
self.assertTrue(self.ptr1 in self.ptr1)
106+
self.assertFalse(self.ptr3 in self.ptr1)
99107

100108

101109
class WrongInputTests(unittest.TestCase):

0 commit comments

Comments
 (0)