Spaces:
Sleeping
Sleeping
File size: 1,848 Bytes
f69e608 | 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 | """
Unit tests for the self-healing adapter.
"""
import pytest
from modules.adaptation import Adapter
@pytest.fixture
def adapter():
return Adapter()
class TestAdapter:
"""Tests for the prompt adaptation engine."""
def test_normal_returns_base_prompt(self, adapter):
prompt = adapter.adapt_prompt("normal")
assert "RetailMind" in prompt
assert "ACTIVE ADAPTATION" not in prompt
def test_price_sensitive_injects_rules(self, adapter):
prompt = adapter.adapt_prompt("price_sensitive")
assert "PRICE SENSITIVITY" in prompt
assert "cheapest" in prompt.lower()
def test_summer_shift_injects_rules(self, adapter):
prompt = adapter.adapt_prompt("summer_shift")
assert "SEASONAL SHIFT" in prompt
assert "lightweight" in prompt.lower()
def test_eco_trend_injects_rules(self, adapter):
prompt = adapter.adapt_prompt("eco_trend")
assert "SUSTAINABILITY" in prompt
assert "recycled" in prompt.lower() or "organic" in prompt.lower()
def test_explanation_differs_per_state(self, adapter):
explanations = set()
for state in ["normal", "price_sensitive", "summer_shift", "eco_trend"]:
explanations.add(adapter.get_explanation(state))
assert len(explanations) == 4, "Each state should produce a unique explanation"
def test_label_differs_per_state(self, adapter):
labels = set()
for state in ["normal", "price_sensitive", "summer_shift", "eco_trend"]:
labels.add(adapter.get_label(state))
assert len(labels) == 4, "Each state should produce a unique label"
def test_base_prompt_contains_anti_hallucination(self, adapter):
prompt = adapter.adapt_prompt("normal")
assert "ONLY recommend" in prompt or "only recommend" in prompt.lower()
|