def test_serialization(): ax = DummyA(1, 10) bx = DummyB('2', 2) fun_serializer = FunctionSerializer() a = InMemoryDataSource(DummyA) b = InMemoryDataSource(DummyB) raw = RawDataSource() e = 'smache:functions:' \ '"tests.integration.test_function_serialization/score"' \ '~~~1~~~"2"~~~500' \ '***(dp0\nS\'resolved\'\np1\nI01\ns.' computed_fun = ComputedFunction(score, [a, b, raw]) key = fun_serializer.serialized_fun(computed_fun, ax, bx, 500, resolved=True) assert key == e expected_deserialization = ( "tests.integration.test_function_serialization/score", [1, '2', 500], {"resolved": True} ) assert fun_serializer.deserialized_fun(key) == expected_deserialization
def test_de_and_serialization_of_no_arg_fun(): fun_serializer = FunctionSerializer() computed_fun = ComputedFunction(score, []) key = fun_serializer.serialized_fun(computed_fun) assert key == 'smache:functions:' \ '"tests.integration.test_function_serialization/score"' assert fun_serializer.deserialized_fun(key) == ( "tests.integration.test_function_serialization/score", [], {} )
def test_computed_key_is_build_from_serializer(monkeypatch, computed_fun): serializer = FunctionSerializer() computed_repo = ComputedFunctionRepository(serializer) computed_repo.add(computed_fun) serialized_fun = 'my_serialized_fun' monkeypatch.setattr(serializer, 'serialized_fun', lambda a, b: serialized_fun) assert computed_repo.computed_key(fun_fun, []) == serialized_fun
def computed_repo(): serializer = FunctionSerializer() yield ComputedFunctionRepository(serializer)