mirror of
https://github.com/NicolasBohn/NexQuant.git
synced 2026-08-04 18:57:44 +00:00
test: add 42 tests for remaining modules (conf, kb, interactor, fmt, llm_utils, graph)
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
"""Tests for knowledge graph and task_loader."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
PROJECT_ROOT = Path(__file__).parent.parent.parent
|
||||
sys.path.insert(0, str(PROJECT_ROOT))
|
||||
|
||||
|
||||
class TestUndirectedNode:
|
||||
def test_init(self):
|
||||
from rdagent.components.knowledge_management.graph import UndirectedNode
|
||||
n = UndirectedNode(content="test", label="component")
|
||||
assert n.content == "test"
|
||||
assert n.label == "component"
|
||||
assert n.id is not None
|
||||
assert isinstance(n.neighbors, set)
|
||||
assert len(n.neighbors) == 0
|
||||
|
||||
def test_add_neighbor_bidirectional(self):
|
||||
from rdagent.components.knowledge_management.graph import UndirectedNode
|
||||
a = UndirectedNode(content="a")
|
||||
b = UndirectedNode(content="b")
|
||||
a.add_neighbor(b)
|
||||
assert b in a.neighbors
|
||||
assert a in b.neighbors
|
||||
|
||||
def test_remove_neighbor(self):
|
||||
from rdagent.components.knowledge_management.graph import UndirectedNode
|
||||
a = UndirectedNode(content="a")
|
||||
b = UndirectedNode(content="b")
|
||||
a.add_neighbor(b)
|
||||
a.remove_neighbor(b)
|
||||
assert b not in a.neighbors
|
||||
assert a not in b.neighbors
|
||||
|
||||
def test_remove_nonexistent_noop(self):
|
||||
from rdagent.components.knowledge_management.graph import UndirectedNode
|
||||
a = UndirectedNode(content="a")
|
||||
b = UndirectedNode(content="b")
|
||||
a.remove_neighbor(b) # should not raise
|
||||
|
||||
def test_get_neighbors(self):
|
||||
from rdagent.components.knowledge_management.graph import UndirectedNode
|
||||
a = UndirectedNode(content="a")
|
||||
b = UndirectedNode(content="b")
|
||||
c = UndirectedNode(content="c")
|
||||
a.add_neighbor(b)
|
||||
a.add_neighbor(c)
|
||||
assert a.get_neighbors() == {b, c}
|
||||
|
||||
def test_rejects_non_string_content(self):
|
||||
from rdagent.components.knowledge_management.graph import UndirectedNode
|
||||
with pytest.raises(TypeError, match="string"):
|
||||
UndirectedNode(content=123)
|
||||
|
||||
def test_string_representation(self):
|
||||
from rdagent.components.knowledge_management.graph import UndirectedNode
|
||||
n = UndirectedNode(content="hello", label="test")
|
||||
s = str(n)
|
||||
assert "UndirectedNode" in s
|
||||
assert "hello" in s
|
||||
assert "test" in s
|
||||
|
||||
|
||||
class TestGraphBase:
|
||||
def test_init_empty(self):
|
||||
from rdagent.components.knowledge_management.graph import Graph
|
||||
g = Graph()
|
||||
assert g.size() == 0
|
||||
assert g.get_all_nodes() == []
|
||||
|
||||
def test_get_node_nonexistent(self):
|
||||
from rdagent.components.knowledge_management.graph import Graph
|
||||
g = Graph()
|
||||
assert g.get_node("nonexistent") is None
|
||||
|
||||
def test_get_all_nodes_by_label_list(self, tmp_path):
|
||||
from rdagent.components.knowledge_management.graph import Graph, UndirectedNode
|
||||
g = Graph()
|
||||
|
||||
# Add nodes directly to internal dict
|
||||
n1 = UndirectedNode(content="a", label="component")
|
||||
n2 = UndirectedNode(content="b", label="error")
|
||||
n3 = UndirectedNode(content="c", label="component")
|
||||
g.nodes[n1.id] = n1
|
||||
g.nodes[n2.id] = n2
|
||||
g.nodes[n3.id] = n3
|
||||
|
||||
components = g.get_all_nodes_by_label_list(["component"])
|
||||
assert len(components) == 2
|
||||
labels = [n.label for n in components]
|
||||
assert all(l == "component" for l in labels)
|
||||
|
||||
|
||||
class TestVectorBase:
|
||||
def test_cosine_distance_identical_is_zero(self):
|
||||
from rdagent.components.knowledge_management.vector_base import cosine
|
||||
import numpy as np
|
||||
dist = cosine(np.array([1.0, 0.0]), np.array([1.0, 0.0]))
|
||||
assert dist == pytest.approx(0.0) # cosine distance, not similarity
|
||||
|
||||
def test_cosine_distance_orthogonal(self):
|
||||
from rdagent.components.knowledge_management.vector_base import cosine
|
||||
import numpy as np
|
||||
dist = cosine(np.array([1.0, 0.0]), np.array([0.0, 1.0]))
|
||||
assert dist == pytest.approx(1.0)
|
||||
Reference in New Issue
Block a user