rust-sdk/crates/rmcp/tests/test_handler_wrappers.rs
Taylor Ninesling 81f858836d
feat: provide blanket implementations for ClientHandler and ServerHandler traits (#609)
* feat!: implement ServerHandler for Box<H> and Arc<H> where H is a ServerHandler

* feat!: implement ClientHandler for Box<H> and Arc<H> where H is a ClientHandler

* test: test Box and Arc have blanket implementations for handler traits

* refactor: deduplicate blanket implementations with macros
2026-01-14 10:53:05 -05:00

28 lines
910 B
Rust

// cargo test --test test_handler_wrappers --features "client server"
mod common;
use std::sync::Arc;
use common::handlers::{TestClientHandler, TestServer};
use rmcp::{ClientHandler, ServerHandler};
#[test]
fn test_wrapped_server_handlers() {
// This test asserts that, when T: ServerHandler, both Box<T> and Arc<T> also implement ServerHandler.
fn accepts_server_handler<H: ServerHandler>(_handler: H) {}
accepts_server_handler(Box::new(TestServer::new()));
accepts_server_handler(Arc::new(TestServer::new()));
}
#[test]
fn test_wrapped_client_handlers() {
// This test asserts that, when T: ClientHandler, both Box<T> and Arc<T> also implement ClientHandler.
fn accepts_client_handler<H: ClientHandler>(_handler: H) {}
let client = TestClientHandler::new(false, false);
accepts_client_handler(Box::new(client.clone()));
accepts_client_handler(Arc::new(client));
}