diff options
| -rw-r--r-- | kernel/kapi/devices/interface_registry.cpp | 3 | ||||
| -rw-r--r-- | kernel/kapi/devices/interface_registry.tests.cpp | 16 |
2 files changed, 15 insertions, 4 deletions
diff --git a/kernel/kapi/devices/interface_registry.cpp b/kernel/kapi/devices/interface_registry.cpp index 2ff42aa3..58364d0a 100644 --- a/kernel/kapi/devices/interface_registry.cpp +++ b/kernel/kapi/devices/interface_registry.cpp @@ -87,8 +87,7 @@ namespace kapi::devices auto interface_registry::resolve(interface interface, std::string_view name) -> void * { - auto found = std::ranges::find_if( - m_entries, [&](auto e) { return e.interface() == interface && e.name() == name && e.device(); }); + auto found = std::ranges::find_if(m_entries, [&](auto e) { return e.name() == name && e.device(); }); if (found == m_entries.cend()) { diff --git a/kernel/kapi/devices/interface_registry.tests.cpp b/kernel/kapi/devices/interface_registry.tests.cpp index f82e867e..1982edbf 100644 --- a/kernel/kapi/devices/interface_registry.tests.cpp +++ b/kernel/kapi/devices/interface_registry.tests.cpp @@ -27,6 +27,13 @@ namespace } }; + struct unimplemented_device + { + constexpr auto static id = kapi::devices::interface{"unimplemented"}; + + virtual ~unimplemented_device() = default; + }; + struct test_device final : kapi::devices::device, probe_device { explicit test_device(int value, const_device & const_device) @@ -136,9 +143,14 @@ SCENARIO("Publishing and finding a device", "[kapi][devices][interface_registry] REQUIRE(registry.resolve<probe_device>("probe0")); } - THEN("find for an unpublished capability does not find a device") + THEN("resolve finds a capability the device implements but never published") + { + REQUIRE(registry.resolve<const_device>("probe0")); + } + + THEN("resolve for a capability the device implements nowhere at all does not find anything") { - REQUIRE_FALSE(registry.resolve<const_device>("probe0")); + REQUIRE_FALSE(registry.resolve<unimplemented_device>("probe0")); } THEN("find for an unpublished device does not find a device") |
