From e79706967decf09ae600a4f97e02ce04e851e5cb Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Tue, 25 Oct 2016 15:39:32 +0200 Subject: [PATCH] Add testing for backend selection --- python/dune/perftool/generation/backend.py | 5 +-- .../dune/perftool/generation/test_backend.py | 35 +++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 python/test/dune/perftool/generation/test_backend.py diff --git a/python/dune/perftool/generation/backend.py b/python/dune/perftool/generation/backend.py index 5446fabd..27356c93 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 00000000..2a1e001c --- /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 -- GitLab