38 lines
1.6 KiB
Go
38 lines
1.6 KiB
Go
package opsconfig
|
|||
|
|
|
||
|
|
import "testing"
|
||
|
|
|
||
|
|
func TestAgentQualityEvaluationMetrics(t *testing.T) {
|
||
|
|
metrics := map[string]any{
|
||
|
|
"report_schema": "agent-eval-report-v1", "suite_sha256": "b5cd3b798a01a48ddf0081f2fcc2a917f93681a3ee2fa55bbf4190466de3bef8",
|
||
|
|
"agent_version": "agent-v1", "model_config_ref": "runtime-config://voice/agent-v1",
|
||
|
|
"environment": "mock", "executed_at": "2026-08-24T10:00:00Z",
|
||
|
|
"cases_total": 10, "cases_passed": 10, "failed_check_count": 0,
|
||
|
|
"conversation_success_rate": 1.0, "first_response_p95_ms": 1200,
|
||
|
|
"interruption_recovery_rate": 1.0, "average_response_chars": 36.5,
|
||
|
|
"salutation_accuracy": 1.0, "memory_accuracy": 1.0, "fabricated_facts": 0,
|
||
|
|
"story_source_completeness": 1.0, "sensitive_information_handling_rate": 1.0,
|
||
|
|
}
|
||
|
|
if !validEvaluationMetrics(EvidenceTypeAgentQualityV1, "PASSED", metrics) {
|
||
|
|
t.Fatal("valid standard Agent quality evidence was rejected")
|
||
|
|
}
|
||
|
|
metrics["cases_passed"] = 9
|
||
|
|
if validEvaluationMetrics(EvidenceTypeAgentQualityV1, "PASSED", metrics) {
|
||
|
|
t.Fatal("incomplete PASSED evidence was accepted")
|
||
|
|
}
|
||
|
|
metrics["failed_check_count"] = 1
|
||
|
|
if !validEvaluationMetrics(EvidenceTypeAgentQualityV1, "FAILED", metrics) {
|
||
|
|
t.Fatal("well-formed FAILED evidence was rejected")
|
||
|
|
}
|
||
|
|
delete(metrics, "memory_accuracy")
|
||
|
|
if validEvaluationMetrics(EvidenceTypeAgentQualityV1, "FAILED", metrics) {
|
||
|
|
t.Fatal("standard evidence missing a required metric was accepted")
|
||
|
|
}
|
||
|
|
if !validEvaluationMetrics(EvidenceTypeGeneric, "PASSED", map[string]any{"legacy": true}) {
|
||
|
|
t.Fatal("generic evaluation compatibility was broken")
|
||
|
|
}
|
||
|
|
if validEvaluationMetrics("UNKNOWN", "PASSED", metrics) {
|
||
|
|
t.Fatal("unknown evidence type was accepted")
|
||
|
|
}
|
||
|
|
}
|