diff --git a/python/dune/perftool/generation/backend.py b/python/dune/perftool/generation/backend.py index 5446fabd91eef32dda25957cfd2a7d9a93e3cb02..27356c937f1c8617297736a34e74d540dd0996d2 100644 --- a/python/dune/perftool/generation/backend.py +++ b/python/dune/perftool/generation/backend.py @@ -12,11 +12,12 @@ class FuncProxy(Record): def register_backend(interface, name, func): _backend_mapping.setdefault(interface, {}) + assert name not in _backend_mapping[interface] _backend_mapping[interface][name] = func -def backend(interface=None, name=None): - assert interface and name +def backend(interface=None, name='default'): + assert interface def _dec(func): if not isinstance(func, _RegisteredFunction): diff --git a/python/test/dune/perftool/generation/test_backend.py b/python/test/dune/perftool/generation/test_backend.py new file mode 100644 index 0000000000000000000000000000000000000000..2a1e001cd9da6dad0d0d18c46d2da47d9506da7c --- /dev/null +++ b/python/test/dune/perftool/generation/test_backend.py @@ -0,0 +1,35 @@ +from dune.perftool.generation import (backend, + get_backend, + generator_factory, + ) + + +@backend(interface="foo", name="f1") +@generator_factory() +def f1(): + return 1 + + +@generator_factory() +@backend(interface="foo", name="f2") +def f2(): + return 2 + + +@backend(interface="bar", name="f3") +@generator_factory() +def f3(): + return 3 + + +@generator_factory() +@backend(interface="bar", name="f4") +def f4(): + return 4 + + +def test_backend(): + assert get_backend(interface="foo", selector=lambda: "f1")() == 1 + assert get_backend(interface="foo", selector=lambda: "f2")() == 2 + assert get_backend(interface="bar", selector=lambda: "f3")() == 3 + assert get_backend(interface="bar", selector=lambda: "f4")() == 4