diff options
author | Stefan Kögl <stefan@skoegl.net> | 2017-09-10 17:39:34 +0200 |
---|---|---|
committer | Stefan Kögl <stefan@skoegl.net> | 2017-09-10 17:39:34 +0200 |
commit | 1bb180f33504bfbd0b54616208e9ace727506b0d (patch) | |
tree | 9b8be369215816f4544a532496e87a223fa40322 /tests.py | |
parent | e9fa6525f3cef553acd86f3083eb07f2dfc80920 (diff) | |
parent | 2ca270f01e7667366800e5648c2561d7072dd0e9 (diff) | |
download | python-json-pointer-1bb180f33504bfbd0b54616208e9ace727506b0d.tar.gz |
Merge branch 'broad-exception-handling' of https://github.com/thekafkaf/python-json-pointer into thekafkaf-broad-exception-handling
Diffstat (limited to 'tests.py')
-rwxr-xr-x | tests.py | 98 |
1 files changed, 71 insertions, 27 deletions
@@ -10,6 +10,7 @@ import copy from jsonpointer import resolve_pointer, EndOfList, JsonPointerException, \ JsonPointer, set_pointer + class SpecificationTests(unittest.TestCase): """ Tests all examples from the JSON Pointer specification """ @@ -73,6 +74,7 @@ class SpecificationTests(unittest.TestCase): new_ptr = JsonPointer.from_parts(parts) self.assertEqual(ptr, new_ptr) + class ComparisonTests(unittest.TestCase): def setUp(self): @@ -108,7 +110,6 @@ class ComparisonTests(unittest.TestCase): self.assertTrue(self.ptr1 in self.ptr1) self.assertFalse(self.ptr3 in self.ptr1) - class WrongInputTests(unittest.TestCase): def test_no_start_slash(self): @@ -192,42 +193,52 @@ class SetTests(unittest.TestCase): self.assertRaises(JsonPointerException, set_pointer, doc, "", 9) + class AltTypesTests(unittest.TestCase): - def test_alttypes(self): - JsonPointer.alttypes = True + class Node(object): + def __init__(self, name, parent=None): + self.name = name + self.parent = parent + self.left = None + self.right = None - class Node(object): - def __init__(self, name, parent=None): - self.name = name - self.parent = parent - self.left = None - self.right = None + def set_left(self, node): + node.parent = self + self.left = node - def set_left(self, node): - node.parent = self - self.left = node + def set_right(self, node): + node.parent = self + self.right = node - def set_right(self, node): - node.parent = self - self.right = node + def __getitem__(self, key): + if key == 'left': + return self.left + if key == 'right': + return self.right - def __getitem__(self, key): - if key == 'left': - return self.left - if key == 'right': - return self.right + raise KeyError("Only left and right supported") - raise KeyError("Only left and right supported") + def __setitem__(self, key, val): + if key == 'left': + return self.set_left(val) + if key == 'right': + return self.set_right(val) - def __setitem__(self, key, val): - if key == 'left': - return self.set_left(val) - if key == 'right': - return self.set_right(val) + raise KeyError("Only left and right supported: %s" % key) - raise KeyError("Only left and right supported: %s" % key) + class mdict(object): + def __init__(self, d): + self._d = d + def __getitem__(self, item): + return self._d[item] + mdict = mdict({'root': {'1': {'2': '3'}}}) + Node = Node + + + def test_alttypes(self): + Node = self.Node root = Node('root') root.set_left(Node('a')) @@ -249,6 +260,39 @@ class AltTypesTests(unittest.TestCase): set_pointer(root, '/left/right', Node('AB')) self.assertEqual(resolve_pointer(root, '/left/right').name, 'AB') + def test_mock_dict_sanity(self): + doc = self.mdict + default = None + + # TODO: Generate this automatically for any given object + path_to_expected_value = { + '/root/1': {'2': '3'}, + '/root': {'1': {'2': '3'}}, + '/root/1/2': '3', + } + + for path, expected_value in iter(path_to_expected_value.items()): + self.assertEqual(resolve_pointer(doc, path, default), expected_value) + + def test_mock_dict_returns_default(self): + doc = self.mdict + default = None + + path_to_expected_value = { + '/foo': default, + '/x/y/z/d': default + } + + for path, expected_value in iter(path_to_expected_value.items()): + self.assertEqual(resolve_pointer(doc, path, default), expected_value) + + def test_mock_dict_raises_key_error(self): + doc = self.mdict + self.assertRaises(JsonPointerException, resolve_pointer, doc, '/foo') + self.assertRaises(JsonPointerException, resolve_pointer, doc, '/root/1/2/3/4') + + + suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(SpecificationTests)) suite.addTest(unittest.makeSuite(ComparisonTests)) |