Assert.That(ToolSelectionRules.NormalizeSelection([SEARCH_CONFLUENCE]),Is.EquivalentTo(new[]{SEARCH_CONFLUENCE,READ_WEB_PAGE}),"The search only finds pages; without Read Web Page the model could not open a single result.");
Assert.That(ToolSelectionRules.NormalizeSelection([toolId]),Is.EquivalentTo(new[]{toolId}),"Only Search Confluence depends on another tool. Read Web Page in particular does not pull the search in.");
Assert.That(ToolSelectionRules.NormalizeSelection([SEMANTIC_SEARCH,WEB_SEARCH]),Is.EquivalentTo(new[]{WEB_SEARCH}),"Semantic Search offers itself from the data sources of a chat. A template or a plugin naming it would put a tool on the security card that the selection has no say over.");
Assert.That(ToolSelectionRules.NormalizeSelection(once),Is.EquivalentTo(once),"The selection fields normalize whatever they receive, including a selection they normalized themselves a moment ago.");
Assert.That(selected,Is.EquivalentTo(new[]{SEARCH_CONFLUENCE}),"The caller's set, such as the tools of a stored chat template, must not change behind its back.");