File size: 1,823 Bytes
8a87cbb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import pytest

from aegis.core.tool_registry import (
    DuplicateToolError,
    ToolNotFoundError,
    ToolRegistry,
)


class StubTool:
    def __init__(self, name: str) -> None:
        self.name = name


def test_registry_registers_and_resolves_tool() -> None:
    tool = StubTool("calculator")
    registry = ToolRegistry()

    registry.register(tool)

    assert registry.get("calculator") is tool
    assert registry.contains("calculator") is True
    assert len(registry) == 1


def test_registry_accepts_initial_tools() -> None:
    calculator = StubTool("calculator")
    search = StubTool("search")

    registry = ToolRegistry([calculator, search])

    assert registry.get("calculator") is calculator
    assert registry.get("search") is search
    assert len(registry) == 2


def test_registry_rejects_duplicate_tool_names() -> None:
    registry = ToolRegistry([StubTool("calculator")])

    with pytest.raises(DuplicateToolError):
        registry.register(StubTool("calculator"))


def test_registry_raises_when_tool_is_missing() -> None:
    registry = ToolRegistry()

    with pytest.raises(ToolNotFoundError):
        registry.get("missing")


def test_registry_returns_sorted_names() -> None:
    registry = ToolRegistry(
        [
            StubTool("search"),
            StubTool("calculator"),
        ]
    )

    assert registry.names() == ("calculator", "search")


def test_registry_normalizes_tool_names() -> None:
    tool = StubTool("  calculator  ")
    registry = ToolRegistry([tool])

    assert registry.contains("calculator") is True
    assert registry.get(" calculator ") is tool


def test_registry_rejects_empty_tool_name() -> None:
    registry = ToolRegistry()

    with pytest.raises(ValueError, match="Tool name cannot be empty"):
        registry.register(StubTool("   "))