Files
RustPython/extra_tests/snippets/stdlib_marshal.py
2022-05-03 23:47:00 +09:00

79 lines
2.1 KiB
Python

import unittest
import marshal
class MarshalTests(unittest.TestCase):
"""
Testing the (incomplete) marshal module.
"""
def dump_then_load(self, data):
return marshal.loads(marshal.dumps(data))
def _test_marshal(self, data):
self.assertEqual(self.dump_then_load(data), data)
def test_marshal_int(self):
self._test_marshal(0)
self._test_marshal(-1)
self._test_marshal(1)
self._test_marshal(100000000)
def test_marshal_bool(self):
self._test_marshal(True)
self._test_marshal(False)
def test_marshal_float(self):
self._test_marshal(0.0)
self._test_marshal(-10.0)
self._test_marshal(10.0)
def test_marshal_str(self):
self._test_marshal("")
self._test_marshal("Hello, World")
def test_marshal_list(self):
self._test_marshal([])
self._test_marshal([1, "hello", 1.0])
self._test_marshal([[0], ['a','b']])
def test_marshal_tuple(self):
self._test_marshal(())
self._test_marshal((1, "hello", 1.0))
def test_marshal_dict(self):
self._test_marshal({})
self._test_marshal({'a':1, 1:'a'})
self._test_marshal({'a':{'b':2}, 'c':[0.0, 4.0, 6, 9]})
def test_marshal_set(self):
self._test_marshal(set())
self._test_marshal({1, 2, 3})
self._test_marshal({1, 'a', 'b'})
def test_marshal_frozen_set(self):
self._test_marshal(frozenset())
self._test_marshal(frozenset({1, 2, 3}))
self._test_marshal(frozenset({1, 'a', 'b'}))
def test_marshal_bytearray(self):
self.assertEqual(
self.dump_then_load(bytearray([])),
bytearray(b''),
)
self.assertEqual(
self.dump_then_load(bytearray([1, 2])),
bytearray(b'\x01\x02'),
)
def test_roundtrip(self):
orig = compile("1 + 1", "", 'eval')
dumped = marshal.dumps(orig)
loaded = marshal.loads(dumped)
assert eval(loaded) == eval(orig)
if __name__ == "__main__":
unittest.main()