diff options
-rw-r--r-- | jsonpointer.py | 4 | ||||
-rwxr-xr-x | tests.py | 22 |
2 files changed, 24 insertions, 2 deletions
diff --git a/jsonpointer.py b/jsonpointer.py index 4d65987..d28e111 100644 --- a/jsonpointer.py +++ b/jsonpointer.py @@ -255,7 +255,7 @@ class JsonPointer(object): """ parts = [part.replace('~', '~0') for part in self.parts] parts = [part.replace('/', '~1') for part in parts] - return '/' + '/'.join(parts) + return ''.join('/' + part for part in parts) def __eq__(self, other): """ compares a pointer to another object @@ -283,7 +283,7 @@ class JsonPointer(object): parts = [str(part) for part in parts] parts = [part.replace('~', '~0') for part in parts] parts = [part.replace('/', '~1') for part in parts] - ptr = cls('/' + '/'.join(parts)) + ptr = cls(''.join('/' + part for part in parts)) return ptr @@ -47,6 +47,28 @@ class SpecificationTests(unittest.TestCase): self.assertTrue(isinstance(resolve_pointer(doc, "/foo/-"), EndOfList)) self.assertRaises(JsonPointerException, resolve_pointer, doc, "/foo/-/1") + def test_round_trip(self): + paths = [ + "", + "/foo", + "/foo/0", + "/", + "/a~1b", + "/c%d", + "/e^f", + "/g|h", + "/i\\j", + "/k\"l", + "/ ", + "/m~0n", + ] + for path in paths: + ptr = JsonPointer(path) + self.assertEqual(path, ptr.path) + + parts = ptr.parts + new_ptr = JsonPointer.from_parts(parts) + self.assertEqual(ptr, new_ptr) class ComparisonTests(unittest.TestCase): |