mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 10:26:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from io import StringIO
 | |
| from test.json_tests import PyTest, CTest
 | |
| 
 | |
| from test.support import bigmemtest, _1G
 | |
| 
 | |
| class TestDump:
 | |
|     def test_dump(self):
 | |
|         sio = StringIO()
 | |
|         self.json.dump({}, sio)
 | |
|         self.assertEqual(sio.getvalue(), '{}')
 | |
| 
 | |
|     def test_dumps(self):
 | |
|         self.assertEqual(self.dumps({}), '{}')
 | |
| 
 | |
|     def test_encode_truefalse(self):
 | |
|         self.assertEqual(self.dumps(
 | |
|                  {True: False, False: True}, sort_keys=True),
 | |
|                  '{"false": true, "true": false}')
 | |
|         self.assertEqual(self.dumps(
 | |
|                 {2: 3.0, 4.0: 5, False: 1, 6: True}, sort_keys=True),
 | |
|                 '{"false": 1, "2": 3.0, "4.0": 5, "6": true}')
 | |
| 
 | |
| 
 | |
| class TestPyDump(TestDump, PyTest): pass
 | |
| 
 | |
| class TestCDump(TestDump, CTest):
 | |
| 
 | |
|     # The size requirement here is hopefully over-estimated (actual
 | |
|     # memory consumption depending on implementation details, and also
 | |
|     # system memory management, since this may allocate a lot of
 | |
|     # small objects).
 | |
| 
 | |
|     @bigmemtest(size=_1G, memuse=1)
 | |
|     def test_large_list(self, size):
 | |
|         N = int(30 * 1024 * 1024 * (size / _1G))
 | |
|         l = [1] * N
 | |
|         encoded = self.dumps(l)
 | |
|         self.assertEqual(len(encoded), N * 3)
 | |
|         self.assertEqual(encoded[:1], "[")
 | |
|         self.assertEqual(encoded[-2:], "1]")
 | |
|         self.assertEqual(encoded[1:-2], "1, " * (N - 1))
 | 
