test_newspec.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # coding: utf-8
  2. from pandas.io.msgpack import ExtType, packb, unpackb
  3. def test_str8():
  4. header = b'\xd9'
  5. data = b'x' * 32
  6. b = packb(data.decode(), use_bin_type=True)
  7. assert len(b) == len(data) + 2
  8. assert b[0:2] == header + b'\x20'
  9. assert b[2:] == data
  10. assert unpackb(b) == data
  11. data = b'x' * 255
  12. b = packb(data.decode(), use_bin_type=True)
  13. assert len(b) == len(data) + 2
  14. assert b[0:2] == header + b'\xff'
  15. assert b[2:] == data
  16. assert unpackb(b) == data
  17. def test_bin8():
  18. header = b'\xc4'
  19. data = b''
  20. b = packb(data, use_bin_type=True)
  21. assert len(b) == len(data) + 2
  22. assert b[0:2] == header + b'\x00'
  23. assert b[2:] == data
  24. assert unpackb(b) == data
  25. data = b'x' * 255
  26. b = packb(data, use_bin_type=True)
  27. assert len(b) == len(data) + 2
  28. assert b[0:2] == header + b'\xff'
  29. assert b[2:] == data
  30. assert unpackb(b) == data
  31. def test_bin16():
  32. header = b'\xc5'
  33. data = b'x' * 256
  34. b = packb(data, use_bin_type=True)
  35. assert len(b) == len(data) + 3
  36. assert b[0:1] == header
  37. assert b[1:3] == b'\x01\x00'
  38. assert b[3:] == data
  39. assert unpackb(b) == data
  40. data = b'x' * 65535
  41. b = packb(data, use_bin_type=True)
  42. assert len(b) == len(data) + 3
  43. assert b[0:1] == header
  44. assert b[1:3] == b'\xff\xff'
  45. assert b[3:] == data
  46. assert unpackb(b) == data
  47. def test_bin32():
  48. header = b'\xc6'
  49. data = b'x' * 65536
  50. b = packb(data, use_bin_type=True)
  51. assert len(b) == len(data) + 5
  52. assert b[0:1] == header
  53. assert b[1:5] == b'\x00\x01\x00\x00'
  54. assert b[5:] == data
  55. assert unpackb(b) == data
  56. def test_ext():
  57. def check(ext, packed):
  58. assert packb(ext) == packed
  59. assert unpackb(packed) == ext
  60. check(ExtType(0x42, b'Z'), b'\xd4\x42Z') # fixext 1
  61. check(ExtType(0x42, b'ZZ'), b'\xd5\x42ZZ') # fixext 2
  62. check(ExtType(0x42, b'Z' * 4), b'\xd6\x42' + b'Z' * 4) # fixext 4
  63. check(ExtType(0x42, b'Z' * 8), b'\xd7\x42' + b'Z' * 8) # fixext 8
  64. check(ExtType(0x42, b'Z' * 16), b'\xd8\x42' + b'Z' * 16) # fixext 16
  65. # ext 8
  66. check(ExtType(0x42, b''), b'\xc7\x00\x42')
  67. check(ExtType(0x42, b'Z' * 255), b'\xc7\xff\x42' + b'Z' * 255)
  68. # ext 16
  69. check(ExtType(0x42, b'Z' * 256), b'\xc8\x01\x00\x42' + b'Z' * 256)
  70. check(ExtType(0x42, b'Z' * 0xffff), b'\xc8\xff\xff\x42' + b'Z' * 0xffff)
  71. # ext 32
  72. check(
  73. ExtType(0x42, b'Z' *
  74. 0x10000), b'\xc9\x00\x01\x00\x00\x42' + b'Z' * 0x10000)
  75. # needs large memory
  76. # check(ExtType(0x42, b'Z'*0xffffffff),
  77. # b'\xc9\xff\xff\xff\xff\x42' + b'Z'*0xffffffff)