1from json.tests import PyTest, CTest 2 3 4def default_iterable(obj): 5 return list(obj) 6 7class TestCheckCircular(object): 8 def test_circular_dict(self): 9 dct = {} 10 dct['a'] = dct 11 self.assertRaises(ValueError, self.dumps, dct) 12 13 def test_circular_list(self): 14 lst = [] 15 lst.append(lst) 16 self.assertRaises(ValueError, self.dumps, lst) 17 18 def test_circular_composite(self): 19 dct2 = {} 20 dct2['a'] = [] 21 dct2['a'].append(dct2) 22 self.assertRaises(ValueError, self.dumps, dct2) 23 24 def test_circular_default(self): 25 self.dumps([set()], default=default_iterable) 26 self.assertRaises(TypeError, self.dumps, [set()]) 27 28 def test_circular_off_default(self): 29 self.dumps([set()], default=default_iterable, check_circular=False) 30 self.assertRaises(TypeError, self.dumps, [set()], check_circular=False) 31 32 33class TestPyCheckCircular(TestCheckCircular, PyTest): pass 34class TestCCheckCircular(TestCheckCircular, CTest): pass 35