diff options
Diffstat (limited to 'Lib/json/tests/test_check_circular.py')
-rw-r--r-- | Lib/json/tests/test_check_circular.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/Lib/json/tests/test_check_circular.py b/Lib/json/tests/test_check_circular.py new file mode 100644 index 0000000..3c3f96a --- /dev/null +++ b/Lib/json/tests/test_check_circular.py @@ -0,0 +1,30 @@ +from unittest import TestCase +import json + +def default_iterable(obj): + return list(obj) + +class TestCheckCircular(TestCase): + def test_circular_dict(self): + dct = {} + dct['a'] = dct + self.assertRaises(ValueError, json.dumps, dct) + + def test_circular_list(self): + lst = [] + lst.append(lst) + self.assertRaises(ValueError, json.dumps, lst) + + def test_circular_composite(self): + dct2 = {} + dct2['a'] = [] + dct2['a'].append(dct2) + self.assertRaises(ValueError, json.dumps, dct2) + + def test_circular_default(self): + json.dumps([set()], default=default_iterable) + self.assertRaises(TypeError, json.dumps, [set()]) + + def test_circular_off_default(self): + json.dumps([set()], default=default_iterable, check_circular=False) + self.assertRaises(TypeError, json.dumps, [set()], check_circular=False) |