@@ -712,7 +712,7 @@ TEST(version_is_0_11_0_compat) {
712712 auto * s = makeTestServer ();
713713 String req = R"( {"jsonrpc":"2.0","id":250,"method":"initialize","params":{}})" ;
714714 String resp = s->_processJsonRpc (req);
715- ASSERT_STR_CONTAINS (resp.c_str (), " \" version\" :\" 0.27.3 \" " );
715+ ASSERT_STR_CONTAINS (resp.c_str (), " \" version\" :\" 0.27.4 \" " );
716716}
717717
718718// ── v0.6.0 Tests: Tool Annotations ────────────────────────────────────
@@ -1567,7 +1567,7 @@ TEST(version_0_11_0) {
15671567 Server* s = makeTestServer ();
15681568 String req = R"( {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","clientInfo":{"name":"test"}}})" ;
15691569 String resp = s->_processJsonRpc (req);
1570- ASSERT_STR_CONTAINS (resp.c_str (), " 0.27.3 " );
1570+ ASSERT_STR_CONTAINS (resp.c_str (), " 0.27.4 " );
15711571}
15721572
15731573// ── Watchdog Tool Tests ────────────────────────────────────────────────
@@ -1811,7 +1811,7 @@ TEST(diagnostics_version_macros) {
18111811 ASSERT (strlen (MCPD_VERSION ) > 0 );
18121812 ASSERT (strlen (MCPD_MCP_PROTOCOL_VERSION ) > 0 );
18131813 ASSERT_STR_CONTAINS (MCPD_MCP_PROTOCOL_VERSION , " 2025" );
1814- ASSERT_STR_CONTAINS (MCPD_VERSION , " 0.27.3 " );
1814+ ASSERT_STR_CONTAINS (MCPD_VERSION , " 0.27.4 " );
18151815}
18161816
18171817// ── Batch JSON-RPC edge cases ──────────────────────────────────────────
@@ -2824,6 +2824,59 @@ TEST(relay_interlock_concept) {
28242824 ASSERT_STR_CONTAINS (resp.c_str (), " heater turned OFF" );
28252825}
28262826
2827+ // ── Remove Prompt/Root/ResourceTemplate Tests ──────────────────────────
2828+
2829+ TEST (remove_prompt_by_name) {
2830+ auto * s = makeTestServer ();
2831+ // Server already has "greet" prompt from makeTestServer
2832+ ASSERT (s->removePrompt (" greet" ) == true );
2833+ String req = R"( {"jsonrpc":"2.0","id":900,"method":"prompts/list","params":{}})" ;
2834+ String resp = s->_processJsonRpc (req);
2835+ ASSERT_STR_CONTAINS (resp.c_str (), " \" prompts\" :[]" );
2836+ }
2837+
2838+ TEST (remove_prompt_nonexistent) {
2839+ auto * s = makeTestServer ();
2840+ ASSERT (s->removePrompt (" no_such_prompt" ) == false );
2841+ }
2842+
2843+ TEST (remove_prompt_idempotent) {
2844+ auto * s = makeTestServer ();
2845+ ASSERT (s->removePrompt (" greet" ) == true );
2846+ ASSERT (s->removePrompt (" greet" ) == false );
2847+ }
2848+
2849+ TEST (remove_root_by_uri) {
2850+ auto * s = makeTestServer ();
2851+ s->addRoot (" file:///workspace" , " Workspace" );
2852+ s->addRoot (" file:///config" , " Config" );
2853+ ASSERT (s->removeRoot (" file:///workspace" ) == true );
2854+ String req = R"( {"jsonrpc":"2.0","id":910,"method":"roots/list","params":{}})" ;
2855+ String resp = s->_processJsonRpc (req);
2856+ ASSERT_STR_NOT_CONTAINS (resp.c_str (), " workspace" );
2857+ ASSERT_STR_CONTAINS (resp.c_str (), " config" );
2858+ }
2859+
2860+ TEST (remove_root_nonexistent) {
2861+ auto * s = makeTestServer ();
2862+ ASSERT (s->removeRoot (" file:///nope" ) == false );
2863+ }
2864+
2865+ TEST (remove_resource_template_by_uri) {
2866+ auto * s = makeTestServer ();
2867+ s->addResourceTemplate (" sensor://{id}/reading" , " Sensor" , " Read sensor" , " application/json" ,
2868+ [](const std::map<String, String>&) -> String { return " {}" ; });
2869+ ASSERT (s->removeResourceTemplate (" sensor://{id}/reading" ) == true );
2870+ String req = R"( {"jsonrpc":"2.0","id":920,"method":"resources/templates/list","params":{}})" ;
2871+ String resp = s->_processJsonRpc (req);
2872+ ASSERT_STR_CONTAINS (resp.c_str (), " \" resourceTemplates\" :[]" );
2873+ }
2874+
2875+ TEST (remove_resource_template_nonexistent) {
2876+ auto * s = makeTestServer ();
2877+ ASSERT (s->removeResourceTemplate (" nope://{x}" ) == false );
2878+ }
2879+
28272880// ── Main ───────────────────────────────────────────────────────────────
28282881
28292882int main () {
0 commit comments