Merge condition evidence without repeated copies
This commit is contained in:
@@ -406,6 +406,35 @@ func TestAnalyzeRequirementsReportsUnresolvedDecisionAndContentConditions(t *tes
|
||||
}
|
||||
}
|
||||
|
||||
func TestConditionEvaluationMergesOwnedEvidence(t *testing.T) {
|
||||
left := conditionEvaluation{missingVariables: map[string]struct{}{"a": {}, "b": {}}, contentInputs: map[string]struct{}{"document": {}}, unsupported: true}
|
||||
right := conditionEvaluation{missingVariables: map[string]struct{}{"b": {}, "c": {}}, inputNameUnknown: true}
|
||||
merged := mergeConditionEvaluations(left, right)
|
||||
if !merged.unsupported || !merged.inputNameUnknown || len(merged.missingVariables) != 3 || len(merged.contentInputs) != 1 {
|
||||
t.Fatalf("merged evidence = %+v", merged)
|
||||
}
|
||||
transferred := mergeConditionEvaluations(conditionEvaluation{}, conditionEvaluation{missingVariables: map[string]struct{}{"only": {}}})
|
||||
if len(transferred.missingVariables) != 1 || transferred.contentInputs != nil {
|
||||
t.Fatalf("transferred evidence = %+v", transferred)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAnalyzeRequirementsRetainsLeftHeavyMissingConditions(t *testing.T) {
|
||||
compiled := compileRequirementTemplate(t, "nested", `{{if eq (eq (eq .a .b) .c) .d}}{{input "yes"}}{{else}}{{input "no"}}{{end}}`)
|
||||
result, err := AnalyzeRequirements(context.Background(), &domain.PromptDefinition{}, RequirementSnapshot{Templates: CompiledTemplates{Messages: []*template.Template{compiled}}}, nil, false)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if result.Complete || len(result.Variables) != 4 || len(result.Inputs) != 2 {
|
||||
t.Fatalf("requirements = %+v", result)
|
||||
}
|
||||
for i, name := range []string{"a", "b", "c", "d"} {
|
||||
if result.Variables[i].Name != name {
|
||||
t.Fatalf("variables = %+v", result.Variables)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestAnalyzeRequirementsRetainsInactiveEntriesAndPromotesActiveUses(t *testing.T) {
|
||||
description := "declared for a reason"
|
||||
definition := &domain.PromptDefinition{Templates: []domain.PromptMessageTemplate{{
|
||||
|
||||
Reference in New Issue
Block a user