30 lines
1.6 KiB
Go
30 lines
1.6 KiB
Go
package research_runtime_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"git.cin.su/m/Assistant/contracts/epistemics"
|
|
"git.cin.su/m/Assistant/modules/epistemics/application"
|
|
)
|
|
|
|
type store struct{ saved []epistemics.TruthBundle }
|
|
|
|
func (s *store) SaveTruthBundle(_ context.Context, value epistemics.TruthBundle, _ int64) error {
|
|
s.saved = append(s.saved, value)
|
|
return nil
|
|
}
|
|
|
|
func TestEvaluateAndPersistStoresExactCandidateChain(t *testing.T) {
|
|
candidate := epistemics.ResearchCandidate{
|
|
PropositionKey: "p1", Statement: "fact", Source: epistemics.Source{ID: "source-1", Kind: "repo", Locator: "file:///repo/doc", Title: "doc"},
|
|
Snapshot: epistemics.SourceSnapshot{ID: "snapshot-1", SourceID: "source-1", ContentDigest: "sha256:x", CapturedAtUnixMillis: 10, Freshness: epistemics.FreshnessCurrent},
|
|
Excerpt: epistemics.SourceExcerpt{ID: "excerpt-1", SnapshotID: "snapshot-1", Text: "fact", Start: 0, End: 4}, Evidence: epistemics.EvidenceObserved, Coverage: epistemics.CoverageComplete, Conflict: epistemics.ConflictNone,
|
|
}
|
|
store := &store{}
|
|
result, err := application.EvaluateAndPersist(context.Background(), epistemics.ResearchEvaluationRequest{Plan: epistemics.ResearchPlan{ID: "plan-1", Question: "q", SourceClasses: []string{"repo"}, FreshnessPolicy: "current"}, Candidates: []epistemics.ResearchCandidate{candidate}}, store, 20)
|
|
if err != nil || len(result.Findings) != 1 || len(store.saved) != 1 || store.saved[0].Excerpt.ID != candidate.Excerpt.ID || store.saved[0].Source.Locator != candidate.Source.Locator {
|
|
t.Fatalf("result=%#v saved=%#v err=%v", result, store.saved, err)
|
|
}
|
|
}
|