|
1 | 1 | # coding: utf-8 |
2 | 2 |
|
3 | | -from msgpack import packb, unpackb |
| 3 | +from msgpack import packb, unpackb, ExtType |
4 | 4 |
|
5 | 5 |
|
6 | 6 | def test_str8(): |
@@ -66,4 +66,23 @@ def test_bin32(): |
66 | 66 | assert b[5:] == data |
67 | 67 | assert unpackb(b) == data |
68 | 68 |
|
69 | | - |
| 69 | +def test_ext(): |
| 70 | + def check(ext, packed): |
| 71 | + assert packb(ext) == packed |
| 72 | + assert unpackb(packed) == ext |
| 73 | + check(ExtType(0x42, b'Z'), b'\xd4\x42Z') # fixext 1 |
| 74 | + check(ExtType(0x42, b'ZZ'), b'\xd5\x42ZZ') # fixext 2 |
| 75 | + check(ExtType(0x42, b'Z'*4), b'\xd6\x42' + b'Z'*4) # fixext 4 |
| 76 | + check(ExtType(0x42, b'Z'*8), b'\xd7\x42' + b'Z'*8) # fixext 8 |
| 77 | + check(ExtType(0x42, b'Z'*16), b'\xd8\x42' + b'Z'*16) # fixext 16 |
| 78 | + # ext 8 |
| 79 | + check(ExtType(0x42, b''), b'\xc7\x00\x42') |
| 80 | + check(ExtType(0x42, b'Z'*255), b'\xc7\xff\x42' + b'Z'*255) |
| 81 | + # ext 16 |
| 82 | + check(ExtType(0x42, b'Z'*256), b'\xc8\x01\x00\x42' + b'Z'*256) |
| 83 | + check(ExtType(0x42, b'Z'*0xffff), b'\xc8\xff\xff\x42' + b'Z'*0xffff) |
| 84 | + # ext 32 |
| 85 | + check(ExtType(0x42, b'Z'*0x10000), b'\xc9\x00\x01\x00\x00\x42' + b'Z'*0x10000) |
| 86 | + # needs large memory |
| 87 | + #check(ExtType(0x42, b'Z'*0xffffffff), |
| 88 | + # b'\xc9\xff\xff\xff\xff\x42' + b'Z'*0xffffffff) |
0 commit comments