Files
Assistant/tests/context_compiler/context_compiler_test.go
2026-08-22 11:41:52 +03:00

60 lines
2.5 KiB
Go

package context_compiler_test
import (
"testing"
"git.cin.su/m/Assistant/contracts/capability"
"git.cin.su/m/Assistant/contracts/cognitive"
)
func TestCompileContextOrdersDeduplicatesAndBudgets(t *testing.T) {
bundle, err := cognitive.CompileContext(cognitive.ContextCompileInput{
MaxBytes: 4,
Candidates: []cognitive.ContextCandidate{
{Excerpt: cognitive.ContextExcerpt{ID: "low", Sensitivity: cognitive.SensitivityPublic, Text: "low"}, Relevance: 1},
{Excerpt: cognitive.ContextExcerpt{ID: "high", Sensitivity: cognitive.SensitivityPublic, Text: "éé"}, Relevance: 2},
{Excerpt: cognitive.ContextExcerpt{ID: "high", Sensitivity: cognitive.SensitivityPublic, Text: "hi"}, Relevance: 3},
},
})
if err != nil {
t.Fatal(err)
}
if len(bundle.Excerpts) != 1 || bundle.Excerpts[0].ID != "high" || bundle.Bytes != 2 {
t.Fatalf("unexpected bundle: %#v", bundle)
}
if len(bundle.Omissions) != 2 || bundle.Omissions[0].Reason != "duplicate" || bundle.Omissions[1].Reason != "budget" {
t.Fatalf("unexpected omissions: %#v", bundle.Omissions)
}
}
func TestCompileContextFiltersSensitivityByPolicy(t *testing.T) {
bundle, err := cognitive.CompileContext(cognitive.ContextCompileInput{
MaxBytes: 100,
DataPolicy: capability.DataPolicyExternalMinimizedContext,
Candidates: []cognitive.ContextCandidate{
{Excerpt: cognitive.ContextExcerpt{ID: "public", Sensitivity: cognitive.SensitivityPublic, Text: "ok"}},
{Excerpt: cognitive.ContextExcerpt{ID: "private", Sensitivity: cognitive.SensitivityPrivateAllowed, Text: "private"}},
{Excerpt: cognitive.ContextExcerpt{ID: "secret", Sensitivity: cognitive.SensitivitySecret, Text: "secret"}},
},
})
if err != nil {
t.Fatal(err)
}
if len(bundle.Excerpts) != 1 || bundle.Excerpts[0].ID != "public" {
t.Fatalf("unexpected excerpts: %#v", bundle.Excerpts)
}
if len(bundle.Omissions) != 2 {
t.Fatalf("unexpected omissions: %#v", bundle.Omissions)
}
}
func TestCompileContextAllowsEmptyResultAndRejectsInvalidBudget(t *testing.T) {
if _, err := cognitive.CompileContext(cognitive.ContextCompileInput{}); err == nil {
t.Fatal("expected invalid budget")
}
bundle, err := cognitive.CompileContext(cognitive.ContextCompileInput{MaxBytes: 10, Candidates: []cognitive.ContextCandidate{{Excerpt: cognitive.ContextExcerpt{ID: "secret", Sensitivity: cognitive.SensitivitySecret, Text: "x"}}}})
if err != nil || len(bundle.Excerpts) != 0 || len(bundle.Omissions) != 1 {
t.Fatalf("unexpected empty result: %#v %v", bundle, err)
}
}