// PicoClaw - Ultra-lightweight personal AI agent // Inspired by and based on nanobot: https://github.com/HKUDS/nanobot // License: MIT // // Copyright (c) 2026 PicoClaw contributors package agent import ( "testing" "github.com/sipeed/picoclaw/pkg/config" ) func boolPtr(b bool) *bool { return &b } func TestServerIsDeferred(t *testing.T) { tests := []struct { name string discoveryEnabled bool serverDeferred *bool want bool }{ // --- global false always wins: per-server deferred is ignored --- { name: "global false: per-server deferred=true is ignored", discoveryEnabled: false, serverDeferred: boolPtr(true), want: false, }, { name: "global false: per-server deferred=false stays false", discoveryEnabled: false, serverDeferred: boolPtr(false), want: false, }, // --- global true: per-server override applies --- { name: "global true: per-server deferred=false opts out", discoveryEnabled: true, serverDeferred: boolPtr(false), want: false, }, { name: "global true: per-server deferred=true stays true", discoveryEnabled: true, serverDeferred: boolPtr(true), want: true, }, // --- no per-server override: fall back to global --- { name: "no per-server field, global discovery enabled", discoveryEnabled: true, serverDeferred: nil, want: true, }, { name: "no per-server field, global discovery disabled", discoveryEnabled: false, serverDeferred: nil, want: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { serverCfg := config.MCPServerConfig{Deferred: tt.serverDeferred} got := serverIsDeferred(tt.discoveryEnabled, serverCfg) if got != tt.want { t.Errorf("serverIsDeferred(discoveryEnabled=%v, deferred=%v) = %v, want %v", tt.discoveryEnabled, tt.serverDeferred, got, tt.want) } }) } }