|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import sys |
|
from dill.temp import dump, dump_source, dumpIO, dumpIO_source |
|
from dill.temp import load, load_source, loadIO, loadIO_source |
|
WINDOWS = sys.platform[:3] == 'win' |
|
|
|
|
|
f = lambda x: x**2 |
|
x = [1,2,3,4,5] |
|
|
|
|
|
def test_code_to_tempfile(): |
|
if not WINDOWS: |
|
pyfile = dump_source(f, alias='_f') |
|
_f = load_source(pyfile) |
|
assert _f(4) == f(4) |
|
|
|
|
|
def test_code_to_stream(): |
|
pyfile = dumpIO_source(f, alias='_f') |
|
_f = loadIO_source(pyfile) |
|
assert _f(4) == f(4) |
|
|
|
|
|
def test_pickle_to_tempfile(): |
|
if not WINDOWS: |
|
dumpfile = dump(x) |
|
_x = load(dumpfile) |
|
assert _x == x |
|
|
|
|
|
def test_pickle_to_stream(): |
|
dumpfile = dumpIO(x) |
|
_x = loadIO(dumpfile) |
|
assert _x == x |
|
|
|
|
|
f = lambda x: x**2 |
|
def g(x): return f(x) - x |
|
|
|
def h(x): |
|
def g(x): return x |
|
return g(x) - x |
|
|
|
class Foo(object): |
|
def bar(self, x): |
|
return x*x+x |
|
_foo = Foo() |
|
|
|
def add(x,y): |
|
return x+y |
|
|
|
|
|
squared = lambda x:x**2 |
|
|
|
class Bar: |
|
pass |
|
_bar = Bar() |
|
|
|
|
|
|
|
def test_two_arg_functions(): |
|
for obj in [add]: |
|
pyfile = dumpIO_source(obj, alias='_obj') |
|
_obj = loadIO_source(pyfile) |
|
assert _obj(4,2) == obj(4,2) |
|
|
|
|
|
def test_one_arg_functions(): |
|
for obj in [g, h, squared]: |
|
pyfile = dumpIO_source(obj, alias='_obj') |
|
_obj = loadIO_source(pyfile) |
|
assert _obj(4) == obj(4) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_the_rest(): |
|
for obj in [Bar, Foo, Foo.bar, _foo.bar]: |
|
pyfile = dumpIO_source(obj, alias='_obj') |
|
_obj = loadIO_source(pyfile) |
|
assert _obj.__name__ == obj.__name__ |
|
|
|
|
|
if __name__ == '__main__': |
|
test_code_to_tempfile() |
|
test_code_to_stream() |
|
test_pickle_to_tempfile() |
|
test_pickle_to_stream() |
|
test_two_arg_functions() |
|
test_one_arg_functions() |
|
test_the_rest() |
|
|