Home | History | Annotate | Download | only in tests
      1 from json.tests import PyTest, CTest
      2 
      3 
      4 def default_iterable(obj):
      5     return list(obj)
      6 
      7 class 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 
     33 class TestPyCheckCircular(TestCheckCircular, PyTest): pass
     34 class TestCCheckCircular(TestCheckCircular, CTest): pass
     35