mirror of
				https://github.com/msgpack/msgpack-python.git
				synced 2025-11-03 19:10:55 +00:00 
			
		
		
		
	
		
			
	
	
		
			65 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from unittest import TestCase, main
							 | 
						||
| 
								 | 
							
								from msgpack import packs, unpacks
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TestFormat(TestCase):
							 | 
						||
| 
								 | 
							
								    def __check(self, obj, expected_packed):
							 | 
						||
| 
								 | 
							
								        packed = packs(obj)
							 | 
						||
| 
								 | 
							
								        self.assertEqual(packed, expected_packed)
							 | 
						||
| 
								 | 
							
								        unpacked = unpacks(packed)
							 | 
						||
| 
								 | 
							
								        self.assertEqual(unpacked, obj)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def testSimpleValues(self):
							 | 
						||
| 
								 | 
							
								        self.__check(None, '\xc0')
							 | 
						||
| 
								 | 
							
								        self.__check(True, '\xc3')
							 | 
						||
| 
								 | 
							
								        self.__check(False, '\xc2')
							 | 
						||
| 
								 | 
							
								        self.__check(
							 | 
						||
| 
								 | 
							
								                [None, False, True],
							 | 
						||
| 
								 | 
							
								                '\x93\xc0\xc2\xc3'
							 | 
						||
| 
								 | 
							
								                )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def testFixnum(self):
							 | 
						||
| 
								 | 
							
								        self.__check(
							 | 
						||
| 
								 | 
							
								                [[0,64,127], [-32,-16,-1]],
							 | 
						||
| 
								 | 
							
								                "\x92\x93\x00\x40\x7f\x93\xe0\xf0\xff"
							 | 
						||
| 
								 | 
							
								                )
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    def testFixArray(self):
							 | 
						||
| 
								 | 
							
								        self.__check(
							 | 
						||
| 
								 | 
							
								                [[],[[None]]],
							 | 
						||
| 
								 | 
							
								                "\x92\x90\x91\x91\xc0"
							 | 
						||
| 
								 | 
							
								                )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def testFixRaw(self):
							 | 
						||
| 
								 | 
							
								        self.__check(
							 | 
						||
| 
								 | 
							
								                ["", "a", "bc", "def"],
							 | 
						||
| 
								 | 
							
								                "\x94\xa0\xa1a\xa2bc\xa3def"
							 | 
						||
| 
								 | 
							
								                )
							 | 
						||
| 
								 | 
							
								        pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def testFixMap(self):
							 | 
						||
| 
								 | 
							
								        self.__check(
							 | 
						||
| 
								 | 
							
								                {False: {None: None}, True:{None:{}}},
							 | 
						||
| 
								 | 
							
								                "\x82\xc2\x81\xc0\xc0\xc3\x81\xc0\x80"
							 | 
						||
| 
								 | 
							
								                )
							 | 
						||
| 
								 | 
							
								        pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TestUnpack(TestCase):
							 | 
						||
| 
								 | 
							
								    def __check(self, packed, obj):
							 | 
						||
| 
								 | 
							
								        self.assertEqual(unpacks(packed), obj)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def testuint(self):
							 | 
						||
| 
								 | 
							
								        self.__check(
							 | 
						||
| 
								 | 
							
								                 "\x99\xcc\x00\xcc\x80\xcc\xff\xcd\x00\x00\xcd\x80\x00"
							 | 
						||
| 
								 | 
							
								                 "\xcd\xff\xff\xce\x00\x00\x00\x00\xce\x80\x00\x00\x00"
							 | 
						||
| 
								 | 
							
								                 "\xce\xff\xff\xff\xff",
							 | 
						||
| 
								 | 
							
								                 [0, 128, 255, 0, 32768, 65535, 0,
							 | 
						||
| 
								 | 
							
								                     2147483648, 4294967295],
							 | 
						||
| 
								 | 
							
								                 )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == '__main__':
							 | 
						||
| 
								 | 
							
								    main()
							 |