mirror of
				https://github.com/msgpack/msgpack-python.git
				synced 2025-10-31 17:40:54 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			101 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| # coding: utf-8
 | |
| 
 | |
| from nose import main
 | |
| from nose.tools import *
 | |
| from msgpack import packs, unpacks
 | |
| 
 | |
| def check(length, obj):
 | |
|     v = packs(obj)
 | |
|     assert_equal(len(v), length, "%r length should be %r but get %r" % (obj, length, len(v)))
 | |
|     assert_equal(unpacks(v), obj)
 | |
| 
 | |
| def test_1():
 | |
|     for o in [None, True, False, 0, 1, (1 << 6), (1 << 7) - 1, -1,
 | |
|               -((1<<5)-1), -(1<<5)]:
 | |
|         check(1, o)
 | |
| 
 | |
| def test_2():
 | |
|     for o in [1 << 7, (1 << 8) - 1,
 | |
|               -((1<<5)+1), -(1<<7)
 | |
|              ]:
 | |
|         check(2, o)
 | |
| 
 | |
| def test_3():
 | |
|     for o in [1 << 8, (1 << 16) - 1,
 | |
|               -((1<<7)+1), -(1<<15)]:
 | |
|         check(3, o)
 | |
| 
 | |
| def test_5():
 | |
|     for o in [1 << 16, (1 << 32) - 1,
 | |
|               -((1<<15)+1), -(1<<31)]:
 | |
|         check(5, o)
 | |
| 
 | |
| def test_9():
 | |
|     for o in [1 << 32, (1 << 64) - 1,
 | |
|               -((1<<31)+1), -(1<<63),
 | |
|               1.0, 0.1, -0.1, -1.0]:
 | |
|         check(9, o)
 | |
| 
 | |
| 
 | |
| def check_raw(overhead, num):
 | |
|     check(num + overhead, " " * num)
 | |
| 
 | |
| def test_fixraw():
 | |
|     check_raw(1, 0)
 | |
|     check_raw(1, (1<<5) - 1)
 | |
| 
 | |
| def test_raw16():
 | |
|     check_raw(3, 1<<5)
 | |
|     check_raw(3, (1<<16) - 1)
 | |
| 
 | |
| def test_raw32():
 | |
|     check_raw(5, 1<<16)
 | |
| 
 | |
| 
 | |
| def check_array(overhead, num):
 | |
|     check(num + overhead, [None] * num)
 | |
| 
 | |
| def test_fixarray():
 | |
|     check_array(1, 0)
 | |
|     check_array(1, (1 << 4) - 1)
 | |
| 
 | |
| def test_array16():
 | |
|     check_array(3, 1 << 4)
 | |
|     check_array(3, (1<<16)-1)
 | |
| 
 | |
| def test_array32():
 | |
|     check_array(5, (1<<16))
 | |
| 
 | |
| 
 | |
| def match(obj, buf):
 | |
|     assert_equal(packs(obj), buf)
 | |
|     assert_equal(unpacks(buf), obj)
 | |
| 
 | |
| def test_match():
 | |
|     cases = [
 | |
|         (None, '\xc0'),
 | |
|         (False, '\xc2'),
 | |
|         (True, '\xc3'),
 | |
|         (0, '\x00'),
 | |
|         (127, '\x7f'),
 | |
|         (128, '\xcc\x80'),
 | |
|         (256, '\xcd\x01\x00'),
 | |
|         (-1, '\xff'),
 | |
|         (-33, '\xd0\xdf'),
 | |
|         (-129, '\xd1\xff\x7f'),
 | |
|         ({1:1}, '\x81\x01\x01'),
 | |
|         (1.0, "\xcb\x3f\xf0\x00\x00\x00\x00\x00\x00"),
 | |
|         ([], '\x90'),
 | |
|         (range(15),"\x9f\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e"),
 | |
|         (range(16),"\xdc\x00\x10\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"),
 | |
|         ({}, '\x80'),
 | |
|         (dict([(x,x) for x in range(15)]), "\x8f\x05\x05\x0b\x0b\x00\x00\x06\x06\x0c\x0c\x01\x01\x07\x07\x0d\x0d\x02\x02\x08\x08\x0e\x0e\x03\x03\x09\x09\x04\x04\x0a\x0a"),
 | |
|         (dict([(x,x) for x in range(16)]), "\xde\x00\x10\x05\x05\x0b\x0b\x00\x00\x06\x06\x0c\x0c\x01\x01\x07\x07\x0d\x0d\x02\x02\x08\x08\x0e\x0e\x03\x03\x09\x09\x0f\x0f\x04\x04\x0a\x0a"),
 | |
|         ]
 | |
| 
 | |
|     for v, p in cases:
 | |
|         match(v, p)
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main()
 | 
