aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-07-24 15:21:41 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-07-24 15:21:41 +0200
commit88db123ae14fd2de55a9cd986dade018839cb4d4 (patch)
treee4d63f97662d2fd29847ee288bee61abc024b2e7
parent6b539cfdf04f8f647ad953431be00e3fa561a65c (diff)
downloadkernel-88db123ae14fd2de55a9cd986dade018839cb4d4.tar.xz
kernel-88db123ae14fd2de55a9cd986dade018839cb4d4.zip
kapi: fix interface registry tests
-rw-r--r--kernel/kapi/devices/interface_registry.cpp3
-rw-r--r--kernel/kapi/devices/interface_registry.tests.cpp16
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")