test_generated.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from erlpack import Atom, pack, unpack
  2. def test_pack_string():
  3. assert pack('string') == '\x83m\x00\x00\x00\x06string'
  4. def test_unpack_string():
  5. assert unpack('\x83m\x00\x00\x00\x06string') == 'string'
  6. def test_pack_empty_list():
  7. assert pack([]) == '\x83j'
  8. def test_unpack_empty_list():
  9. assert unpack('\x83j') == []
  10. def test_pack_large_int():
  11. assert pack(127552384489488384L) == '\x83n\x08\x00\x00\x00\xc0\xc77(\xc5\x01'
  12. def test_unpack_large_int():
  13. assert unpack('\x83n\x08\x00\x00\x00\xc0\xc77(\xc5\x01') == 127552384489488384L
  14. def test_pack_basic_atom():
  15. assert pack(Atom('hi')) == '\x83s\x02hi'
  16. def test_unpack_basic_atom():
  17. assert unpack('\x83d\x00\x02hi') == Atom('hi')
  18. def test_pack_kitchen_sink():
  19. assert pack([Atom('someatom'), (Atom('some'), Atom('other'), 'tuple'), ['maybe', 1, []], ('with', (Atom('embedded'), ['tuples and lists']), None), 127542384389482384L, 5334.32, 102, -1394, -349.2, -498384595043, [{Atom('a'): 'map', Atom('also'): ('tuples', ['and'], ['lists']), Atom('with'): 'binaries'}, {Atom('a'): 'anotherone', 3: 'int keys'}], {(Atom('something'),): 'else'}]) == '\x83l\x00\x00\x00\x0cs\x08someatomh\x03s\x04somes\x05otherm\x00\x00\x00\x05tuplel\x00\x00\x00\x03m\x00\x00\x00\x05maybea\x01jjh\x03m\x00\x00\x00\x04withh\x02s\x08embeddedl\x00\x00\x00\x01m\x00\x00\x00\x10tuples and listsjs\x03niln\x08\x00\x90gWs\x1f\x1f\xc5\x01F@\xb4\xd6Q\xeb\x85\x1e\xb8afb\xff\xff\xfa\x8eF\xc0u\xd333333n\x05\x01ch\t\ntl\x00\x00\x00\x02t\x00\x00\x00\x03s\x01am\x00\x00\x00\x03maps\x04alsoh\x03m\x00\x00\x00\x06tuplesl\x00\x00\x00\x01m\x00\x00\x00\x03andjl\x00\x00\x00\x01m\x00\x00\x00\x05listsjs\x04withm\x00\x00\x00\x08binariest\x00\x00\x00\x02s\x01am\x00\x00\x00\nanotheronea\x03m\x00\x00\x00\x08int keysjt\x00\x00\x00\x01h\x01s\tsomethingm\x00\x00\x00\x04elsej'
  20. def test_unpack_kitchen_sink():
  21. assert unpack('\x83l\x00\x00\x00\x0cd\x00\x08someatomh\x03d\x00\x04somed\x00\x05otherm\x00\x00\x00\x05tuplel\x00\x00\x00\x03m\x00\x00\x00\x05maybea\x01jjh\x03m\x00\x00\x00\x04withh\x02d\x00\x08embeddedl\x00\x00\x00\x01m\x00\x00\x00\x10tuples and listsjd\x00\x03niln\x08\x00\x90gWs\x1f\x1f\xc5\x01F@\xb4\xd6Q\xeb\x85\x1e\xb8afb\xff\xff\xfa\x8eF\xc0u\xd333333n\x05\x01ch\t\ntl\x00\x00\x00\x02t\x00\x00\x00\x03d\x00\x01am\x00\x00\x00\x03mapd\x00\x04alsoh\x03m\x00\x00\x00\x06tuplesl\x00\x00\x00\x01m\x00\x00\x00\x03andjl\x00\x00\x00\x01m\x00\x00\x00\x05listsjd\x00\x04withm\x00\x00\x00\x08binariest\x00\x00\x00\x02a\x03m\x00\x00\x00\x08int keysd\x00\x01am\x00\x00\x00\nanotheronejt\x00\x00\x00\x01h\x01d\x00\tsomethingm\x00\x00\x00\x04elsej') == [Atom('someatom'), (Atom('some'), Atom('other'), 'tuple'), ['maybe', 1, []], ('with', (Atom('embedded'), ['tuples and lists']), None), 127542384389482384L, 5334.32, 102, -1394, -349.2, -498384595043, [{Atom('a'): 'map', Atom('also'): ('tuples', ['and'], ['lists']), Atom('with'): 'binaries'}, {Atom('a'): 'anotherone', 3: 'int keys'}], {(Atom('something'),): 'else'}]
  22. def test_pack_float():
  23. assert pack(123.45) == '\x83F@^\xdc\xcc\xcc\xcc\xcc\xcd'
  24. def test_unpack_float():
  25. assert unpack('\x83F@^\xdc\xcc\xcc\xcc\xcc\xcd') == 123.45
  26. def test_pack_binary():
  27. assert pack('alsdjaljf') == '\x83m\x00\x00\x00\talsdjaljf'
  28. def test_unpack_binary():
  29. assert unpack('\x83m\x00\x00\x00\talsdjaljf') == 'alsdjaljf'
  30. def test_pack_int():
  31. assert pack(12345) == '\x83b\x00\x0009'
  32. def test_unpack_int():
  33. assert unpack('\x83b\x00\x0009') == 12345
  34. def test_pack_empty_dictionary():
  35. assert pack(()) == '\x83h\x00'
  36. def test_unpack_empty_dictionary():
  37. assert unpack('\x83h\x00') == ()