60 lines
2.5 KiB
Go
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)
|
|
}
|
|
}
|