mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			76 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from unittest import TestCase
 | |
| 
 | |
| import json
 | |
| 
 | |
| # from http://json.org/JSON_checker/test/pass1.json
 | |
| JSON = r'''
 | |
| [
 | |
|     "JSON Test Pattern pass1",
 | |
|     {"object with 1 member":["array with 1 element"]},
 | |
|     {},
 | |
|     [],
 | |
|     -42,
 | |
|     true,
 | |
|     false,
 | |
|     null,
 | |
|     {
 | |
|         "integer": 1234567890,
 | |
|         "real": -9876.543210,
 | |
|         "e": 0.123456789e-12,
 | |
|         "E": 1.234567890E+34,
 | |
|         "":  23456789012E666,
 | |
|         "zero": 0,
 | |
|         "one": 1,
 | |
|         "space": " ",
 | |
|         "quote": "\"",
 | |
|         "backslash": "\\",
 | |
|         "controls": "\b\f\n\r\t",
 | |
|         "slash": "/ & \/",
 | |
|         "alpha": "abcdefghijklmnopqrstuvwyz",
 | |
|         "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
 | |
|         "digit": "0123456789",
 | |
|         "special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
 | |
|         "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
 | |
|         "true": true,
 | |
|         "false": false,
 | |
|         "null": null,
 | |
|         "array":[  ],
 | |
|         "object":{  },
 | |
|         "address": "50 St. James Street",
 | |
|         "url": "http://www.JSON.org/",
 | |
|         "comment": "// /* <!-- --",
 | |
|         "# -- --> */": " ",
 | |
|         " s p a c e d " :[1,2 , 3
 | |
| 
 | |
| ,
 | |
| 
 | |
| 4 , 5        ,          6           ,7        ],
 | |
|         "compact": [1,2,3,4,5,6,7],
 | |
|         "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
 | |
|         "quotes": "" \u0022 %22 0x22 034 "",
 | |
|         "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"
 | |
| : "A key can be any string"
 | |
|     },
 | |
|     0.5 ,98.6
 | |
| ,
 | |
| 99.44
 | |
| ,
 | |
| 
 | |
| 1066
 | |
| 
 | |
| 
 | |
| ,"rosebud"]
 | |
| '''
 | |
| 
 | |
| class TestPass1(TestCase):
 | |
|     def test_parse(self):
 | |
|         # test in/out equivalence and parsing
 | |
|         res = json.loads(JSON)
 | |
|         out = json.dumps(res)
 | |
|         self.assertEqual(res, json.loads(out))
 | |
|         try:
 | |
|             json.dumps(res, allow_nan=False)
 | |
|         except ValueError:
 | |
|             pass
 | |
|         else:
 | |
|             self.fail("23456789012E666 should be out of range")
 | 
