| 
									
										
										
										
											2011-05-14 06:47:51 +03:00
										 |  |  | from test.json_tests import PyTest, CTest | 
					
						
							| 
									
										
										
										
											2008-05-08 14:29:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # 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"] | 
					
						
							|  |  |  | '''
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-14 06:47:51 +03:00
										 |  |  | class TestPass1: | 
					
						
							| 
									
										
										
										
											2008-05-08 14:29:10 +00:00
										 |  |  |     def test_parse(self): | 
					
						
							|  |  |  |         # test in/out equivalence and parsing | 
					
						
							| 
									
										
										
										
											2011-05-14 06:47:51 +03:00
										 |  |  |         res = self.loads(JSON) | 
					
						
							|  |  |  |         out = self.dumps(res) | 
					
						
							|  |  |  |         self.assertEqual(res, self.loads(out)) | 
					
						
							| 
									
										
										
										
											2008-05-08 14:29:10 +00:00
										 |  |  |         try: | 
					
						
							| 
									
										
										
										
											2011-05-14 06:47:51 +03:00
										 |  |  |             self.dumps(res, allow_nan=False) | 
					
						
							| 
									
										
										
										
											2008-05-08 14:29:10 +00:00
										 |  |  |         except ValueError: | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             self.fail("23456789012E666 should be out of range") | 
					
						
							| 
									
										
										
										
											2011-05-14 06:47:51 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestPyPass1(TestPass1, PyTest): pass | 
					
						
							|  |  |  | class TestCPass1(TestPass1, CTest): pass |