from __future__ import annotations
import unittest
from tools.collection.collect_arxiv import ArxivSearchParser, classify
SEARCH_RESULT = """
-
arXiv:2607.12345
A Trace-Grounded Benchmark for Tool-Using Agents
Authors:
Alice Example, Bob Example
cs.AI
cs.LG
We evaluate an LLM agent with tools and deterministic verification.
Less
Submitted 24 July, 2026; originally announced July 2026.
"""
class ArxivSearchParserTest(unittest.TestCase):
def test_parses_search_result_into_api_compatible_record(self) -> None:
parser = ArxivSearchParser()
parser.feed(SEARCH_RESULT)
self.assertEqual(len(parser.records), 1)
record = parser.records[0]
self.assertEqual(record["id"], "2607.12345")
self.assertEqual(record["url"], "https://arxiv.org/abs/2607.12345")
self.assertEqual(record["published"], "2026-07-24")
self.assertEqual(record["updated"], "2026-07-24")
self.assertEqual(record["authors"], ["Alice Example", "Bob Example"])
self.assertEqual(record["categories"], ["cs.AI", "cs.LG"])
self.assertNotIn("Less", record["summary"])
def test_parsed_record_uses_existing_classifier(self) -> None:
parser = ArxivSearchParser()
parser.feed(SEARCH_RESULT)
topics, score, relevance = classify(parser.records[0], {"agent-evaluation", "tool-use"})
self.assertIn("agent-evaluation", topics)
self.assertIn("tool-use", topics)
self.assertGreaterEqual(score, 7)
self.assertIn(relevance, {"medium", "high"})
if __name__ == "__main__":
unittest.main()