35 lines
		
	
	
		
			1015 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1015 B
		
	
	
	
		
			Python
		
	
	
	
| 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
 |