Private
Public Access
0
0
Files
manual_slop/tests/test_discussion_metrics.py
ed 34a7f00cb3 test: Add extensive coverage for discussion metrics and compression
- Add tests/test_discussion_compression.py to verify AI sub-agent compression logic across Gemini, Anthropic, DeepSeek, and Gemini CLI providers.
- Add tests/test_discussion_metrics.py to verify AppController correctly extracts and accumulates token usage (input/output/cache) and logs token history.
2026-06-02 01:42:41 -04:00

64 lines
2.0 KiB
Python

import pytest
from src.app_controller import AppController
@pytest.fixture
def controller():
c = AppController()
c.init_state()
return c
def test_on_comms_entry_updates_metrics(controller: AppController):
# Initial state
assert controller.session_usage["input_tokens"] == 0
assert controller.session_usage["output_tokens"] == 0
assert len(controller._token_history) == 0
# Simulate an AI response with usage
payload = {
"text": "Hello world",
"usage": {
"input_tokens": 100,
"output_tokens": 50,
"cache_read_input_tokens": 10,
"cache_creation_input_tokens": 5,
"total_tokens": 165
},
"model": "test-model"
}
entry = {
"kind": "response",
"payload": payload,
"ts": "2024-01-01T00:00:00"
}
controller._on_comms_entry(entry)
# Verify metrics updated
assert controller.session_usage["input_tokens"] == 100
assert controller.session_usage["output_tokens"] == 50
assert controller.session_usage["cache_read_input_tokens"] == 10
assert controller.session_usage["cache_creation_input_tokens"] == 5
assert controller.session_usage["total_tokens"] == 165
# Verify token history recorded
assert len(controller._token_history) == 1
assert controller._token_history[0]["input"] == 100
assert controller._token_history[0]["output"] == 50
assert controller._token_history[0]["model"] == "test-model"
def test_on_comms_entry_accumulates_metrics(controller: AppController):
# First response
controller._on_comms_entry({
"kind": "response",
"payload": {"usage": {"input_tokens": 100, "output_tokens": 50}}
})
# Second response
controller._on_comms_entry({
"kind": "response",
"payload": {"usage": {"input_tokens": 200, "output_tokens": 20}}
})
assert controller.session_usage["input_tokens"] == 300
assert controller.session_usage["output_tokens"] == 70
assert len(controller._token_history) == 2