| from json.tests import PyTest, CTest | |
| def default_iterable(obj): | |
| return list(obj) | |
| class TestCheckCircular(object): | |
| def test_circular_dict(self): | |
| dct = {} | |
| dct['a'] = dct | |
| self.assertRaises(ValueError, self.dumps, dct) | |
| def test_circular_list(self): | |
| lst = [] | |
| lst.append(lst) | |
| self.assertRaises(ValueError, self.dumps, lst) | |
| def test_circular_composite(self): | |
| dct2 = {} | |
| dct2['a'] = [] | |
| dct2['a'].append(dct2) | |
| self.assertRaises(ValueError, self.dumps, dct2) | |
| def test_circular_default(self): | |
| self.dumps([set()], default=default_iterable) | |
| self.assertRaises(TypeError, self.dumps, [set()]) | |
| def test_circular_off_default(self): | |
| self.dumps([set()], default=default_iterable, check_circular=False) | |
| self.assertRaises(TypeError, self.dumps, [set()], check_circular=False) | |
| class TestPyCheckCircular(TestCheckCircular, PyTest): pass | |
| class TestCCheckCircular(TestCheckCircular, CTest): pass |