31 lines
903 B
Python
31 lines
903 B
Python
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)
|