Added chunking logic to modules and added corresponding regression tests
This commit is contained in:
@@ -101,6 +101,56 @@ func TestRunnerModulesRunSequentially(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRunnerProposalsExecutePerChunkSection(t *testing.T) {
|
||||
cfg := config.Default()
|
||||
cfg.MaxSectionTokens = 3
|
||||
cfg.MinSectionTokens = 0
|
||||
|
||||
transcript := &schema.Transcript{Segments: []schema.Segment{
|
||||
{ID: 1, Text: "one two"},
|
||||
{ID: 2, Text: "three four"},
|
||||
{ID: 3, Text: "five six"},
|
||||
}}
|
||||
|
||||
seenSections := make([]contracts.SectionMetadata, 0)
|
||||
seenSegmentCounts := make([]int, 0)
|
||||
r := New(fakeFactory{modules: map[string]contracts.TranscriptModule{
|
||||
"m": fakeModule{key: "m", policy: proposals.ReplacementPolicyRequireUnique, proposeF: func(req contracts.ProposalRequest) ([]proposals.CorrectionProposal, error) {
|
||||
if req.Section == nil {
|
||||
t.Fatalf("expected section metadata on proposal request")
|
||||
}
|
||||
seenSections = append(seenSections, *req.Section)
|
||||
seenSegmentCounts = append(seenSegmentCounts, len(req.WorkingTranscript.Segments))
|
||||
return nil, nil
|
||||
}},
|
||||
}})
|
||||
|
||||
out, err := r.Run(context.Background(), RunInput{
|
||||
Config: &cfg,
|
||||
Transcript: transcript,
|
||||
ModuleSpecs: []contracts.ModuleRunSpec{
|
||||
{ModuleKey: "m", InstanceName: "m"},
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("Run error: %v", err)
|
||||
}
|
||||
if len(out.ModuleResults) != 1 {
|
||||
t.Fatalf("expected one module result, got %+v", out.ModuleResults)
|
||||
}
|
||||
if len(seenSections) != 3 {
|
||||
t.Fatalf("expected 3 chunked proposal calls, got %d", len(seenSections))
|
||||
}
|
||||
for i, section := range seenSections {
|
||||
if section.Index != i {
|
||||
t.Fatalf("expected section index %d, got %+v", i, section)
|
||||
}
|
||||
if seenSegmentCounts[i] != 1 {
|
||||
t.Fatalf("expected one segment per section call, got %d at index %d", seenSegmentCounts[i], i)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestRunnerSkippedRecorded(t *testing.T) {
|
||||
transcript := &schema.Transcript{Segments: []schema.Segment{{ID: 1, Speaker: "A", Start: 0, End: 1, Text: "word word"}}}
|
||||
r := New(fakeFactory{modules: map[string]contracts.TranscriptModule{
|
||||
|
||||
Reference in New Issue
Block a user